Harry Schmalzbauer
2019-Feb-20 16:51 UTC
libcrypto.so.111 linked binaries SIGSEGV (in bhyve guest)
Hello, I'm tryint to upgrade a bhyve guest from stable/11 to stable/12. pkg(8) for example crashes with signal 11. I looked for other binaries affected by ldd /usr/sbin/* | & grep 'signal 11$' wich gives /usr/sbin/auditdistd: signal 11 /usr/sbin/bhyve: signal 11 /usr/sbin/bsnmpd: signal /usr/sbin/gssd: signal 11 /usr/sbin/hostapd: signal 11 /usr/sbin/iprop-log: signal 11 /usr/sbin/keyserv: signal 11 /usr/sbin/kstash: signal 11 /usr/sbin/ktutil: signal 11 /usr/sbin/local-unbound: signal 11 /usr/sbin/local-unbound-anchor: signal 11 /usr/sbin/local-unbound-checkconf: signal 11 /usr/sbin/local-unbound-control: signal 11 /usr/sbin/ntp-keygen: signal 11 /usr/sbin/ntpd: signal 11 /usr/sbin/ntpdate: signal 11 /usr/sbin/ntpdc: signal 11 /usr/sbin/pkg: signal 11 /usr/sbin/ppp: signal 11 /usr/sbin/sntp: signal 11 /usr/sbin/sshd: signal 11 /usr/sbin/tcpdump: signal 11 /usr/sbin/uefisign: signal 11 /usr/sbin/wpa_supplicant: signal 11 They all seem to have in common beeing linked against '/lib/libcrypto.so.111' truss /usr/sbin/auditdistd : close(3)???????????????????????????????????????? = 0 (0x0) openat(AT_FDCWD,"/lib/libcrypto.so.111",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 3 (0x3) fstat(3,{ mode=-r--r--r-- ,inode=150033332,size=3006464,blksize=4096 }) = 0 (0x0) mmap(0x0,4096,PROT_READ,MAP_PRIVATE|MAP_PREFAULT_READ,3,0x0) = 34362249216 (0x800265000) mmap(0x0,3104768,PROT_NONE,MAP_GUARD,-1,0x0)???? = 34362347520 (0x80027d000) mmap(0x80027d000,1138688,PROT_READ,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x0) = 34362347520 (0x80027d000) mmap(0x800393000,1757184,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|MAP_PREFAULT_READ,3,0x116000) = 34363486208 (0x800393000) mmap(0x800540000,196608,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_PREFAULT_READ,3,0x2c3000) = 34365243392 (0x800540000) SIGNAL 11 (SIGSEGV) code=SEGV_ACCERR trapno=12 addr=0x80056f790 process killed, signal = 11 (core dumped) I have no idea how to analyze further or what the reason could be (like mentioned, all binaries listed dump core after opening lib/libcrypto.so.111 gdb shows: Core was generated by `/usr/sbin/auditdistd'. Program terminated with signal 11, Segmentation fault. Reading symbols from /lib/libutil.so.9...Reading symbols from /usr/lib/debug//lib/libutil.so.9.debug...done. done. Loaded symbols for /lib/libutil.so.9 Reading symbols from /libexec/ld-elf.so.1...Reading symbols from /usr/lib/debug//libexec/ld-elf.so.1.debug...done. done. Loaded symbols for /libexec/ld-elf.so.1 #0? memset (dest=0x80056f790, c=0, len=<value optimized out>) ??? at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:5624 5624??????????????????? ((char *)dest)[i] = c; (gdb) bt #0? memset (dest=0x80056f790, c=0, len=<value optimized out>) ??? at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:5624 #1? 0x0000000800235b07 in map_object (fd=3, path=0x800246140 "/lib/libcrypto.so.111", ??? sb=0x7fffffffd4a8) ??? at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/map_object.c:249 #2? 0x0000000800230806 in load_object (name=0x201dba "libcrypto.so.111", fd_u=-1, ??? refobj=0x800248000, flags=<value optimized out>) ??? at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:2493 #3? 0x0000000800229972 in _rtld (sp=<value optimized out>, exit_proc=0x7fffffffea30, ??? objp=0x7fffffffea38) ??? at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:2315 #4? 0x0000000800228019 in .rtld_start () ??? at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/amd64/rtld_start.S:39 #5? 0x0000000000000000 in ?? () Current language:? auto; currently minimal Any help highly appreciated. This is with a live CD (amd64), compiled with stable/12 from today (so clang 7.01). The bhyve guest has 2GB hardwired and ran stable/11 beforehand, which compiled the live CD. bhyve host is 11.2.? But that shouldn't play a role, does it? -harry
Harry Schmalzbauer
2019-Feb-21 08:24 UTC
Strange rtld-elf failure on stable/12 [Was: libcrypto.so.111 linked binaries SIGSEGV (in bhyve guest)]
Am 20.02.2019 um 17:51 schrieb Harry Schmalzbauer:> Hello, >?> gdb shows: > Core was generated by `/usr/sbin/auditdistd'. > Program terminated with signal 11, Segmentation fault. > Reading symbols from /lib/libutil.so.9...Reading symbols from > /usr/lib/debug//lib/libutil.so.9.debug...done. > done. > Loaded symbols for /lib/libutil.so.9 > Reading symbols from /libexec/ld-elf.so.1...Reading symbols from > /usr/lib/debug//libexec/ld-elf.so.1.debug...done. > done. > Loaded symbols for /libexec/ld-elf.so.1 > #0? memset (dest=0x80056f790, c=0, len=<value optimized out>) > ??? at > /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:5624 > 5624??????????????????? ((char *)dest)[i] = c; > (gdb) bt > #0? memset (dest=0x80056f790, c=0, len=<value optimized out>) > ??? at > /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:5624 > #1? 0x0000000800235b07 in map_object (fd=3, path=0x800246140 > "/lib/libcrypto.so.111", > ??? sb=0x7fffffffd4a8) > ??? at > /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/map_object.c:249 > #2? 0x0000000800230806 in load_object (name=0x201dba > "libcrypto.so.111", fd_u=-1, > ??? refobj=0x800248000, flags=<value optimized out>) > ??? at > /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:2493 > #3? 0x0000000800229972 in _rtld (sp=<value optimized out>, > exit_proc=0x7fffffffea30, > ??? objp=0x7fffffffea38) > ??? at > /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:2315 > #4? 0x0000000800228019 in .rtld_start () > ??? at > /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/amd64/rtld_start.S:39 > #5? 0x0000000000000000 in ?? () > Current language:? auto; currently minimal > > Any help highly appreciated. > > This is with a live CD (amd64), compiled with stable/12 from today (so > clang 7.01). > The bhyve guest has 2GB hardwired and ran stable/11 beforehand, which > compiled the live CD. > bhyve host is 11.2.? But that shouldn't play a role, does it?I'm really interested what happens here. I built stable/11 in that bhyve guest and updated that guest to stable/11 from yesterday. To my surpise llvm 7.01 was also merged to stable/11.? Thank you for that great supprt! No problems with any binary in the stable/11 bhyve guest. Then I built stable/12 in that re-built stable/11 guest. As result, again all binaries linked to /lib/libcrypto.so.111 crash (signal 11) with the stable/12 iso in the same bhyve guest. Here the example from ntpq: Program terminated with signal 11, Segmentation fault. Reading symbols from /lib/libedit.so.7...Reading symbols from /usr/lib/debug//lib/libedit.so.7.debug...done. done. Loaded symbols for /lib/libedit.so.7 Reading symbols from /lib/libm.so.5...Reading symbols from /usr/lib/debug//lib/libm.so.5.debug...done. done. Loaded symbols for /lib/libm.so.5 Reading symbols from /libexec/ld-elf.so.1...Reading symbols from /usr/lib/debug//libexec/ld-elf.so.1.debug...done. done. #0? memset (dest=0x8005ef790, c=0, len=<value optimized out>) at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:5624 5624??????????????????? ((char *)dest)[i] = c; (gdb) bt #0? memset (dest=0x8005ef790, c=0, len=<value optimized out>) at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:5624 #1? 0x000000080025db07 in map_object (fd=3, path=0x80026e1a0 "/lib/libcrypto.so.111", sb=0x7fffffffd4c8) at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/map_object.c:249 #2? 0x0000000800258806 in load_object (name=0x201b40 "libcrypto.so.111", fd_u=-1, refobj=0x800270000, flags=<value optimized out>) at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:2493 #3? 0x0000000800251972 in _rtld (sp=<value optimized out>, exit_proc=0x7fffffffea50, objp=0x7fffffffea58) at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/rtld.c:2315 #4? 0x0000000800250019 in .rtld_start () at /usr/local/share/deploy-tools/RELENG_12/src/libexec/rtld-elf/amd64/rtld_start.S:39 #5? 0x0000000000000000 in ?? () So please correct me if I'm comletely wrong, but the problem here seems to be reproducably rtld-elf related. Unfortunately I don't know anything about object files and linkers and the related fundamental stuff. But maybe someone else has an idea what's going wrong here? Thanks, -Harry