aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2015-05-15 16:26:53 +0100
committerPedro Alves <palves@redhat.com>2015-05-15 16:26:53 +0100
commit4e63d0ac896b6036edd8e2c09a4dac7aa16a46d1 (patch)
treecf9a40558ffa3b91f6b42609f147aa664c7458a1 /gas
parent452003ef2ca3e1cf81b17d960b59b8a8c167054b (diff)
downloadgdb-4e63d0ac896b6036edd8e2c09a4dac7aa16a46d1.zip
gdb-4e63d0ac896b6036edd8e2c09a4dac7aa16a46d1.tar.gz
gdb-4e63d0ac896b6036edd8e2c09a4dac7aa16a46d1.tar.bz2
Fix gdb.mi/mi-nsmoribund.exp timeouts
The PPC64 buildbot has been showing timeouts in mi-nsmoribund.exp, like this: (...) -thread-info FAIL: gdb.mi/mi-nsmoribund.exp: thread state: all running except the breakpoint thread (timeout) ... and I can reproduce this on gcc110 (PPC64) on the gcc compile farm. That is, the test sends "-thread-info" to GDB, but GDB never replies back. The problem is that these machines are too fast for gdb. :-) That test has a few threads running the same tight loop, and constantly hitting a thread-specific breakpoint that needs to be stepped over. If threads trip on breakpoints fast enough that linux-nat.c's event pipe associated with SIGCHLD is constantly being written to, even if the stdin file descriptor also has an event to handle, gdb never gets to it. because linux-nat.c's pipe comes first in the set of descriptors served by the poll/select code in the event loop. Fix this by having the event loop serve file event sources in round-robin-like fashion, similarly to how its done in gdb_do_one_event. Unfortunately, the poll and the select variants each need their own fixing. Tested on x86_64 Fedora 20 (poll and select variants), and PPC64 Fedora 18. Fixes the timeout in the PPC64 machine in the compile farm that times out without this, and I won't be surprised if it fixes other random timeouts in other tests. (gdbserver's copy of the event-loop doesn't need this (yet), as it still pushes all ready events to an event queue. That is, it hasn't had 70b66289 merged yet. We should really merge both event-loop.c copies into a single shared file, but that's for another day.) gdb/ChangeLog: 2015-05-15 Pedro Alves <palves@redhat.com> Simon Marchi <simon.marchi@ericsson.com> * event-loop.c (gdb_notifier) <next_file_handler, next_poll_fds_index>: New fields. (get_next_file_handler_to_handle_and_advance): New function. (delete_file_handler): If deleting the next file handler to handle, advance to the next file handler. (gdb_wait_for_event): Bail early if no event fired. Poll file handlers in round-robin fashion.
Diffstat (limited to 'gas')
0 files changed, 0 insertions, 0 deletions