Bug 13719

Summary: gdb: Cannot find new threads: generic error [testcase]
Product: gdb Reporter: Jan Engelhardt <jengelh>
Component: threadsAssignee: Not yet assigned to anyone <unassigned>
Status: NEW ---    
Severity: normal CC: jan, rguenth, rguenther, tromey
Priority: P2    
Version: 7.3   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:
Attachments: C file

Description Jan Engelhardt 2012-02-21 09:04:24 UTC
Created attachment 6232 [details]
C file

If libpthread.so is not loaded right at the start of the traced program, gdb produces a thread error once libpthread.so gets loaded, for example by way of dlopen.
This is on gdb-7.3, but it also occurs with gdb-7.4.50.20120120. (glibc-2.14.1 and glibc-2.15)

$ gcc testcase.c -o tc -ldl
$ gdb tc
GNU gdb (GDB) SUSE (7.3-41.1.2)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /dev/shm/tc...done.
(gdb) r
Starting program: /dev/shm/tc 
[Thread debugging using libthread_db enabled]
Cannot find new threads: generic error
Comment 1 Tom Tromey 2012-04-02 14:42:43 UTC
FWIW, I could not reproduce this on Fedora 16:

(gdb) run
Starting program: /home/tromey/gnu/PRS/gdb13719/pr 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[Inferior 1 (process 21325) exited normally]
[Inferior 21325 exited]

I even disabled debuginfo lookup:

(gdb) set debug-file-directory /

... and it still worked.

I have:

barimba. rpm -q glibc
glibc-2.14.90-24.fc16.6.x86_64

I tried CVS HEAD (from last week or so), 7.3, 7.4, and the system gdb.
Comment 2 Richard Biener 2012-04-02 14:47:58 UTC
I can reproduce it with gdb built from gdb-7.3-41.fc15.src.rpm and glibc 2.14.1.
Comment 3 Jan Engelhardt 2012-07-22 20:07:49 UTC
Have you found anything yet, Richard?
Comment 4 rguenther 2012-07-23 07:55:01 UTC
I didn't investigate, just confirmed.
Comment 5 Jan Kratochvil 2012-07-23 08:30:47 UTC
This is PR 2328 duplicate:
  _dl_debug_state() RT_CONSISTENT called too early

The problem does not happen if libpthread.so is prelinked (and it is successfully loaded at its prelinked address).  This is probably why Tom did not reproduce it in Comment 1.

It is going to be in gdb-7.6 as posted:
  [RFA 0/4 take 2] Improved linker-debugger interface
  http://sourceware.org/ml/gdb-patches/2012-07/msg00330.html

It requires also glibc systemtap probes for its functionality.