ld.elf_so core dump: NULL ehdr in _rtld_init
Thomas Klausner <[email protected]>
| Newsgroups | gmane.os.netbsd.devel.toolchain |
|---|---|
| Message-ID | <[email protected]> |
Hi! I've filed a bug report because backtrace-rs (the backtrace support in rust) has a self test that dumps core. https://github.com/rust-lang/backtrace-rs/issues/644 When asked for details, I noticed that it's actually a core dump in ld.elf_so. Core was generated by `ld.elf_so'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x000000000076c903 in _rtld_init (execname=0x7f7fffeffae0 "/usr/libexec/ld.elf_so", relocbase=<optimized out>, mapbase=0x0) at /usr/src/libexec/ld.elf_so/rtld.c:412 412 _rtld_objself.phdr = (Elf_Phdr *)((char *)mapbase + ehdr->e_phoff); (gdb) bt #0 0x000000000076c903 in _rtld_init (execname=0x7f7fffeffae0 "/usr/libexec/ld.elf_so", relocbase=<optimized out>, mapbase=0x0) at /usr/src/libexec/ld.elf_so/rtld.c:412 #1 _rtld (sp=<optimized out>, relocbase=<optimized out>) at /usr/src/libexec/ld.elf_so/rtld.c:574 #2 0x0000000000766033 in rtld_start () (gdb) p mapbase $1 = (__caddr_t) 0x0 (gdb) p ehdr $2 = (const Elf64_Ehdr *) 0x0 So the ehdr object passed to _rtld_init is NULL, which is probably just wrong. However, shouldn't this be caught and not cause a core dump? Thomas