Re: [PATCH] [PR 25678] gdb crashes with "internal-error: sect_index_text not initialized" when .text

mlimber
2020-05-14T17:48:35Z

Sure. Clearer repro steps:

1. Build an application linking to an SO that has no text segment. I
believe there is an SO attached to the bug ticket that will work.

(My actual use case is a little complicated. I'm building a Qt 5.3 app and
Qt's libs have libicu*.so.52.2 as dependencies. Thus, I am indirectly using
libicudata.so.52.2, similar to what a recent commenter on the ticket
reported.)

2. Execute `gdb my_exe`.

3. Type 'r' at the gdb prompt to run.

4. Output from gdb 10:

Starting program: [snip]
[Thread debugging using libthread_db enabled]
Using host libthread_db library
"/lib/x86_64-linux-gnu/libthread_db.so.1".
symfile.c:881: internal-error: sect_index_text not initialized
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)

Output from gdb 8.2:

Starting program: [snip]
[Thread debugging using libthread_db enabled]
Using host libthread_db library
"/lib/x86_64-linux-gnu/libthread_db.so.1".
/build/gdb-q2KLFj/gdb-8.2/gdb/symfile.c:891: internal-error:
sect_index_text not initialized
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)

Is it legitimate to add binary files like an SO as part of the test, or
must I build all artifacts from source? If desired, I can attach the
offending SO to the ticket once my account is setup (waiting on setup
email).

M

On Thu, May 14, 2020 at 1:32 PM Simon Marchi <simark@simark.ca> wrote:

> On 2020-05-14 1:22 p.m., mlimber via Gdb-patches wrote:
> > I have replicated this bug in gdb versions 10.0.50.20200514-git and also
> > 8.2-0ubuntu1~14.04.1. I am using an executable that dynamically links an
> > shared object with no text segment, viz., libicudata.so.52.2. (FWIW,
> lldb-8
> > does not crash with this same executable + library.)
> >
> > I located a patch by Jeremie Courreges-Anglas here:
> > https://marc.info/?l=openbsd-ports&m=146569238229407&w=2. I applied said
> > patch, rebuilt gdb, and now I can debug the same executable with gdb.
> >
> > I am not an expert on the inner workings of gdb, but I assume those who
> > review this code can better judge the overall soundness of this change.
> >
> > I did not create a new test, but I can try it if necessary.
> >
> > I have not previously completed an FSF copyright assignment. I have a
> > "request for disclaimer" email prepared to send if so directed by the gdb
> > maintainers.
> >
> > Cheers!
> >
> > M
> >
>
> Hi,
>
> Thanks for the patch. For reference, could you please provide some
> instructions
> on how to replicate this bug? How to compile a minimal test case and the
> GDB
> commands to trigger the bug. It should ideally be put in the commit
> message to
> act as a reference, and it will be useful to write a test.
>
> We'll want a test for sure, so if you want to start writing one it would be
> appreciated. I know that writing GDB test is not the most obvious thing to
> do when you are not familiar with it, so don't hesitate to ask for help.
>
> Simon
>