aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2022-01-06 15:32:55 +0000
committerAndrew Burgess <aburgess@redhat.com>2022-01-08 22:12:57 +0000
commit038d8b4635eda079a63df176cfa48c47f8c32617 (patch)
treed892d607dc8306449782ed5b66b132cf15a2f622 /gdb
parent249f1cf8e669cc2fa7832601e0bbf460c5bfb97d (diff)
downloadgdb-038d8b4635eda079a63df176cfa48c47f8c32617.zip
gdb-038d8b4635eda079a63df176cfa48c47f8c32617.tar.gz
gdb-038d8b4635eda079a63df176cfa48c47f8c32617.tar.bz2
gdb/hurd: handle inferiors exiting
While testing on GNU/Hurd (i386) I noticed that GDB crashes when an inferior exits, with this error: inferior.c:293: internal-error: inferior* find_inferior_pid(process_stratum_target*, int): Assertion `pid != 0' failed. The problem appears to be in gnu_nat_target::wait. We always set inferior_ptid to null_ptid before calling target_wait, this has been the case since the multi-target changes were made to GDB in commit: commit 5b6d1e4fa4fc6827c7b3f0e99ff120dfa14d65d2 Date: Fri Jan 10 20:06:08 2020 +0000 Multi-target support With follow up changes in commit: commit 24ed6739b699f329c2c45aedee5f8c7d2f54e493 Date: Thu Jan 30 14:35:40 2020 +0000 gdb/remote: Restore support for 'S' stop reply packet Unfortunately, the GNU/Hurd target is still relying on the value of inferior_ptid in the case where an inferior exits - we return the value of inferior_ptid as the pid of the process that exited. This was fine in the single target world, where inferior_ptid identified the one running inferior, but this is no longer good enough. Instead, we should return a ptid containing the pid of the process that exited, as obtained from the wait event, and this is what this commit does. I've not run the full testsuite on GNU/Hurd as there appear to be lots of other issues with this target that makes running the full testsuite very painful, but I think this looks like a small easy improvement.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/gnu-nat.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
index 1d3b5f1..9c53e3c 100644
--- a/gdb/gnu-nat.c
+++ b/gdb/gnu-nat.c
@@ -1603,7 +1603,10 @@ rewait:
available
thread. */
else
- ptid = inferior_ptid; /* let wait_for_inferior handle exit case */
+ {
+ /* The process exited. */
+ ptid = ptid_t (inf->pid);
+ }
}
if (thread