mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 09:14:14 +08:00
prepare_for_detach: don't release scoped_restore at the end
After detaching from a process, the inf->detaching flag is inadvertently left set to true. If you afterwards reuse the same inferior to start a new process, GDB will mishave... The problem is that prepare_for_detach discards the scoped_restore at the end, while the intention is for the flag to be set only for the duration of prepare_for_detach. This was already a bug in the original commit that added prepare_for_detach, commit 24291992dac3 ("PR gdb/11321"), by yours truly. Back then, we still used cleanups, and the function called discard_cleanups instead of do_cleanups, by mistake. gdb/ChangeLog: * infrun.c (prepare_for_detach): Don't release scoped_restore before returning.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2021-02-03 Pedro Alves <pedro@palves.net>
|
||||||
|
|
||||||
|
* infrun.c (prepare_for_detach): Don't release scoped_restore
|
||||||
|
before returning.
|
||||||
|
|
||||||
2021-02-03 Pedro Alves <pedro@palves.net>
|
2021-02-03 Pedro Alves <pedro@palves.net>
|
||||||
|
|
||||||
* infrun.c (handle_one): New function, factored out from ...
|
* infrun.c (handle_one): New function, factored out from ...
|
||||||
|
@ -3607,13 +3607,8 @@ prepare_for_detach (void)
|
|||||||
at this point, and signals are passed directly to the
|
at this point, and signals are passed directly to the
|
||||||
inferior, so this must mean the process is gone. */
|
inferior, so this must mean the process is gone. */
|
||||||
if (!ecs->wait_some_more)
|
if (!ecs->wait_some_more)
|
||||||
{
|
error (_("Program exited while detaching"));
|
||||||
restore_detaching.release ();
|
|
||||||
error (_("Program exited while detaching"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
restore_detaching.release ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wait for control to return from inferior to debugger.
|
/* Wait for control to return from inferior to debugger.
|
||||||
|
Reference in New Issue
Block a user