From ef4a339527a41802fbab70af25d6e4788f35dcc8 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 26 Oct 2016 11:08:26 +0100 Subject: [PATCH] gdb: Free inferior->priv when inferior exits (Where "exits" includes being killed or detached.) Nothing is clearing inferior->priv currently. This is a problem if we change the inferior's process_stratum targets in a single debug session. This field is currently only used by darwin-nat.c, but a follow up patch will make remote.c use it too. Without the fix, remote.c might end up mistaking the priv object allocated by darwin-nat.c with its own. (Found by inspection.) gdb/ChangeLog: 2016-10-26 Pedro Alves * inferior.c (exit_inferior_1): Free 'priv'. --- gdb/ChangeLog | 4 ++++ gdb/inferior.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f4c06f8b494..f8296b6fd81 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2016-10-26 Pedro Alves + + * inferior.c (exit_inferior_1): Free 'priv'. + 2016-10-26 Pedro Alves * remote.c (remote_resume_with_hc): New function, factored out diff --git a/gdb/inferior.c b/gdb/inferior.c index 16024839836..250603c85cc 100644 --- a/gdb/inferior.c +++ b/gdb/inferior.c @@ -253,6 +253,9 @@ exit_inferior_1 (struct inferior *inftoex, int silent) inf->pid = 0; inf->fake_pid_p = 0; + xfree (inf->priv); + inf->priv = NULL; + if (inf->vfork_parent != NULL) { inf->vfork_parent->vfork_child = NULL; -- 2.30.2