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: Daniel Jacobowitz <drow at false dot org>
- To: nobody at sources dot redhat dot com
- Cc: gdb-prs at sources dot redhat dot com,
- Date: 29 Feb 2008 16:58:01 -0000
- Subject: Re: threads/2383: internal-error: linux_nat_wait: Assertion`iterate_over_lwps (running_callback, NULL)' failed.
- Reply-to: Daniel Jacobowitz <drow at false dot org>
The following reply was made to PR threads/2383; it has been noted by GNATS.
From: Daniel Jacobowitz <drow@false.org>
To: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc: gdb-gnats@sourceware.org
Subject: Re: threads/2383: internal-error: linux_nat_wait: Assertion
`iterate_over_lwps (running_callback, NULL)' failed.
Date: Fri, 29 Feb 2008 11:50:18 -0500
On Fri, Feb 29, 2008 at 04:28:01PM -0000, Atsushi Nemoto wrote:
> 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));
>
So you've single-stepped a thread until its exit, while it was the
only thread running. Is that correct?
It seems like we ought to inform the user when this happens, not
suddenly run somewhere else.
--
Daniel Jacobowitz
CodeSourcery