diff options
author | Pedro Alves <palves@redhat.com> | 2017-04-13 16:15:34 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2017-04-13 16:18:16 +0100 |
commit | 2a00d7ce26a6ee15e3712b045c8b7932278ea23b (patch) | |
tree | b0f704ac4d78438257cdbf615ab68ecfea8e7cb5 | |
parent | 441d7c93782a1b1877bfa903dc8da56a6041bfb4 (diff) | |
download | gdb-2a00d7ce26a6ee15e3712b045c8b7932278ea23b.zip gdb-2a00d7ce26a6ee15e3712b045c8b7932278ea23b.tar.gz gdb-2a00d7ce26a6ee15e3712b045c8b7932278ea23b.tar.bz2 |
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 <palves@redhat.com>
* infrun.c (follow_fork_inferior): Also switch the current
inferior.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/infrun.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index acf59e5..4160e9f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2017-04-13 Pedro Alves <palves@redhat.com> + * infrun.c (follow_fork_inferior): Also switch the current + inferior. + +2017-04-13 Pedro Alves <palves@redhat.com> + * breakpoint.c (watch_command_1): Save watchpoint-frame info before calling create_internal_breakpoint. diff --git a/gdb/infrun.c b/gdb/infrun.c index b5eb4ab..c7298a3 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 |