public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Simon Marchi <simon.marchi@polymtl.ca>
To: noloader@gmail.com, gdb@sourceware.org
Subject: Re: GDB loading incorrect version library
Date: Fri, 15 Jan 2021 11:15:26 -0500	[thread overview]
Message-ID: <547cf0c9-1585-07c6-8565-bd2a2048eecf@polymtl.ca> (raw)
In-Reply-To: <CAH8yC8=CsmjO_VsMbxiK0RA-oAefoWmCYE=LDwhHvQec3B8saQ@mail.gmail.com>

On 2021-01-15 2:30 a.m., Jeffrey Walton via Gdb wrote:
> Hi Everyone,
> 
> I'm trying to investigate a Bash crash when Bash is instrumented with
> Asan. I've got Bash and all of its dependencies built/installed at
> ~/ok2delete-asan. All of them are built with Asan.
> 
> GDB startup shows:
> 
>     $ gdb ~/ok2delete-asan/bin/bash
>     gdb: /usr/local/lib/libncursesw.so.6: no version information
> available (required by gdb)
> 
> It appears GDB is not loading the proper version of Ncurses:
> 
>     (gdb) shell readelf -d ~/ok2delete-asan/bin/bash | grep -E 'RPATH|RUNPATH'
>      0x000000000000001d (RUNPATH)            Library runpath:
> [$ORIGIN/../lib:/home/jwalton/ok2delete-asan/lib]
> 
> And (slightly trimmed):
> 
> (gdb) shell ldd ~/ok2delete-asan/bin/bash
>     linux-vdso.so.1 (0x00007ffde6bfc000)
>     libasan.so.5 => /usr/lib/x86_64-linux-gnu/libasan.so.5
>     libiconv.so.2 => /home/jwalton/ok2delete-asan/bin/../lib/libiconv.so.2
>     libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
>     libtinfow.so.6 => /home/jwalton/ok2delete-asan/bin/../lib/libtinfow.so.6
>     libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
>     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
>     librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1
>     libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6
>     libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1
>     /lib64/ld-linux-x86-64.so.2
> 
> All of the warez built use the same RUNPATH.
> 
> How do I tell GDB to use the RUNPATH set in the binary?
> 
> Thanks in advance.
> 

From what I understand, the problem appears to be with the library
required by GDB itself (GDB uses ncurses to implement the text user
interface, or TUI) and not with ncurses loaded by your bash
executable.  As we can see by your ldd command, your bash doesn't
even require ncurses.

So maybe you built GDB against some ncurses library (the one in
/usr/lib perhaps) but now there's another, incompatible ncurses
library in the library path (in /usr/local/lib).

Additionally, you get the error message just when loading the bash
executable in GDB.  At this point, GDB makes no attempt to load
any of the shared libraries, that only happens when you run, and
the process actually loads the shared libraries.  And when this
happens, GDB simply gets the absolute path of the library that the
process actually loaded from the dynamic loader.  As a result, GDB
doesn't need to implement any RPATH / LD_LIBRARY_PATH / whatever
logic to find libraries.

Simon

      reply	other threads:[~2021-01-15 16:15 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-15  7:30 Jeffrey Walton
2021-01-15 16:15 ` Simon Marchi [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=547cf0c9-1585-07c6-8565-bd2a2048eecf@polymtl.ca \
    --to=simon.marchi@polymtl.ca \
    --cc=gdb@sourceware.org \
    --cc=noloader@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).