1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-17 10:26:15 +00:00

lldb: Invoke PT_KILL from ProcessPosix::DoDestroy

We previously sent SIGKILL to the debuggee in DoDestroy, but did not
actually detach or kill via ptrace.  It seems that this somehow didn't
matter on Linux, but did on FreeBSD.

This would happen when quitting LLDB while stopped at a breakpoint, for
example.  The debuggee remained stopped in ptrace (with the signal
either pending or lost).  After a timeout of a second or two LLDB exits,
which caused the debuggee to resume and dump core from an unhandled
SIGTRAP.

BringProcessIntoLimbo is a poorly named wrapper for ptrace(PT_KILL)
which is the desired behaviour from DoDestroy.

http://llvm.org/pr18894

Sponsored by:	DARPA, AFRL
This commit is contained in:
Ed Maste 2014-03-24 01:21:37 +00:00
parent 24456bdb9c
commit 52c52d38d5
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=263678

View File

@ -335,11 +335,9 @@ ProcessPOSIX::DoDestroy()
if (!HasExited())
{
// Drive the exit event to completion (do not keep the inferior in
// limbo).
assert (m_monitor);
m_exit_now = true;
if ((m_monitor == NULL || kill(m_monitor->GetPID(), SIGKILL)) && error.Success())
if (m_monitor->BringProcessIntoLimbo())
{
error.SetErrorToErrno();
return error;