[PATCH 1/2] gdb: make target_close check that target isn't pushed in all inferiors
Simon Marchi
simon.marchi@polymtl.ca
Thu Apr 29 19:34:50 GMT 2021
The target_close function currently checks that the target to be closed
isn't pushed in the current inferior:
gdb_assert (!current_inferior ()->target_is_pushed (targ));
When a target is closed, it's normally because its refcount has dropped
to 0, because it's not used in any inferior anymore. I think it would
make sense to change that assert to not only check in the current
inferior, but to check in all inferiors. It would be quite bad (and a
bug) to close a target while it's still pushed in one of the non-current
inferiors.
gdb/ChangeLog:
* target.c (target_close): Check in all inferiors that the
target is not pushed.
Change-Id: I6e37fc3f3476a0593da1e476604642b2de90f1d5
---
gdb/target.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gdb/target.c b/gdb/target.c
index 1f0741471d82..00f0acde7586 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -3734,7 +3734,8 @@ debug_target::info () const
void
target_close (struct target_ops *targ)
{
- gdb_assert (!current_inferior ()->target_is_pushed (targ));
+ for (inferior *inf : all_inferiors ())
+ gdb_assert (!inf->target_is_pushed (targ));
fileio_handles_invalidate_target (targ);
--
2.30.1
More information about the Gdb-patches
mailing list