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 /gdb/infrun.c | |
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.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r-- | gdb/infrun.c | 5 |
1 files changed, 3 insertions, 2 deletions
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 |