This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Don't query extra info about the internal main thread
- From: Pedro Alves <pedro at codesourcery dot com>
- To: gdb-patches at sourceware dot org
- Date: Thu, 24 Jul 2008 16:09:35 +0100
- Subject: Don't query extra info about the internal main thread
Hi,
A couple of weeks ago, Dmitry Smirnov reported that GDB was trying to get
qThreadExtraInfo out of his target and it was damaging his debug session, as
GDB complained about a protocol error -- because the reply that came back
was ill-formed.
If the remote side doesn't have any thread support, there's no use in
querying info about the main thread that GDB added internally. One would
expect stubs that don't support threads to return empty to this optional
packet, but his report showed that it's better to not rely on
stubs behaving.
Tested against gdbserver with and without --disable-packet=threads.
OK?
--
Pedro Alves
2008-07-24 Pedro Alves <pedro@codesourcery.com>
* remote.c (remote_threads_extra_info): Don't query the remote
server about info on the internally added main thread.
---
gdb/remote.c | 6 ++++++
1 file changed, 6 insertions(+)
Index: src/gdb/remote.c
===================================================================
--- src.orig/gdb/remote.c 2008-07-12 18:52:38.000000000 +0100
+++ src/gdb/remote.c 2008-07-24 15:47:42.000000000 +0100
@@ -2042,6 +2042,12 @@ remote_threads_extra_info (struct thread
internal_error (__FILE__, __LINE__,
_("remote_threads_extra_info"));
+ if (ptid_equal (tp->ptid, magic_null_ptid)
+ || (ptid_get_pid (tp->ptid) != 0 && ptid_get_tid (tp->ptid) == 0))
+ /* This is the main thread which was added by GDB. The remote
+ server doesn't know about it. */
+ return NULL;
+
if (use_threadextra_query)
{
xsnprintf (rs->buf, get_remote_packet_size (), "qThreadExtraInfo,%lx",