From: Pedro Alves Date: Wed, 26 Oct 2016 10:08:26 +0000 (+0100) Subject: gdb: Free inferior->priv when inferior exits X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ef4a339527a41802fbab70af25d6e4788f35dcc8;p=binutils-gdb.git 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'. --- 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;