Re: Debugging ld.so in gdb

Florian Weimer via Gdb <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
* Jacob Kroon via Gdb:

> Since a week or two I have started to see a segfault on my updated
> Fedora 35 system. I suspect the segfault is related to a recent glibc
> update.
>
> The segfault I see happens when I run the following:
>
> $ ldd ./mylib.so
>
> I narrowed it down to running:
>
> $ LD_TRACE_LOADED_OBJECTS=1 /lib64/ld-linux-x86-64.so.2 ./mylib.so
>
> "coredumpctl info" gives me:
>
>> Stack trace of thread 143567:
>> #0  0x00007ff428f73590 n/a (n/a + 0x0)
>> #1  0x00007ff428f8af0f _dl_map_object_deps (/usr/lib64/ld-linux-x86-64.so.2 + 0x3f0f)
>> #2  0x00007ff428fa6970 dl_main (/usr/lib64/ld-linux-x86-64.so.2 + 0x1f970)
>> #3  0x00007ff428fa2c7c _dl_sysdep_start (/usr/lib64/ld-linux-x86-64.so.2 + 0x1bc7c)
>> #4  0x00007ff428fa4678 _dl_start_final (/usr/lib64/ld-linux-x86-64.so.2 + 0x1d678)
>> #5  0x00007ff428fa36a8 _start (/usr/lib64/ld-linux-x86-64.so.2 + 0x1c6a8)
>
> but inspecting in gdb using "coredumpctl debug" doesn't give me any sane
> backtrace.
>
> The .so is part of a Yocto build. If I copy the file out from its build
> directory to $HOME and run ldd on it, then there is no crash. So I
> suspect RUNPATH is involved somehow since it contains $ORIGIN.
>
> Any ideas of what I can do to investigate further ?

I suggest to run ld.so under GDB, with

  set startup-with-shell off
  set environment LD_TRACE_LOADED_OBJECTS 1
  b _start
  run ./mylib.so
  record btrace pt
  continue

And after the crash, look at

  record instruction-history

to see how it reached the crash.  This assumes that you have an
execution environment that supports branch tracing.

Thanks,
Florian
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.