aboutsummaryrefslogtreecommitdiff
path: root/gdb/tracectf.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2020-06-18 21:28:18 +0100
committerPedro Alves <palves@redhat.com>2020-06-18 23:03:08 +0100
commit8df017996f662ce6ab23aea4abeb8f7ac1f62651 (patch)
tree0d5cc78af50669c9f30ff31f98631382e44370a7 /gdb/tracectf.c
parent41792d688a5a1f158d6e9ecda2b603ae122d69a1 (diff)
downloadgdb-8df017996f662ce6ab23aea4abeb8f7ac1f62651.zip
gdb-8df017996f662ce6ab23aea4abeb8f7ac1f62651.tar.gz
gdb-8df017996f662ce6ab23aea4abeb8f7ac1f62651.tar.bz2
gcore, handle exited threads better
An early (and since discarded) version of this series tried to make exited threads have distinct PTID between each other, and that change exposed a problem in linux-tdep.c... This was exposed by the gdb.threads/gcore-stale-thread.exp testcase, which is exactly about calling gcore with an exited thread selected: (gdb) [Thread 0x7ffff7fb6740 (LWP 31523) exited] PASS: gdb.threads/gcore-stale-thread.exp: continue to breakpoint: break-here gcore /home/pedro/gdb/binutils-gdb/build/gdb/testsuite/outputs/gdb.threads/gcore-stale-thread/gcore-stale-thread.core /home/pedro/gdb/binutils-gdb/build/../src/gdb/inferior.c:66: internal-error: void set_current_inferior(inferior*): Assertion `inf != NULL' failed. A problem internal to GDB has been detected, That was find_inferior_ptid being called on the "exited" ptid, which on that previous (and discarded attempt) had pid==-1. The problem is that linux-tdep.c, where it looks for the signalled thread, isn't considering exited threads. Also, while at it, that code isn't considering multi-target either, since it is using iterate_over_threads which iterates over all threads of all targets. Fixed by switching to range-for iteration instead. gdb/ChangeLog: 2020-06-18 Pedro Alves <palves@redhat.com> * linux-tdep.c (find_signalled_thread(thread_info *,void *)): Delete. (find_signalled_thread()): New, factored out from linux_make_corefile_notes and adjusted to handle exited threads. (linux_make_corefile_notes): Adjust to use the new find_signalled_thread.
Diffstat (limited to 'gdb/tracectf.c')
0 files changed, 0 insertions, 0 deletions