This is the mail archive of the
gdb-prs@sourceware.org
mailing list for the GDB project.
Re: threads/2383: internal-error: linux_nat_wait: Assertion`iterate_over_lwps (running_callback, NULL)' failed.
- From: Atsushi Nemoto <anemo at mba dot ocn dot ne dot jp>
- To: nobody at sources dot redhat dot com
- Cc: gdb-prs at sources dot redhat dot com,
- Date: 29 Feb 2008 16:28:01 -0000
- Subject: Re: threads/2383: internal-error: linux_nat_wait: Assertion`iterate_over_lwps (running_callback, NULL)' failed.
- Reply-to: Atsushi Nemoto <anemo at mba dot ocn dot ne dot jp>
The following reply was made to PR threads/2383; it has been noted by GNATS.
From: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
To: gdb-gnats@sources.redhat.com, nobody@sources.redhat.com
Cc:
Subject: Re: threads/2383: internal-error: linux_nat_wait: Assertion
`iterate_over_lwps (running_callback, NULL)' failed.
Date: Sat, 01 Mar 2008 01:23:06 +0900 (JST)
I confirmed this problem is still in gdb-6.7.50.20080222.
At that point, it seems gdb assume other threads are resumed, but this
assumption is not true with scheduler-locking.
With this patch, I can avoid the internal error. Is this reasonable?
--- gdb-6.7.50.20080222/gdb/linux-nat.c 2008-01-30 07:47:20.000000000 +0900
+++ gdb/gdb/linux-nat.c 2008-03-01 01:10:57.000000000 +0900
@@ -2138,6 +2138,9 @@ retry:
ignored. */
if (num_lwps > 0)
{
+ /* If lwps were stopped (by schedlock), resume them. */
+ if (!iterate_over_lwps (running_callback, NULL))
+ iterate_over_lwps (resume_callback, NULL);
/* Make sure there is at least one thread running. */
gdb_assert (iterate_over_lwps (running_callback, NULL));