From: Pedro Alves Date: Thu, 13 Apr 2017 15:15:34 +0000 (+0100) Subject: Fix follow-fork latent bug X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2a00d7ce26a6ee15e3712b045c8b7932278ea23b;p=binutils-gdb.git Fix follow-fork latent bug A later patch in the series adds an assertion to switch_to_thread that the resulting inferior_ptid always matches the "current_inferior()" inferior. This exposed a latent bug in the follow-fork code, where we're building the fork child inferior. We're switching inferior_ptid, but not the current inferior object... gdb/ChangeLog: 2017-04-13 Pedro Alves * infrun.c (follow_fork_inferior): Also switch the current inferior. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index acf59e5abb8..4160e9f44d4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-04-13 Pedro Alves + + * infrun.c (follow_fork_inferior): Also switch the current + inferior. + 2017-04-13 Pedro Alves * breakpoint.c (watch_command_1): Save watchpoint-frame info diff --git a/gdb/infrun.c b/gdb/infrun.c index b5eb4abbdd9..c7298a3979a 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -498,11 +498,11 @@ holding the child stopped. Try \"set detach-on-fork\" or \ child_inf->gdbarch = parent_inf->gdbarch; copy_inferior_target_desc_info (child_inf, parent_inf); - old_chain = save_inferior_ptid (); - save_current_program_space (); + old_chain = save_current_space_and_thread (); inferior_ptid = child_ptid; add_thread (inferior_ptid); + set_current_inferior (child_inf); child_inf->symfile_flags = SYMFILE_NO_READ; /* If this is a vfork child, then the address-space is @@ -631,6 +631,7 @@ holding the child stopped. Try \"set detach-on-fork\" or \ inferior_ptid = child_ptid; add_thread (inferior_ptid); + set_current_inferior (child_inf); /* If this is a vfork child, then the address-space is shared with the parent. If we detached from the parent, then we can