aboutsummaryrefslogtreecommitdiff
path: root/gdb/infrun.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2017-04-13 16:15:34 +0100
committerPedro Alves <palves@redhat.com>2017-04-13 16:18:16 +0100
commit2a00d7ce26a6ee15e3712b045c8b7932278ea23b (patch)
treeb0f704ac4d78438257cdbf615ab68ecfea8e7cb5 /gdb/infrun.c
parent441d7c93782a1b1877bfa903dc8da56a6041bfb4 (diff)
downloadgdb-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.c5
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