native/Linux: internal error if resume is short-circuited
authorPedro Alves <palves@redhat.com>
Thu, 19 Mar 2015 12:20:25 +0000 (12:20 +0000)
committerPedro Alves <palves@redhat.com>
Thu, 19 Mar 2015 12:26:49 +0000 (12:26 +0000)
commiteb54c8bf087f434b0cb91b35e7cde68a69ac9193
tree341eb32253fad30cfc3a81e678ba4fb59ccfc56c
parentb90fc18880972f0c2ed280df20604d89f1d4ec38
native/Linux: internal error if resume is short-circuited

If the linux_nat_resume's short-circuits the resume because the
current thread has a pending status, and, a thread with a higher
number was previously stopped for a breakpoint, GDB internal errors,
like:

 /home/pedro/gdb/mygit/src/gdb/linux-nat.c:2590: internal-error: status_callback: Assertion `lp->status != 0' failed.

Fix this by make status_callback bail out earlier.  GDBserver is
already doing the same.

New test added that exercises this.

gdb/ChangeLog:
2015-03-19  Pedro Alves  <palves@redhat.com>

* linux-nat.c (status_callback): Return early if the LWP has no
status pending.

gdb/testsuite/ChangeLog:
2015-03-19  Pedro Alves  <palves@redhat.com>

* gdb.threads/continue-pending-status.c: New file.
* gdb.threads/continue-pending-status.exp: New file.
gdb/ChangeLog
gdb/linux-nat.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.threads/continue-pending-status.c [new file with mode: 0644]
gdb/testsuite/gdb.threads/continue-pending-status.exp [new file with mode: 0644]