When searching for an active thread (e.g. right after switching to threaded

mode), if no lwp is signaled, just stay with the current (inferior_ptid.lwp).
This fixes gdb -p to a threaded process with all threads active.
Previously we eroneously restored an lwp of 0 (returned as sentinel from
ptrace) to inferior_ptid.lwp, which then would not match any thread in
thread_list and caused assertion failures.
This commit is contained in:
martin 2013-02-16 18:06:43 +00:00
parent 9b136a6b53
commit 4199c0b4fb
1 changed files with 3 additions and 0 deletions

View File

@ -282,6 +282,9 @@ find_active_thread (void)
while ((val != -1) && (pl.pl_lwpid != 0) &&
(pl.pl_event != PL_EVENT_SIGNAL))
val = ptrace (PT_LWPINFO, GET_PID(inferior_ptid), (void *)&pl, sizeof(pl));
if (pl.pl_lwpid == 0)
/* found no "active" thread, stay with current */
pl.pl_lwpid = inferior_ptid.lwp;
}
else
{