]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
Fix lwp_suspend/unsuspend imbalance in linux_wait_1
authorAntoine Tremblay <antoine.tremblay@ericsson.com>
Wed, 31 Aug 2016 17:46:22 +0000 (13:46 -0400)
committerAntoine Tremblay <antoine.tremblay@ericsson.com>
Wed, 31 Aug 2016 18:23:16 +0000 (14:23 -0400)
commit305a161d11c4b5801a0e135fec5d77f3d64f121f
tree691b755739f93292064c9bbc06f4c1aa664290ca
parent97f74bcefff073a352f57c2fb4cc3390eb251ed9
Fix lwp_suspend/unsuspend imbalance in linux_wait_1

This patch fixes imbalanced lwp_suspend/unsuspend calls caused by the
premature choosing of another event for fairness.

select_event_lwp would switch the event before a call to
unsuspend_all_lwps, thus it would be called with the wrong event.

This caused an assertion failure: unsuspend LWP xx, suspended=-1 when
testing  gdb.threads/non-stop-fair-events.exp with ARM range stepping in
GDBServer.

This patch moves the switch of event after the unsuspend/unstop calls.

No regressions, tested on ubuntu 14.04 ARMv7 and x86.
With gdbserver-native.

gdb/gdbserver/ChangeLog:

* linux-low.c (linux_wait_1): Move event switch after unsuspend_lwps.
gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-low.c