From: "Warner, William (Bill)" <wwarner@ciena.com>
To: "'gdb@sources.redhat.com'" <gdb@sources.redhat.com>
Subject: Linux threads incorrectly "detected" in non-threaded program
Date: Fri, 25 Jan 2002 18:09:00 -0000 [thread overview]
Message-ID: <FB77A8A317F5D31199F1009027DE4A870158FFD0@wntcsdexg01.csd.ciena.com> (raw)
Hi -
I'm using GDB 5.1.1 on Linux 2.4.7 kernel (RedHat 7.2).
The program I'm trying to debug links against libpthread.so (indirectly),
but does not create any additional pthreads (only the "initial" thread
exists.)
However, the program does do its own user-level context switching
(save/restore
registers and change stack pointers.)
My problem is that after the program starts up, GDB apparently
"detects" a new thread or lwp, but of course fails when it tries to use it
(since it doesn't really exist.)
Two questions:
1. Why does gdb think there's a new thread? Does it, or libthread_db, still
rely on
the stack pointer to identify threads? What state is being relied on?
2. Can GDB be configured (at run-time or compile-time) to disable thread
awareness and
not call the lin-lwp or thread_db stuff? That is, be forced to treat the
program
as non-threaded?
I should note that the program, when compiled for Solaris, can be
debugged fine
with GDB 5.0. The Solaris implementation therefore seems more robust.
Here's a transcript:
% gdb simv
GNU gdb 5.1.1
...
(gdb) attach 12418
Attaching to program:
/home/wwarner/p4/hw/txn/asics/sim/tb_scm/src/i686/simv, process 13228
Reading symbols from /lib/librt.so.1...done.
Loaded symbols for /lib/librt.so.1
...
Reading symbols from /lib/i686/libpthread.so.0...done.
[New Thread 1024 (LWP 13228)]
Loaded symbols for /lib/i686/libpthread.so.0
...
0x4019ca31 in __libc_nanosleep () from /lib/i686/libc.so.6
(gdb) continue
Continuing.
// process resumes, and starts creating user-level threads and context
switching.
// Then I hit Control-C.
[New Cannot find thread 2049: invalid thread handle
(gdb) info threads
1 Thread 1024 (LWP 13719) Couldn't get registers: No such process.
(gdb) c
Continuing.
Couldn't get registers: No such process.
(gdb)
Thanks,
--
Bill Warner CIENA Core Switching Division 408 366-3385
next reply other threads:[~2002-01-26 2:09 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-01-25 18:09 Warner, William (Bill) [this message]
2002-01-25 23:08 ` Daniel Jacobowitz
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=FB77A8A317F5D31199F1009027DE4A870158FFD0@wntcsdexg01.csd.ciena.com \
--to=wwarner@ciena.com \
--cc=gdb@sources.redhat.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