public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 1/5] gdb: make target_close check that the target isn't pushed in all inferiors
@ 2021-05-06 14:28 Simon Marchi
  2021-05-06 14:28 ` [PATCH 2/5] gdb: remove reference to current inferior in target_stack::unpush Simon Marchi
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: Simon Marchi @ 2021-05-06 14:28 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

From: Simon Marchi <simon.marchi@efficios.com>

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


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-05-13 19:31 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-06 14:28 [PATCH 1/5] gdb: make target_close check that the target isn't pushed in all inferiors Simon Marchi
2021-05-06 14:28 ` [PATCH 2/5] gdb: remove reference to current inferior in target_stack::unpush Simon Marchi
2021-05-06 16:15   ` Andrew Burgess
2021-05-07 15:53     ` Simon Marchi
2021-05-06 14:28 ` [PATCH 3/5] gdb: call target_follow_exec when "set follow-exec-mode" is "same" Simon Marchi
2021-05-06 14:28 ` [PATCH 4/5] gdb: on exec, delegate pushing / unpushing target and adding thread to target_ops::follow_exec Simon Marchi
2021-05-06 14:28 ` [PATCH 5/5] gdb: maybe unpush target from old inferior in inf_child_target::follow_exec Simon Marchi
2021-05-13 19:30   ` Simon Marchi
2021-05-06 16:01 ` [PATCH 1/5] gdb: make target_close check that the target isn't pushed in all inferiors Aktemur, Tankut Baris
2021-05-06 16:35   ` Simon Marchi
2021-05-07  7:44     ` Aktemur, Tankut Baris
2021-05-07 15:52       ` Simon Marchi
2021-05-06 16:14 ` Andrew Burgess
2021-05-07 14:36 ` Tom Tromey
2021-05-07 15:42   ` Simon Marchi
2021-05-07 16:47     ` Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).