linux_nat.c: Mark new thread running even if momentarily pausing
My all-stop-on-top-of-non-stop series manages to trip on a bug in the linux-nat.c backend while running the testsuite. If a thread is discovered while threads are being momentarily paused (without the core's intervention), the thread ends up stuck in THREAD_STOPPED state, even though from the user's perspective, the thread is running even while it is paused. From inspection, in the current sources, this can happen if we call stop_and_resume_callback, though there's no way to test that with current Linux kernels. (While trying to come up with test to exercise this, I stumbled on: https://sourceware.org/ml/gdb-patches/2015-03/msg00850.html ... which does include a non-trivial test, so I think I can still claim I come out net positive. :-) ) Tested on x86_64 Fedora 20. gdb/ChangeLog: 2015-04-01 Pedro Alves <palves@redhat.com> * linux-nat.c (linux_handle_extended_wait): Always call set_running.
This commit is contained in:
parent
3c724c8ca9
commit
2ee52aa428
@ -1,3 +1,7 @@
|
||||
2015-04-01 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* linux-nat.c (linux_handle_extended_wait): Always call set_running.
|
||||
|
||||
2015-04-01 Pierre-Marie de Rodat <derodat@adacore.com>
|
||||
|
||||
* MAINTAINERS (Write After Approval): Add "Pierre-Marie de Rodat".
|
||||
|
@ -2109,9 +2109,12 @@ linux_handle_extended_wait (struct lwp_info *lp, int status,
|
||||
add_thread (new_lp->ptid);
|
||||
}
|
||||
|
||||
/* Even if we're stopping the thread for some reason
|
||||
internal to this module, from the user/frontend's
|
||||
perspective, this new thread is running. */
|
||||
set_running (new_lp->ptid, 1);
|
||||
if (!stopping)
|
||||
{
|
||||
set_running (new_lp->ptid, 1);
|
||||
set_executing (new_lp->ptid, 1);
|
||||
/* thread_db_attach_lwp -> lin_lwp_attach_lwp forced
|
||||
resume_stop. */
|
||||
|
Loading…
Reference in New Issue
Block a user