gdbserver: move_out_of_jump_pad_callback misses switching current thread
authorPedro Alves <palves@redhat.com>
Thu, 23 Jul 2015 15:01:01 +0000 (16:01 +0100)
committerPedro Alves <palves@redhat.com>
Thu, 6 Aug 2015 13:30:07 +0000 (14:30 +0100)
commitf0ce0d3a331129309a46a6a9ac85fce35acae72b
tree670182cd3e8f7cb283d47a7f9afb00006ae88fdb
parentbf47e2482d3e88580ba5a22db48bc773fa8ced3f
gdbserver: move_out_of_jump_pad_callback misses switching current thread

While hacking on the fix for PR threads/18600 (Threads left stopped
after fork+thread spawn), I once saw its test (fork-plus-threads.exp)
FAIL against gdbserver because move_out_of_jump_pad_callback has a
gdb_breakpoint_here call, and the caller isn't making sure the current
thread points to the right thread.  In the case I saw, the current
thread pointed to the wrong process, so gdb_breakpoint_here returned
the wrong answer.  Unfortunately I didn't save logs.  Still, seems
obvious enough and it should fix a potential occasional racy FAIL.

Tested on x86_64 Fedora 20.

gdb/gdbserver/ChangeLog:
2015-08-06  Pedro Alves  <palves@redhat.com>

* linux-low.c (move_out_of_jump_pad_callback): Temporarily switch
the current thread.
gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-low.c