Public bug reported: The slurmdbd segfaults on armhf.
This is from the autopkgtest logs: 613s × slurmdbd.service - Slurm DBD accounting daemon 613s Loaded: loaded (/usr/lib/systemd/system/slurmdbd.service; enabled; preset: enabled) 613s Active: failed (Result: core-dump) since Tue 2024-03-26 09:13:24 UTC; 19s ago 613s Duration: 627ms 613s Docs: man:slurmdbd(8) 613s Process: 3801 ExecStart=/usr/sbin/slurmdbd -D -s $SLURMDBD_OPTIONS (code=dumped, signal=SEGV) 613s Main PID: 3801 (code=dumped, signal=SEGV) 613s CPU: 28ms 613s 613s Mar 26 09:13:23 autopkgtest-lxd-kbbzor systemd[1]: Started slurmdbd.service - Slurm DBD accounting daemon. 613s Mar 26 09:13:23 autopkgtest-lxd-kbbzor (slurmdbd)[3801]: slurmdbd.service: Referenced but unset environment variable evaluates to an empty string: SLURMDBD_OPTIONS 613s Mar 26 09:13:23 autopkgtest-lxd-kbbzor slurmdbd[3801]: slurmdbd: error: Unable to open pidfile `/run/slurmdbd.pid': Permission denied 613s Mar 26 09:13:23 autopkgtest-lxd-kbbzor slurmdbd[3801]: slurmdbd: Not running as root. Can't drop supplementary groups 613s Mar 26 09:13:23 autopkgtest-lxd-kbbzor slurmdbd[3801]: slurmdbd: accounting_storage/as_mysql: _check_mysql_concat_is_sane: MySQL server version is: 5.5.5-10.11.7-MariaDB-2ubuntu1 613s Mar 26 09:13:23 autopkgtest-lxd-kbbzor slurmdbd[3801]: slurmdbd: error: Database settings not recommended values: innodb_buffer_pool_size innodb_lock_wait_timeout 613s Mar 26 09:13:24 autopkgtest-lxd-kbbzor systemd[1]: slurmdbd.service: Main process exited, code=dumped, status=11/SEGV 613s Mar 26 09:13:24 autopkgtest-lxd-kbbzor systemd[1]: slurmdbd.service: Failed with result 'core-dump'. 614s autopkgtest [09:13:44]: test sacct: -----------------------] 617s sacct FAIL non-zero exit status 3 Trying to run the binary in an armhf LXD container also fails: root@autopkgtest-lxd-gzeypl:/tmp/autopkgtest.VdD4R7/build.sTW/src# slurmdbd -D slurmdbd: accounting_storage/as_mysql: _check_mysql_concat_is_sane: MySQL server version is: 5.5.5-10.11.7-MariaDB-2ubuntu1 slurmdbd: error: Database settings not recommended values: innodb_buffer_pool_size innodb_lock_wait_timeout Segmentation fault The database settings error seems to not be related as they are also happening on other archtectures. Running on gdb I get the following stack trace: (gdb) bt #0 __GI_strlen () at ../sysdeps/arm/armv6t2/strlen.S:126 #1 0xf7d8927a in __printf_buffer (buf=buf@entry=0xfffee780, format=<optimized out>, ap=..., mode_flags=mode_flags@entry=2) at vfprintf-process-arg.c:435 #2 0xf7d9cd26 in __vsnprintf_internal (string=<optimized out>, maxlen=maxlen@entry=100, format=<optimized out>, args=..., args@entry=..., mode_flags=2) at vsnprintf.c:96 #3 0xf7e02bba in ___vsnprintf_chk (s=<optimized out>, maxlen=maxlen@entry=100, flag=flag@entry=2, slen=slen@entry=4294967295, format=<optimized out>, ap=...) at vsnprintf_chk.c:34 #4 0xf7f62f2a in vsnprintf (__ap=..., __fmt=0xf7c6dc4c "insert into %s (creation_time, mod_time, table_name, definition) values (%ld, %ld, '%s', '%s') on duplicate key update definition='%s', mod_time=%ld;", __n=100, __s=<optimized out>) at /usr/include/arm-linux-gnueabihf/bits/stdio2.h:68 #5 _xstrdup_vprintf (str=str@entry=0xfffee87c, fmt=fmt@entry=0xf7c6dc4c "insert into %s (creation_time, mod_time, table_name, definition) values (%ld, %ld, '%s', '%s') on duplicate key update definition='%s', mod_time=%ld;", ap=ap@entry=...) at ../../../src/common/xstring.c:799 #6 0xf7f6384c in xstrdup_printf (fmt=0xf7c6dc4c "insert into %s (creation_time, mod_time, table_name, definition) values (%ld, %ld, '%s', '%s') on duplicate key update definition='%s', mod_time=%ld;") at ../../../src/common/xstring.c:511 #7 0xf7c58ed4 in _mysql_make_table_current (ending=<optimized out>, fields=0x0, table_name=0xf7c60020 "convert_version_table", mysql_conn=0x415468) at ../../../src/database/mysql_common.c:667 #8 mysql_db_create_table (mysql_conn=mysql_conn@entry=0x415468, table_name=0xf7c60020 "convert_version_table", fields=<optimized out>, fields@entry=0xf7c5f220, ending=<optimized out>) at ../../../src/database/mysql_common.c:1190 #9 0xf7c238f6 in _as_mysql_acct_check_tables (mysql_conn=0x0) at ../../../../../src/plugins/accounting_storage/mysql/accounting_storage_mysql.c:887 #10 init () at ../../../../../src/plugins/accounting_storage/mysql/accounting_storage_mysql.c:2892 #11 0xf7eebcae in plugin_load_from_file (p=0xfffeef80, p@entry=0xfffeefb0, fq_path=<optimized out>) at ../../../src/common/plugin.c:173 #12 0xf7eebec6 in plugin_load_and_link (type_name=<optimized out>, n_syms=0, n_syms@entry=80, names=0x0, names@entry=0xf7fca01c <syms>, ptrs=0x1, ptrs@entry=0xf7fccf44 <ops>) at ../../../src/common/plugin.c:233 #13 0xf7eec038 in plugin_context_create (plugin_type=plugin_type@entry=0xf7fb392c "accounting_storage", uler_type=<optimized out>, ptrs=ptrs@entry=0xf7fccf44 <ops>, names=0xf7fca01c <syms>, names_size=names_size@entry=320) at ../../../src/common/plugin.c:364 #14 0xf7f64114 in acct_storage_g_init () at ../../../src/interfaces/accounting_storage.c:345 #15 0x00404460 in main (argc=<optimized out>, argv=0xfffef5a4) at ../../../src/slurmdbd/slurmdbd.c:167 It crashes inside strlen.S. This is the initial parameters passed to vsnprintf: (gdb) frame 7 #7 0xf7c58ed4 in _mysql_make_table_current (ending=<optimized out>, fields=0x0, table_name=0xf7c60020 "convert_version_table", mysql_conn=0x415468) at ../../../src/database/mysql_common.c:667 667 query2 = xstrdup_printf("insert into %s (creation_time, " (gdb) l 662 if (mysql_db_query(mysql_conn, query)) { 663 xfree(query); 664 return SLURM_ERROR; 665 } 666 quoted = slurm_add_slash_to_quotes(correct_query); 667 query2 = xstrdup_printf("insert into %s (creation_time, " 668 "mod_time, table_name, definition) " 669 "values (%ld, %ld, '%s', '%s') " 670 "on duplicate key update " 671 "definition='%s', mod_time=%ld;", (gdb) l 672 table_defs_table, now, now, 673 table_name, quoted, 674 quoted, now); 675 xfree(quoted); 676 debug3("query\n%s", query2); 677 if (mysql_db_query(mysql_conn, query2)) { 678 xfree(query2); 679 return SLURM_ERROR; 680 } 681 xfree(query2); The final string is partially generated: (gdb) frame 5 #5 _xstrdup_vprintf (str=str@entry=0xfffee87c, fmt=fmt@entry=0xf7c6dc4c "insert into %s (creation_time, mod_time, table_name, definition) values (%ld, %ld, '%s', '%s') on duplicate key update definition='%s', mod_time=%ld;", ap=ap@entry=...) at ../../../src/common/xstring.c:799 799 n = vsnprintf(p, size, fmt, our_ap); (gdb) p p $1 = 0x447a10 "insert into table_defs_table (creation_time, mod_time, table_name, definition) values (1711462045, " It crashes at this offset in the strlen.S code: (gdb) frame 0 Download failed: Invalid argument. Continuing without source file ./string/../sysdeps/arm/armv6t2/strlen.S. #0 __GI_strlen () at ../sysdeps/arm/armv6t2/strlen.S:126 warning: 126 ../sysdeps/arm/armv6t2/strlen.S: No such file or directory (gdb) i r pc pc 0xf7db752e 0xf7db752e <__GI_strlen+173> (gdb) disas Dump of assembler code for function __GI_strlen: ... 0xf7db7525 <+163>: ldrd r4, r5, [sp], #8 0xf7db7529 <+167>: add.w r0, r0, r2, lsr #3 0xf7db752d <+171>: bx lr 0xf7db752f <+173>: ldrd r2, r3, [r1] 0xf7db7533 <+177>: and.w r5, r4, #3 0xf7db7537 <+181>: rsb r0, r4, #0 ... It tries to load from whatever address r1 points to, but r1 seems to contain a timestamp that is supposed to be part of the final string (the timestamp seems to be 1711462045 actually): (gdb) i r r1 r1 0x6602d698 1711462040 (gdb) x 0x6602d698 0x6602d698: Cannot access memory at address 0x6602d698 ** Affects: slurm-wlm (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2059131 Title: slurmdbd segfaults on armhf To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/slurm-wlm/+bug/2059131/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs