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.
This commit is contained in:
Pedro Alves 2017-04-13 16:15:34 +01:00
parent 441d7c9378
commit 2a00d7ce26
2 changed files with 8 additions and 2 deletions

View File

@ -1,3 +1,8 @@
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

View File

@ -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