Bug 2361446 - Kernel test lmbench bug/error; performance test "pass" prematurely (again?) and won't run
Summary: Kernel test lmbench bug/error; performance test "pass" prematurely (again?) a...
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel
Version: 42
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Kernel Maintainer List
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2025-04-21 13:25 UTC by itrymybest80
Modified: 2025-06-17 18:45 UTC (History)
18 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2025-06-16 20:05:43 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description itrymybest80 2025-04-21 13:25:59 UTC
I ran into what looks like a new lmbench bug while running the "performance" test as per the kernel test instructions.

I'm also able to repeat the error(s) while running on the latest rawhide kernel.

kernel-6.14.2-300.fc42.x86_64
kernel-6.14.3-300.fc42.x86_64
kernel-6.15.0-0.rc2.20250418gitfc96b232f8e7.25.fc43.x86_64

I also don't recall ever seeing this in Fedora 41 w/wo the 6.14 kernel(s) and not once with the 6.13 series while running your test.

The performance test usually ends up taking 75-90 minutes on my system, but now it ends in 3 seconds.

---

REDACTED@REDACTED:~/kernel-tests$ sudo ./runtests.sh -t performance
Test suite called with performance
lat_rpc.c:24:10: error: conflicting types for ‘client_rpc_xact_1’; have ‘char *(char *, CLIENT *)’ {aka ‘char *(char *, struct __rpc_client *)’}
   24 | char    *client_rpc_xact_1(char *argp, CLIENT *clnt);
      |          ^~~~~~~~~~~~~~~~~
In file included from lat_rpc.c:19:
bench.h:321:14: note: previous declaration of ‘client_rpc_xact_1’ with type ‘char *(void)’
  321 | extern char *client_rpc_xact_1();
      |              ^~~~~~~~~~~~~~~~~
lat_rpc.c: In function ‘main’:
lat_rpc.c:136:33: warning: implicit declaration of function ‘lmbench_usage’ [-Wimplicit-function-declaration]
  136 |                                 lmbench_usage(ac, av, usage);
      |                                 ^~~~~~~~~~~~~
lat_rpc.c: At top level:
lat_rpc.c:176:1: error: conflicting types for ‘client_rpc_xact_1’; have ‘char *(char *, CLIENT *)’ {aka ‘char *(char *, struct __rpc_client *)’}
  176 | client_rpc_xact_1(char *argp, CLIENT *clnt)
      | ^~~~~~~~~~~~~~~~~
bench.h:321:14: note: previous declaration of ‘client_rpc_xact_1’ with type ‘char *(void)’
  321 | extern char *client_rpc_xact_1();
      |              ^~~~~~~~~~~~~~~~~
lat_rpc.c: In function ‘rpc_xact_1’:
lat_rpc.c:193:1: warning: old-style function definition [-Wold-style-definition]
  193 | rpc_xact_1(msg, transp)
      | ^~~~~~~~~~
lat_rpc.c:196:1: error: number of arguments doesn’t match prototype
  196 | {
      | ^
bench.h:320:14: error: prototype declaration
  320 | extern char *rpc_xact_1();
      |              ^~~~~~~~~~
lat_rpc.c: In function ‘server_main’:
lat_rpc.c:218:57: warning: passing argument 4 of ‘svc_register’ from incompatible pointer type [-Wincompatible-pointer-types]
  218 |         if (!svc_register(transp, XACT_PROG, XACT_VERS, xact_prog_1, IPPROTO_UDP)) {
      |                                                         ^~~~~~~~~~~
      |                                                         |
      |                                                         void (*)(void)
In file included from /usr/include/tirpc/rpc/svc.h:463,
                 from /usr/include/tirpc/rpc/rpc.h:63,
                 from bench.h:38:
/usr/include/tirpc/rpc/svc_soc.h:70:21: note: expected ‘void (*)(struct svc_req *, SVCXPRT *)’ {aka ‘void (*)(struct svc_req *, struct __rpc_svcxprt *)’} but argument is of type ‘void (*)(void)’
   70 |                     void (*)(struct svc_req *, SVCXPRT *), int);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lat_rpc.c:202:13: note: ‘xact_prog_1’ declared here
  202 | static void xact_prog_1();
      |             ^~~~~~~~~~~
lat_rpc.c:228:57: warning: passing argument 4 of ‘svc_register’ from incompatible pointer type [-Wincompatible-pointer-types]
  228 |         if (!svc_register(transp, XACT_PROG, XACT_VERS, xact_prog_1, IPPROTO_TCP)) {
      |                                                         ^~~~~~~~~~~
      |                                                         |
      |                                                         void (*)(void)
/usr/include/tirpc/rpc/svc_soc.h:70:21: note: expected ‘void (*)(struct svc_req *, SVCXPRT *)’ {aka ‘void (*)(struct svc_req *, struct __rpc_svcxprt *)’} but argument is of type ‘void (*)(void)’
   70 |                     void (*)(struct svc_req *, SVCXPRT *), int);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lat_rpc.c:202:13: note: ‘xact_prog_1’ declared here
  202 | static void xact_prog_1();
      |             ^~~~~~~~~~~
lat_rpc.c: In function ‘xact_prog_1’:
lat_rpc.c:240:1: warning: old-style function definition [-Wold-style-definition]
  240 | xact_prog_1(rqstp, transp)
      | ^~~~~~~~~~~
lat_rpc.c:257:30: warning: assignment to ‘bool_t (*)(void)’ {aka ‘int (*)(void)’} from incompatible pointer type ‘bool_t (*)(XDR *, char *)’ {aka ‘int (*)(struct __rpc_xdr *, char *)’} [-Wincompatible-pointer-types]
  257 |                 xdr_argument = xdr_char;
      |                              ^
In file included from /usr/include/tirpc/rpc/rpc.h:43:
/usr/include/tirpc/rpc/xdr.h:316:17: note: ‘xdr_char’ declared here
  316 | extern bool_t   xdr_char(XDR *, char *);
      |                 ^~~~~~~~
lat_rpc.c:258:28: warning: assignment to ‘bool_t (*)(void)’ {aka ‘int (*)(void)’} from incompatible pointer type ‘bool_t (*)(XDR *, char *)’ {aka ‘int (*)(struct __rpc_xdr *, char *)’} [-Wincompatible-pointer-types]
  258 |                 xdr_result = xdr_char;
      |                            ^
/usr/include/tirpc/rpc/xdr.h:316:17: note: ‘xdr_char’ declared here
  316 | extern bool_t   xdr_char(XDR *, char *);
      |                 ^~~~~~~~
lat_rpc.c:276:19: error: too many arguments to function ‘local’; expected 0, have 2
  276 |         result = (*local)(&argument, rqstp);
      |                  ~^~~~~~~ ~~~~~~~~~
gmake[2]: *** [Makefile:397: ../bin/x86_64-linux-gnu/lat_rpc] Error 1
make[1]: *** [Makefile:114: lmbench] Error 2
make: *** [Makefile:20: build] Error 2
lat_rpc.c:24:10: error: conflicting types for ‘client_rpc_xact_1’; have ‘char *(char *, CLIENT *)’ {aka ‘char *(char *, struct __rpc_client *)’}
   24 | char    *client_rpc_xact_1(char *argp, CLIENT *clnt);
      |          ^~~~~~~~~~~~~~~~~
In file included from lat_rpc.c:19:
bench.h:321:14: note: previous declaration of ‘client_rpc_xact_1’ with type ‘char *(void)’
  321 | extern char *client_rpc_xact_1();
      |              ^~~~~~~~~~~~~~~~~
lat_rpc.c: In function ‘main’:
lat_rpc.c:136:33: warning: implicit declaration of function ‘lmbench_usage’ [-Wimplicit-function-declaration]
  136 |                                 lmbench_usage(ac, av, usage);
      |                                 ^~~~~~~~~~~~~
lat_rpc.c: At top level:
lat_rpc.c:176:1: error: conflicting types for ‘client_rpc_xact_1’; have ‘char *(char *, CLIENT *)’ {aka ‘char *(char *, struct __rpc_client *)’}
  176 | client_rpc_xact_1(char *argp, CLIENT *clnt)
      | ^~~~~~~~~~~~~~~~~
bench.h:321:14: note: previous declaration of ‘client_rpc_xact_1’ with type ‘char *(void)’
  321 | extern char *client_rpc_xact_1();
      |              ^~~~~~~~~~~~~~~~~
lat_rpc.c: In function ‘rpc_xact_1’:
lat_rpc.c:193:1: warning: old-style function definition [-Wold-style-definition]
  193 | rpc_xact_1(msg, transp)
      | ^~~~~~~~~~
lat_rpc.c:196:1: error: number of arguments doesn’t match prototype
  196 | {
      | ^
bench.h:320:14: error: prototype declaration
  320 | extern char *rpc_xact_1();
      |              ^~~~~~~~~~
lat_rpc.c: In function ‘server_main’:
lat_rpc.c:218:57: warning: passing argument 4 of ‘svc_register’ from incompatible pointer type [-Wincompatible-pointer-types]
  218 |         if (!svc_register(transp, XACT_PROG, XACT_VERS, xact_prog_1, IPPROTO_UDP)) {
      |                                                         ^~~~~~~~~~~
      |                                                         |
      |                                                         void (*)(void)
In file included from /usr/include/tirpc/rpc/svc.h:463,
                 from /usr/include/tirpc/rpc/rpc.h:63,
                 from bench.h:38:
/usr/include/tirpc/rpc/svc_soc.h:70:21: note: expected ‘void (*)(struct svc_req *, SVCXPRT *)’ {aka ‘void (*)(struct svc_req *, struct __rpc_svcxprt *)’} but argument is of type ‘void (*)(void)’
   70 |                     void (*)(struct svc_req *, SVCXPRT *), int);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lat_rpc.c:202:13: note: ‘xact_prog_1’ declared here
  202 | static void xact_prog_1();
      |             ^~~~~~~~~~~
lat_rpc.c:228:57: warning: passing argument 4 of ‘svc_register’ from incompatible pointer type [-Wincompatible-pointer-types]
  228 |         if (!svc_register(transp, XACT_PROG, XACT_VERS, xact_prog_1, IPPROTO_TCP)) {
      |                                                         ^~~~~~~~~~~
      |                                                         |
      |                                                         void (*)(void)
/usr/include/tirpc/rpc/svc_soc.h:70:21: note: expected ‘void (*)(struct svc_req *, SVCXPRT *)’ {aka ‘void (*)(struct svc_req *, struct __rpc_svcxprt *)’} but argument is of type ‘void (*)(void)’
   70 |                     void (*)(struct svc_req *, SVCXPRT *), int);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lat_rpc.c:202:13: note: ‘xact_prog_1’ declared here
  202 | static void xact_prog_1();
      |             ^~~~~~~~~~~
lat_rpc.c: In function ‘xact_prog_1’:
lat_rpc.c:240:1: warning: old-style function definition [-Wold-style-definition]
  240 | xact_prog_1(rqstp, transp)
      | ^~~~~~~~~~~
lat_rpc.c:257:30: warning: assignment to ‘bool_t (*)(void)’ {aka ‘int (*)(void)’} from incompatible pointer type ‘bool_t (*)(XDR *, char *)’ {aka ‘int (*)(struct __rpc_xdr *, char *)’} [-Wincompatible-pointer-types]
  257 |                 xdr_argument = xdr_char;
      |                              ^
In file included from /usr/include/tirpc/rpc/rpc.h:43:
/usr/include/tirpc/rpc/xdr.h:316:17: note: ‘xdr_char’ declared here
  316 | extern bool_t   xdr_char(XDR *, char *);
      |                 ^~~~~~~~
lat_rpc.c:258:28: warning: assignment to ‘bool_t (*)(void)’ {aka ‘int (*)(void)’} from incompatible pointer type ‘bool_t (*)(XDR *, char *)’ {aka ‘int (*)(struct __rpc_xdr *, char *)’} [-Wincompatible-pointer-types]
  258 |                 xdr_result = xdr_char;
      |                            ^
/usr/include/tirpc/rpc/xdr.h:316:17: note: ‘xdr_char’ declared here
  316 | extern bool_t   xdr_char(XDR *, char *);
      |                 ^~~~~~~~
lat_rpc.c:276:19: error: too many arguments to function ‘local’; expected 0, have 2
  276 |         result = (*local)(&argument, rqstp);
      |                  ~^~~~~~~ ~~~~~~~~~
gmake[2]: *** [Makefile:397: ../bin/x86_64-linux-gnu/lat_rpc] Error 1
make[1]: *** [Makefile:114: lmbench] Error 2
make: *** [Makefile:23: results] Error 2
./performance/lmbench3                                           PASS    

Test suite complete                                              PASS

Comment 1 goz 2025-04-21 14:40:38 UTC
Confirm that I've also been seeing these same errors when running the Performance test suite for a while now on F42, regardless of kernel version (with 6.14/6.15 anyway, don't think I've tested any 6.13 kernels recently).

Comment 2 Gerald Cox 2025-06-08 21:39:57 UTC
Confirmed.  Same problem with 6.15 kernel test day.

Comment 3 Justin M. Forbes 2025-06-16 20:05:43 UTC
This has nothing to do with kernel at all, it is a problem with the new gcc and lmbench

Comment 4 Gerald Cox 2025-06-17 17:37:16 UTC
 
(In reply to Justin M. Forbes from comment #3)
> This has nothing to do with kernel at all, it is a problem with the new gcc
> and lmbench

Fair enough, but we still need to get this fixed.  Do you know who is responsible 
for kernel test days?  Either lmbench needs to get fixed, the documentation revised
to not reference the performance tests or kernel test days discontinued if they
are no longer needed.

Thanks!

Comment 5 Justin M. Forbes 2025-06-17 17:48:53 UTC
I am, though I am also not sure who put in the documentation for running the performance tests.  I have never recommended it because performance tests are fairly useless unless conducted in a very controlled and specific manor to compare versions. Will see if I can chase down the documentation. there.

Comment 6 Gerald Cox 2025-06-17 18:45:26 UTC
Thanks for the quick reply Justin.  I also asked a question about this on discussion.  If you don't believe the performance tests are worthwhile, then yeah, probably should get that removed from the doc.


Note You need to log in before you can comment on or make changes to this bug.