Just for reference attached some notes how to switch to openrc and some debugging attempts.
# switch to unstable nano /etc/apt/sources.list
apt update apt dist-upgrade apt autoremove reboot nano /etc/default/grub # remove quiet # add init=/sbin/openrc-init update-grub apt install initscripts apt install tmux apt install openrc tmux # in virtual console tmux attach # in ssh for file in /etc/rc0.d/K*; do s=`basename $(readlink "$file")` ; /etc/init.d/$s stop; done reboot # just ssh works, after a little wait time - no virtual console dpkg --purge systemd systemd-sysv systemd-shim libpam-systemd sysvinit-core init openrc-shutdown -r apt install psmisc tmux valgrind openrc-dbgsym librc1-dbgsym devscripts dpkg-dev mc quilt apt build-dep openrc mkdir openrc/orig -p cd openrc/orig apt source openrc cd ../.. mkdir libc6/orig -p cd libc6/orig apt source libc6 cd ../.. gdb -q --args rc-status set height 0 set width 0 set pagination off directory /root/openrc/orig/openrc-0.38/src/librc run ------- ... Dynamic Runlevel: hotplugged corrupted double-linked list Program received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 51 ../sysdeps/unix/sysv/linux/raise.c: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 0x00007ffff7bb42f1 in __GI_abort () at abort.c:79 #2 0x00007ffff7bf5867 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff7cff273 "%s\n") at ../sysdeps/posix/libc_fatal.c:181 #3 0x00007ffff7bfbe0a in malloc_printerr (str=str@entry=0x7ffff7cfd3d6 "corrupted double-linked list") at malloc.c:5350 #4 0x00007ffff7bfc024 in malloc_consolidate (av=av@entry=0x7ffff7d34c40 <main_arena>) at malloc.c:4456 #5 0x00007ffff7bfedad in _int_malloc (av=av@entry=0x7ffff7d34c40 <main_arena>, bytes=bytes@entry=32816) at malloc.c:3703 #6 0x00007ffff7c0064c in __GI___libc_malloc (bytes=32816) at malloc.c:3057 #7 0x00007ffff7c3d743 in __alloc_dir (fd=3, close_fd=<optimized out>, flags=<optimized out>, statp=<optimized out>) at ../sysdeps/posix/opendir.c:216 #8 0x00007ffff7c3d85d in opendir_tail (fd=3) at ../sysdeps/posix/opendir.c:136 #9 0x00007ffff7d62aa9 in ?? () from /lib/x86_64-linux-gnu/librc.so.1 #10 0x00007ffff7d6497d in rc_services_in_state () from /lib/x86_64-linux-gnu/librc.so.1 #11 0x0000555555557b8b in ?? () #12 0x00007ffff7b9fb17 in __libc_start_main (main=0x5555555575c0, argc=1, argv=0x7fffffffed18, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffed08) at ../csu/libc-start.c:310 #13 0x0000555555557efa in ?? () ------- Dynamic Runlevel: hotplugged corrupted double-linked list Program received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 51 ../sysdeps/unix/sysv/linux/raise.c: Datei oder Verzeichnis nicht gefunden. (gdb) set height 0 (gdb) set width 0 (gdb) set pagination off (gdb) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 0x00007ffff7bb42f1 in __GI_abort () at abort.c:79 #2 0x00007ffff7bf5867 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff7cff273 "%s\n") at ../sysdeps/posix/libc_fatal.c:181 #3 0x00007ffff7bfbe0a in malloc_printerr (str=str@entry=0x7ffff7cfd3d6 "corrupted double-linked list") at malloc.c:5350 #4 0x00007ffff7bfc024 in malloc_consolidate (av=av@entry=0x7ffff7d34c40 <main_arena>) at malloc.c:4456 #5 0x00007ffff7bfedad in _int_malloc (av=av@entry=0x7ffff7d34c40 <main_arena>, bytes=bytes@entry=32816) at malloc.c:3703 #6 0x00007ffff7c0064c in __GI___libc_malloc (bytes=32816) at malloc.c:3057 #7 0x00007ffff7c3d743 in __alloc_dir (fd=3, close_fd=<optimized out>, flags=<optimized out>, statp=<optimized out>) at ../sysdeps/posix/opendir.c:216 #8 0x00007ffff7c3d85d in opendir_tail (fd=3) at ../sysdeps/posix/opendir.c:136 #9 0x00007ffff7c3d910 in __opendir (name=name@entry=0x7fffffffdba0 "/run/openrc/hotplugged") at ../sysdeps/posix/opendir.c:190 #10 0x00007ffff7d62aa9 in ls_dir (dir=dir@entry=0x7fffffffdba0 "/run/openrc/hotplugged", options=options@entry=1) at librc.c:71 #11 0x00007ffff7d6497d in __RC_rc_services_in_state (state=<optimized out>) at librc.c:1006 #12 0x0000555555557b8b in main (argc=<optimized out>, argv=<optimized out>) at rc-status.c:353 ------- root@debian:~# valgrind rc-status ==2542== Memcheck, a memory error detector ==2542== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==2542== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info ==2542== Command: rc-status ==2542== Runlevel: default ==2542== Conditional jump or move depends on uninitialised value(s) ==2542== at 0x10C416: print_service (rc-status.c:160) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== ==2542== Conditional jump or move depends on uninitialised value(s) ==2542== at 0x4B2597C: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x10C141: vsnprintf (stdio2.h:77) ==2542== by 0x10C141: xasprintf (helpers.h:164) ==2542== by 0x10C42C: print_service (rc-status.c:161) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== ==2542== Use of uninitialised value of size 8 ==2542== at 0x48389E2: __strlen_sse2 (vg_replace_strmem.c:460) ==2542== by 0x4B2746B: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x10C141: vsnprintf (stdio2.h:77) ==2542== by 0x10C141: xasprintf (helpers.h:164) ==2542== by 0x10C42C: print_service (rc-status.c:161) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== ==2542== Use of uninitialised value of size 8 ==2542== at 0x48389F4: __strlen_sse2 (vg_replace_strmem.c:460) ==2542== by 0x4B2746B: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x10C141: vsnprintf (stdio2.h:77) ==2542== by 0x10C141: xasprintf (helpers.h:164) ==2542== by 0x10C42C: print_service (rc-status.c:161) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== ==2542== Use of uninitialised value of size 8 ==2542== at 0x4B53A88: _IO_default_xsputn (genops.c:412) ==2542== by 0x4B26C84: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x10C141: vsnprintf (stdio2.h:77) ==2542== by 0x10C141: xasprintf (helpers.h:164) ==2542== by 0x10C42C: print_service (rc-status.c:161) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== ==2542== Use of uninitialised value of size 8 ==2542== at 0x4B53A96: _IO_default_xsputn (genops.c:411) ==2542== by 0x4B26C84: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x10C141: vsnprintf (stdio2.h:77) ==2542== by 0x10C141: xasprintf (helpers.h:164) ==2542== by 0x10C42C: print_service (rc-status.c:161) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== ==2542== Conditional jump or move depends on uninitialised value(s) ==2542== at 0x48369A1: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== console-setup.sh [ started default ] ==2542== Invalid read of size 1 ==2542== at 0x48389E2: __strlen_sse2 (vg_replace_strmem.c:460) ==2542== by 0x4B2746B: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x4BDDA14: __snprintf_chk (snprintf_chk.c:34) ==2542== by 0x4AA4CE8: snprintf (stdio2.h:64) ==2542== by 0x4AA4CE8: rc_service_in_runlevel (librc.c:688) ==2542== by 0x10C6EF: print_services (rc-status.c:214) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x48389F4: __strlen_sse2 (vg_replace_strmem.c:460) ==2542== by 0x4B2746B: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x4BDDA14: __snprintf_chk (snprintf_chk.c:34) ==2542== by 0x4AA4CE8: snprintf (stdio2.h:64) ==2542== by 0x4AA4CE8: rc_service_in_runlevel (librc.c:688) ==2542== by 0x10C6EF: print_services (rc-status.c:214) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Address 0x4f36b51 is 1 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4B53A88: _IO_default_xsputn (genops.c:412) ==2542== by 0x4B26C84: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x4BDDA14: __snprintf_chk (snprintf_chk.c:34) ==2542== by 0x4AA4CE8: snprintf (stdio2.h:64) ==2542== by 0x4AA4CE8: rc_service_in_runlevel (librc.c:688) ==2542== by 0x10C6EF: print_services (rc-status.c:214) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4B53A96: _IO_default_xsputn (genops.c:411) ==2542== by 0x4B26C84: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x4BDDA14: __snprintf_chk (snprintf_chk.c:34) ==2542== by 0x4AA4CE8: snprintf (stdio2.h:64) ==2542== by 0x4AA4CE8: rc_service_in_runlevel (librc.c:688) ==2542== by 0x10C6EF: print_services (rc-status.c:214) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Address 0x4f36b52 is 2 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x48389E2: __strlen_sse2 (vg_replace_strmem.c:460) ==2542== by 0x4B2746B: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x10C141: vsnprintf (stdio2.h:77) ==2542== by 0x10C141: xasprintf (helpers.h:164) ==2542== by 0x10C42C: print_service (rc-status.c:161) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x48389F4: __strlen_sse2 (vg_replace_strmem.c:460) ==2542== by 0x4B2746B: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x10C141: vsnprintf (stdio2.h:77) ==2542== by 0x10C141: xasprintf (helpers.h:164) ==2542== by 0x10C42C: print_service (rc-status.c:161) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Address 0x4f36b51 is 1 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4B53A88: _IO_default_xsputn (genops.c:412) ==2542== by 0x4B26C84: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x10C141: vsnprintf (stdio2.h:77) ==2542== by 0x10C141: xasprintf (helpers.h:164) ==2542== by 0x10C42C: print_service (rc-status.c:161) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4B53A96: _IO_default_xsputn (genops.c:411) ==2542== by 0x4B26C84: vfprintf (vfprintf.c:1643) ==2542== by 0x4BDDAE8: __vsnprintf_chk (vsnprintf_chk.c:63) ==2542== by 0x10C141: vsnprintf (stdio2.h:77) ==2542== by 0x10C141: xasprintf (helpers.h:164) ==2542== by 0x10C42C: print_service (rc-status.c:161) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Address 0x4f36b52 is 2 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid free() / delete / delete[] / realloc() ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== rsyslog [ started default ] ssh [ started default ] bootlogs [ started default ] cron [ started default ] dbus [ started default ] irqbalance [ started default ] motd [ started default ] rmnologin [ started default ] rc.local [ started default ] ==2542== Invalid read of size 1 ==2542== at 0x48389E2: __strlen_sse2 (vg_replace_strmem.c:460) ==2542== by 0x4B5DEED: strdup (strdup.c:41) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x4AA4561: rc_runlevel_stacks (librc.c:521) ==2542== by 0x10BAB3: print_stacked_services (rc-status.c:226) ==2542== by 0x10BAB3: main (rc-status.c:343) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x48389F4: __strlen_sse2 (vg_replace_strmem.c:460) ==2542== by 0x4B5DEED: strdup (strdup.c:41) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x4AA4561: rc_runlevel_stacks (librc.c:521) ==2542== by 0x10BAB3: print_stacked_services (rc-status.c:226) ==2542== by 0x10BAB3: main (rc-status.c:343) ==2542== Address 0x4f36b51 is 1 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 8 ==2542== at 0x4839E10: memcpy@GLIBC_2.2.5 (vg_replace_strmem.c:1021) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x4AA4561: rc_runlevel_stacks (librc.c:521) ==2542== by 0x10BAB3: print_stacked_services (rc-status.c:226) ==2542== by 0x10BAB3: main (rc-status.c:343) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4AA4297: rc_runlevel_exists (librc.c:483) ==2542== by 0x4AA4311: ??? (librc.c:376) ==2542== by 0x4AA456F: rc_runlevel_stacks (librc.c:522) ==2542== by 0x10BAB3: print_stacked_services (rc-status.c:226) ==2542== by 0x10BAB3: main (rc-status.c:343) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4AA42B2: rc_runlevel_exists (librc.c:483) ==2542== by 0x4AA4311: ??? (librc.c:376) ==2542== by 0x4AA456F: rc_runlevel_stacks (librc.c:522) ==2542== by 0x10BAB3: print_stacked_services (rc-status.c:226) ==2542== by 0x10BAB3: main (rc-status.c:343) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x48389E2: __strlen_sse2 (vg_replace_strmem.c:460) ==2542== by 0x4B5DEED: strdup (strdup.c:41) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x4AA4342: ??? (librc.c:386) ==2542== by 0x4AA456F: rc_runlevel_stacks (librc.c:522) ==2542== by 0x10BAB3: print_stacked_services (rc-status.c:226) ==2542== by 0x10BAB3: main (rc-status.c:343) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x48389F4: __strlen_sse2 (vg_replace_strmem.c:460) ==2542== by 0x4B5DEED: strdup (strdup.c:41) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x4AA4342: ??? (librc.c:386) ==2542== by 0x4AA456F: rc_runlevel_stacks (librc.c:522) ==2542== by 0x10BAB3: print_stacked_services (rc-status.c:226) ==2542== by 0x10BAB3: main (rc-status.c:343) ==2542== Address 0x4f36b51 is 1 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 8 ==2542== at 0x4839E10: memcpy@GLIBC_2.2.5 (vg_replace_strmem.c:1021) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x4AA4342: ??? (librc.c:386) ==2542== by 0x4AA456F: rc_runlevel_stacks (librc.c:522) ==2542== by 0x10BAB3: print_stacked_services (rc-status.c:226) ==2542== by 0x10BAB3: main (rc-status.c:343) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4B66960: __strcmp_sse2_unaligned (strcmp-sse2-unaligned.S:24) ==2542== by 0x4AAC2A3: rc_stringlist_find (librc-stringlist.c:81) ==2542== by 0x10BADF: print_stacked_services (rc-status.c:228) ==2542== by 0x10BADF: main (rc-status.c:343) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4839A74: strcmp (vg_replace_strmem.c:846) ==2542== by 0x4AAC2A3: rc_stringlist_find (librc-stringlist.c:81) ==2542== by 0x10BADF: print_stacked_services (rc-status.c:228) ==2542== by 0x10BADF: main (rc-status.c:343) ==2542== Address 0x4f36b51 is 1 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== Dynamic Runlevel: hotplugged ==2542== Invalid read of size 1 ==2542== at 0x4AA5667: rc_services_in_runlevel (librc.c:965) ==2542== by 0x4AA578D: rc_services_in_runlevel_stacked (librc.c:981) ==2542== by 0x10BC0F: main (rc-status.c:371) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 8 ==2542== at 0x4839E10: memcpy@GLIBC_2.2.5 (vg_replace_strmem.c:1021) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x4AA4561: rc_runlevel_stacks (librc.c:521) ==2542== by 0x4AA5798: rc_services_in_runlevel_stacked (librc.c:982) ==2542== by 0x10BC0F: main (rc-status.c:371) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4AA4297: rc_runlevel_exists (librc.c:483) ==2542== by 0x4AA4311: ??? (librc.c:376) ==2542== by 0x4AA456F: rc_runlevel_stacks (librc.c:522) ==2542== by 0x4AA5798: rc_services_in_runlevel_stacked (librc.c:982) ==2542== by 0x10BC0F: main (rc-status.c:371) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4AA42B2: rc_runlevel_exists (librc.c:483) ==2542== by 0x4AA4311: ??? (librc.c:376) ==2542== by 0x4AA456F: rc_runlevel_stacks (librc.c:522) ==2542== by 0x4AA5798: rc_services_in_runlevel_stacked (librc.c:982) ==2542== by 0x10BC0F: main (rc-status.c:371) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4B66960: __strcmp_sse2_unaligned (strcmp-sse2-unaligned.S:24) ==2542== by 0x4AA7772: ??? (librc-depend.c:351) ==2542== by 0x4AA81FD: ??? (librc-depend.c:448) ==2542== by 0x4AA841E: ??? (librc-depend.c:434) ==2542== by 0x4AA841E: ??? (librc-depend.c:434) ==2542== by 0x4AA8A70: rc_deptree_depends (librc-depend.c:512) ==2542== by 0x10BDC5: main (rc-status.c:394) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== Invalid read of size 1 ==2542== at 0x4B66960: __strcmp_sse2_unaligned (strcmp-sse2-unaligned.S:24) ==2542== by 0x4AA7772: ??? (librc-depend.c:351) ==2542== by 0x4AA81FD: ??? (librc-depend.c:448) ==2542== by 0x4AA8A70: rc_deptree_depends (librc-depend.c:512) ==2542== by 0x10BDC5: main (rc-status.c:394) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== Dynamic Runlevel: needed/wanted ==2542== Conditional jump or move depends on uninitialised value(s) ==2542== at 0x10C416: print_service (rc-status.c:160) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BE2C: main (rc-status.c:409) ==2542== ==2542== Conditional jump or move depends on uninitialised value(s) ==2542== at 0x48369A1: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BE2C: main (rc-status.c:409) ==2542== ==2542== Invalid free() / delete / delete[] / realloc() ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BE2C: main (rc-status.c:409) ==2542== Address 0x572e250 is 0 bytes inside a block of size 4,096 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C6B9: print_services (rc-status.c:208) ==2542== by 0x10BE2C: main (rc-status.c:409) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4AA35E8: ??? (helpers.h:65) ==2542== by 0x4AA419E: rc_runlevel_get (librc.c:445) ==2542== by 0x10C7D4: print_services (rc-status.c:205) ==2542== by 0x10BE2C: main (rc-status.c:409) ==2542== umountroot [ started default ] umountfs [ started default ] umountnfs.sh [ started default ] Dynamic Runlevel: manual ==2542== Invalid free() / delete / delete[] / realloc() ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x4AAC533: rc_stringlist_free (librc-stringlist.c:145) ==2542== by 0x10B8C4: main (rc-status.c:422) ==2542== Address 0x4f36b50 is 0 bytes inside a block of size 8 free'd ==2542== at 0x48369EB: free (vg_replace_malloc.c:530) ==2542== by 0x10C439: print_service (rc-status.c:162) ==2542== by 0x10C6FB: print_services (rc-status.c:215) ==2542== by 0x10BAAB: main (rc-status.c:342) ==2542== Block was alloc'd at ==2542== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==2542== by 0x4B5DEF9: strdup (strdup.c:42) ==2542== by 0x4AAC133: xstrdup (helpers.h:103) ==2542== by 0x4AAC133: rc_stringlist_add (librc-stringlist.c:35) ==2542== by 0x10BE69: main (rc-status.c:333) ==2542== ==2542== ==2542== HEAP SUMMARY: ==2542== in use at exit: 141 bytes in 9 blocks ==2542== total heap usage: 4,238 allocs, 4,242 frees, 11,309,658 bytes allocated ==2542== ==2542== LEAK SUMMARY: ==2542== definitely lost: 48 bytes in 3 blocks ==2542== indirectly lost: 93 bytes in 6 blocks ==2542== possibly lost: 0 bytes in 0 blocks ==2542== still reachable: 0 bytes in 0 blocks ==2542== suppressed: 0 bytes in 0 blocks ==2542== Rerun with --leak-check=full to see details of leaked memory ==2542== ==2542== For counts of detected and suppressed errors, rerun with: -v ==2542== Use --track-origins=yes to see where uninitialised values come from ==2542== ERROR SUMMARY: 8609 errors from 36 contexts (suppressed: 0 from 0) root@debian:~# gdb -q --args rc-status Reading symbols from rc-status...Reading symbols from /usr/lib/debug/.build-id/a7/8a9823e572bf06eaa670133aa2af65f028329a.debug...done. done. (gdb) run Starting program: /bin/rc-status [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Runlevel: default console-setup.sh [ started default ] Stacked Runlevel: Stacked Runlevel: shutdown Stacked Runlevel: nonetwork Stacked Runlevel: recovery killprocs [ stopped ] bootlogs [ started recovery ] Stacked Runlevel: default console-setup.sh [ started default ] Stacked Runlevel: sysinit hostname.sh [ started sysinit ] Stacked Runlevel: off umountroot [ started off ] Stacked Runlevel: boot Dynamic Runlevel: hotplugged corrupted double-linked list Program received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 51 ../sysdeps/unix/sysv/linux/raise.c: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 0x00007ffff7bb42f1 in __GI_abort () at abort.c:79 #2 0x00007ffff7bf5867 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff7cff273 "%s\n") at ../sysdeps/posix/libc_fatal.c:181 #3 0x00007ffff7bfbe0a in malloc_printerr (str=str@entry=0x7ffff7cfd3d6 "corrupted double-linked list") at malloc.c:5350 #4 0x00007ffff7bfc024 in malloc_consolidate (av=av@entry=0x7ffff7d34c40 <main_arena>) at malloc.c:4456 #5 0x00007ffff7bfedad in _int_malloc (av=av@entry=0x7ffff7d34c40 <main_arena>, bytes=bytes@entry=32816) at malloc.c:3703 #6 0x00007ffff7c0064c in __GI___libc_malloc (bytes=32816) at malloc.c:3057 #7 0x00007ffff7c3d743 in __alloc_dir (fd=3, close_fd=<optimized out>, flags=<optimized out>, statp=<optimized out>) at ../sysdeps/posix/opendir.c:216 #8 0x00007ffff7c3d85d in opendir_tail (fd=3) at ../sysdeps/posix/opendir.c:136 #9 0x00007ffff7c3d910 in __opendir (name=name@entry=0x7fffffffdba0 "/run/openrc/hotplugged") at ../sysdeps/posix/opendir.c:190 #10 0x00007ffff7d62aa9 in ls_dir (dir=dir@entry=0x7fffffffdba0 "/run/openrc/hotplugged", options=options@entry=1) at librc.c:71 #11 0x00007ffff7d6497d in __RC_rc_services_in_state (state=<optimized out>) at librc.c:1006 #12 0x0000555555557b8b in main (argc=<optimized out>, argv=<optimized out>) at rc-status.c:353 (gdb) up ... (gdb) #10 0x00007ffff7d62aa9 in ls_dir (dir=dir@entry=0x7fffffffdba0 "/run/openrc/hotplugged", options=options@entry=1) at librc.c:71 warning: Source file is more recent than executable. 71 if ((dp = opendir(dir)) == NULL) (gdb) list librc.c:56,72 56 57 #define LS_INITD 0x01 58 #define LS_DIR 0x02 59 static RC_STRINGLIST * 60 ls_dir(const char *dir, int options) 61 { 62 DIR *dp; 63 struct dirent *d; 64 RC_STRINGLIST *list = NULL; 65 struct stat buf; 66 size_t l; 67 char file[PATH_MAX]; 68 int r; 69 70 list = rc_stringlist_new(); 71 if ((dp = opendir(dir)) == NULL) 72 return list; (gdb) b ls_dir Breakpoint 1 at 0x7ffff7d62a70: file librc.c, line 61. (gdb) kill Kill the program being debugged? (y or n) y (gdb) run Starting program: /bin/rc-status [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". * Caching service dependencies ... [ ok ] Runlevel: default Breakpoint 1, ls_dir (dir=dir@entry=0x7fffffffdbc0 "/etc/runlevels/default", options=options@entry=1) at librc.c:61 warning: Source file is more recent than executable. 61 { (gdb) b free Breakpoint 3 at 0x7ffff7bfec50: free. (2 locations) (gdb) cont root@debian:~# gdb -q --args rc-status Reading symbols from rc-status...Reading symbols from /usr/lib/debug/.build-id/a7/8a9823e572bf06eaa670133aa2af65f028329a.debug...done. done. (gdb) set height 0 (gdb) set width 0 (gdb) set pagination off (gdb) directory /root/openrc/orig/openrc-0.38/src/librc Source directories searched: /root/openrc/orig/openrc-0.38/src/librc:$cdir:$cwd (gdb) directory /root/openrc/orig/openrc-0.38/src/rc Source directories searched: /root/openrc/orig/openrc-0.38/src/rc:/root/openrc/orig/openrc-0.38/src/librc:$cdir:$cwd (gdb) b main Breakpoint 1 at 0x35c0: file rc-status.c, line 246. (gdb) run Starting program: /bin/rc-status [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Breakpoint 1, main (argc=1, argv=0x7fffffffed18) at rc-status.c:246 246 applet = basename_c(argv[0]); (gdb) b free Breakpoint 2 at 0x7ffff7bfec50: free. (2 locations) (gdb) command Type commands for breakpoint(s) 2, one per line. End with a line saying just "end". >silent >print mem >bt >cont >end (gdb) cont gdb -q --args rc-status set height 0 set width 0 set pagination off directory /root/openrc/orig/openrc-0.38/src/librc directory /root/openrc/orig/openrc-0.38/src/rc b main run --------- valgrind --vgdb=yes --vgdb-error=0 rc-status gdb /bin/rc-status target remote | vgdb set height 0 set width 0 set pagination off directory /root/openrc/orig/openrc-0.38/src/librc directory /root/openrc/orig/openrc-0.38/src/rc ... ==16052== Continuing ... ==16052== Invalid free() / delete / delete[] / realloc() ==16052== at 0x48369EB: free (vg_replace_malloc.c:530) ==16052== by 0x10C439: print_service (rc-status.c:162) ==16052== by 0x10C6FB: print_services (rc-status.c:215) ==16052== by 0x10BAAB: main (rc-status.c:342) ==16052== Address 0x4f38b50 is 0 bytes inside a block of size 8 free'd ==16052== at 0x48369EB: free (vg_replace_malloc.c:530) ==16052== by 0x10C439: print_service (rc-status.c:162) ==16052== by 0x10C6FB: print_services (rc-status.c:215) ==16052== by 0x10BAAB: main (rc-status.c:342) ==16052== Block was alloc'd at ==16052== at 0x48357BF: malloc (vg_replace_malloc.c:299) ==16052== by 0x4B5FEF9: strdup (strdup.c:42) ==16052== by 0x4AAE133: xstrdup (helpers.h:103) ==16052== by 0x4AAE133: rc_stringlist_add (librc-stringlist.c:35) ==16052== by 0x10BE69: main (rc-status.c:333) ==16052== ==16052== (action on error) vgdb me ... (gdb) Continuing. Program received signal SIGTRAP, Trace/breakpoint trap. 0x00000000048369eb in _vgr10050ZU_VgSoSynsomalloc_free (p=0x4f38b50) at m_replacemalloc/vg_replace_malloc.c:530 530 m_replacemalloc/vg_replace_malloc.c: Datei oder Verzeichnis nicht gefunden. (gdb) bt #0 0x00000000048369eb in _vgr10050ZU_VgSoSynsomalloc_free (p=0x4f38b50) at m_replacemalloc/vg_replace_malloc.c:530 #1 0x000000000010c43a in print_service (service=<optimized out>) at rc-status.c:162 #2 0x000000000010c6fc in print_services (runlevel=0x4f38b50 "default", svcs=0x4f66550) at rc-status.c:215 #3 0x000000000010baac in main (argc=1, argv=<optimized out>) at rc-status.c:342 (gdb) list rc-status.c:126,165 126 static void 127 print_service(const char *service) 128 { 129 char *status = NULL; 130 char *uptime = NULL; 131 char *child_pid = NULL; 132 char *start_time = NULL; 133 int cols = printf(" %s", service); 134 const char *c = ecolor(ECOLOR_GOOD); 135 RC_SERVICE state = rc_service_state(service); 136 ECOLOR color = ECOLOR_BAD; 137 138 if (state & RC_SERVICE_STOPPING) 139 xasprintf(&status, "stopping "); 140 else if (state & RC_SERVICE_STARTING) { 141 xasprintf(&status, "starting "); 142 color = ECOLOR_WARN; 143 } else if (state & RC_SERVICE_INACTIVE) { 144 xasprintf(&status, "inactive "); 145 color = ECOLOR_WARN; 146 } else if (state & RC_SERVICE_STARTED) { 147 errno = 0; 148 if (rc_service_daemons_crashed(service) && errno != EACCES) 149 { 150 child_pid = rc_service_value_get(service, "child_pid"); 151 start_time = rc_service_value_get(service, "start_time"); 152 if (start_time && child_pid) 153 xasprintf(&status, " unsupervised "); 154 else 155 xasprintf(&status, " crashed "); 156 free(child_pid); 157 free(start_time); 158 } else { 159 uptime = get_uptime(service); 160 if (uptime) { 161 xasprintf(&status, " started %s", uptime); 162 free(uptime); <<<<<<<<<<<<<<< 163 } else 164 xasprintf(&status, " started "); 165 color = ECOLOR_GOOD; (gdb) list rc-status.c:77,124 77 78 static char *get_uptime(const char *service) 79 { 80 RC_SERVICE state = rc_service_state(service); 81 char *start_count; 82 time_t now; 83 char *start_time_string; 84 time_t start_time; 85 time_t time_diff; 86 time_t diff_days = (time_t) 0; 87 time_t diff_hours = (time_t) 0; 88 time_t diff_mins = (time_t) 0; 89 time_t diff_secs = (time_t) 0; 90 char *uptime; 91 92 if (state & RC_SERVICE_STARTED) { 93 start_count = rc_service_value_get(service, "start_count"); 94 start_time_string = rc_service_value_get(service, "start_time"); 95 if (start_count && start_time_string) { 96 start_time = to_time_t(start_time_string); 97 now = time(NULL); 98 time_diff = (time_t) difftime(now, start_time); 99 diff_secs = time_diff; 100 if (diff_secs > (time_t) 86400) { 101 diff_days = diff_secs / (time_t) 86400; 102 diff_secs %= diff_days * (time_t) 86400; 103 } 104 if (diff_secs > (time_t) 3600) { 105 diff_hours = diff_secs / (time_t) 3600; 106 diff_secs %= diff_hours * (time_t) 3600; 107 } 108 if (diff_secs > (time_t) 60) { 109 diff_mins = diff_secs / (time_t) 60; 110 diff_secs %= diff_mins * (time_t) 60; 111 } 112 if (diff_days > 0) 113 xasprintf(&uptime, 114 "%ld day(s) %02ld:%02ld:%02ld (%s)", 115 diff_days, diff_hours, diff_mins, diff_secs, 116 start_count); 117 else 118 xasprintf(&uptime, 119 "%02ld:%02ld:%02ld (%s)", 120 diff_hours, diff_mins, diff_secs, start_count); 121 } 122 } 123 return uptime; 124 } -------------- gdb -q --args rc-status set height 0 set width 0 set pagination off directory /root/openrc/orig/openrc-0.38/src/librc directory /root/openrc/orig/openrc-0.38/src/rc directory /root/libc6/orig/glibc-2.27/malloc b rc-status.c:123 run display uptime