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: NEW
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-11 23:26 UTC (History)
18 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
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.


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