Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: segfault in ld.elf_so



On Thu, 29 Jan 2026, Thomas Klausner wrote:

Looking for relro PRs, I found

https://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=57792

Could this be related?


Different issue, I think. PR 57792 is a segfault when doing ifunc relocations.
This one seems to be happening when doing the standard PLT relocations.

(gdb) br main
Breakpoint 1 at 0x6164
(gdb) r
Starting program: .../work/webkitgtk-2.50.4/tmp-introspectyh2m43hy/WebKit2WebExtension-4.1

Program received signal SIGSEGV, Segmentation fault.
_rtld_relocate_plt_object (obj=<optimized out>, rela=0x793ddd29b7d0, tp=<synthetic pointer>) at /usr/src/libexec/ld.elf_so/arch/x86_64/mdreloc.c:354
354                     *where = new_value;
(gdb) bt
#0  _rtld_relocate_plt_object (obj=<optimized out>, rela=0x793ddd29b7d0, tp=<synthetic pointer>) at /usr/src/libexec/ld.elf_so/arch/x86_64/mdreloc.c:354
#1  _rtld_bind (obj=<optimized out>, reloff=<optimized out>) at /usr/src/libexec/ld.elf_so/arch/x86_64/mdreloc.c:372
#2  0x00007f7ff7cb105d in _rtld_bind_start () from /usr/libexec/ld.elf_so
#3  0x0000000000000000 in ?? ()


Since the linker crashes way before main() is ever called, what you should do
is:

1. Uncomment the debug defines in the Makefile and set COPTS to `-Og'.

2. Run the program with the new ld.elf_so and collect the (copious) debug
   output.

3. Run `readelf -Wa' on the program and the library it is crashing on when
   doing the PLT reloc. (if, indeed, it's crashing fixing up a library rather
   than the executable).

Post all these outputs.

-RVP


Home | Main Index | Thread Index | Old Index