This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: gdbserver: thread getmsg err on mips[el]-linux
- From: Atsushi Nemoto <anemo at mba dot ocn dot ne dot jp>
- To: gdb at sources dot redhat dot com
- Date: Fri, 28 Jan 2005 19:43:14 +0900 (JST)
- Subject: Re: gdbserver: thread getmsg err on mips[el]-linux
- References: <20050114.174802.55486536.nemoto@toshiba-tops.co.jp>
>>>>> On Fri, 14 Jan 2005 17:48:02 +0900 (JST), Atsushi Nemoto <anemo@mba.ocn.ne.jp> said:
anemo> Hi. When I tried to debug multi thread program with gdbserver
anemo> (6.3.50_20050104) on mips[el]-linux, I got following error:
anemo> [[gdbserver side]]
anemo> $ ./gdbserver host:50000 ./ttest
anemo> Process ./ttest created; pid = 3328
anemo> Listening on port 50000
anemo> Remote debugging from host 127.0.0.1
anemo> thread getmsg err: no event message for getmsg
anemo> Segmentation fault
Does anybody see above error? Anyway, here is a patch for this
problem. Please apply to CVS if no objection. Thank you.
--- gdb-6.3.org/gdb/gdbserver/thread-db.c 2004-10-17 02:42:00.000000000 +0900
+++ gdb-6.3/gdb/gdbserver/thread-db.c 2005-01-27 12:19:29.000000000 +0900
@@ -21,6 +21,7 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#include <unistd.h>
#include "server.h"
#include "linux-low.h"
@@ -142,6 +143,7 @@
td_event_msg_t msg;
td_err_e err;
struct inferior_linux_data *tdata;
+ int timeout;
if (debug_threads)
fprintf (stderr, "Thread creation event.\n");
@@ -152,7 +154,13 @@
In the LinuxThreads implementation, this is safe,
because all events come from the manager thread
(except for its own creation, of course). */
- err = td_ta_event_getmsg (thread_agent, &msg);
+ for (timeout = 0; timeout < 50000; timeout++)
+ {
+ err = td_ta_event_getmsg (thread_agent, &msg);
+ if (err != TD_NOMSG)
+ break;
+ usleep(1000);
+ }
if (err != TD_OK)
fprintf (stderr, "thread getmsg err: %s\n",
thread_db_err_str (err));
P.S. I'm not on this ML. Please CC to me.
---
Atsushi Nemoto