<div dir="ltr">That looks fine.  I think if we find cases where m_monitor is already killed when we hit that (or was never established), we can track it down.<div><br></div><div>I think the !HasExited() guard will likely already cover everything we'd care about.</div>
<div><br></div><div>Thanks for checking! </div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Mar 21, 2014 at 12:10 PM, Ed Maste <span dir="ltr"><<a href="mailto:emaste@freebsd.org" target="_blank">emaste@freebsd.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">> Sounds very likely that your ProcessPOSIX change addressed the issues.  Nice job, Ed!  ProcessLinux is nearly entirely ProcessPOSIX, the big diff being a different ProcessMonitor and a few minor bits of functionality that differ from ProcessFreeBSD.<br>

<br>
</div>Hi Todd - I'm now using this change on FreeBSD<br>
(<a href="https://github.com/emaste/lldb/commit/e64649d8cd1a171086ace48e2beb587acd0c82e0" target="_blank">https://github.com/emaste/lldb/commit/e64649d8cd1a171086ace48e2beb587acd0c82e0</a>)<br>
<br>
     if (!HasExited())<br>
     {<br>
-        // Drive the exit event to completion (do not keep the inferior in<br>
-        // limbo).<br>
+        assert (m_monitor);<br>
         m_exit_now = true;<br>
-<br>
-        if ((m_monitor == NULL || kill(m_monitor->GetPID(), SIGKILL))<br>
&& error.Success())<br>
+        if (m_monitor->BringProcessIntoLimbo())<br>
         {<br>
             error.SetErrorToErrno();<br>
             return error;<br>
<br>
<br>
- AFAIK m_monitor cannot be null in ProcessPOSIX::DoDestroy, so I just<br>
switched to asserting that it is not.<br>
- BringProcessIntoLimbo() in the FreeBSD and Linux ProcessMonitor is<br>
poorly named, but just implements ptrace(PT_KILL, ...).  I believe<br>
this is exactly the behaviour we want from DoDestroy.<br>
<br>
On FreeBSD the test suite passes for me, and I'm going to commit the<br>
change to the copy of LLDB that we ship with the FreeBSD base system.<br>
Can you tell me if you're happy with this change on Linux as well?<br>
(If it's not suitable for Linux I can just switch this to be separate<br>
ProcessFreeBSD::DoDestroy and ProcessLinux::DoDestroy.)<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><table cellspacing="0" cellpadding="0" style="color:rgb(136,136,136);font-family:'Times New Roman'"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small">
<td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Todd Fiala |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td>
<td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tfiala@google.com" style="color:rgb(17,85,204)" target="_blank"><span style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">tfiala@google.com</span></a> |</td>
<td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"><font color="#1155cc"> <a>650-943-3180</a></font></td></tr></tbody></table><br></div>
</div>