[Lldb-commits] [PATCH] Fix debuggee termination from ProcessPOSIX::DoDestroy

Ed Maste emaste at freebsd.org
Wed Mar 26 09:42:54 PDT 2014


  Fix silly errors spotted by Todd, and correct the sense of the m_monitor->Kill() return value check.

Hi tfiala,

http://llvm-reviews.chandlerc.com/D3159

CHANGE SINCE LAST DIFF
  http://llvm-reviews.chandlerc.com/D3159?vs=8057&id=8136#toc

Files:
  source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
  source/Plugins/Process/FreeBSD/ProcessMonitor.h
  source/Plugins/Process/Linux/ProcessMonitor.cpp
  source/Plugins/Process/Linux/ProcessMonitor.h
  source/Plugins/Process/POSIX/ProcessPOSIX.cpp

Index: source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
===================================================================
--- source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+++ source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
@@ -702,7 +702,7 @@
 
 //------------------------------------------------------------------------------
 /// @class KillOperation
-/// @brief Implements ProcessMonitor::BringProcessIntoLimbo.
+/// @brief Implements ProcessMonitor::Kill.
 class KillOperation : public Operation
 {
 public:
@@ -1648,7 +1648,7 @@
 }
 
 bool
-ProcessMonitor::BringProcessIntoLimbo()
+ProcessMonitor::Kill()
 {
     bool result;
     KillOperation op(result);
Index: source/Plugins/Process/FreeBSD/ProcessMonitor.h
===================================================================
--- source/Plugins/Process/FreeBSD/ProcessMonitor.h
+++ source/Plugins/Process/FreeBSD/ProcessMonitor.h
@@ -194,11 +194,9 @@
     bool
     SingleStep(lldb::tid_t unused, uint32_t signo);
 
-    /// Sends the inferior process a PTRACE_KILL signal.  The inferior will
-    /// still exists and can be interrogated.  Once resumed it will exit as
-    /// though it received a SIGKILL.
+    /// Terminate the traced process.
     bool
-    BringProcessIntoLimbo();
+    Kill();
 
     lldb_private::Error
     Detach(lldb::tid_t tid);
Index: source/Plugins/Process/Linux/ProcessMonitor.cpp
===================================================================
--- source/Plugins/Process/Linux/ProcessMonitor.cpp
+++ source/Plugins/Process/Linux/ProcessMonitor.cpp
@@ -904,31 +904,6 @@
 }
 
 //------------------------------------------------------------------------------
-/// @class KillOperation
-/// @brief Implements ProcessMonitor::BringProcessIntoLimbo.
-class KillOperation : public Operation
-{
-public:
-    KillOperation(bool &result) : m_result(result) { }
-
-    void Execute(ProcessMonitor *monitor);
-
-private:
-    bool &m_result;
-};
-
-void
-KillOperation::Execute(ProcessMonitor *monitor)
-{
-    lldb::pid_t pid = monitor->GetPID();
-
-    if (PTRACE(PTRACE_KILL, pid, NULL, NULL, 0))
-        m_result = false;
-    else
-        m_result = true;
-}
-
-//------------------------------------------------------------------------------
 /// @class DetachOperation
 /// @brief Implements ProcessMonitor::Detach.
 class DetachOperation : public Operation
@@ -2229,12 +2204,9 @@
 }
 
 bool
-ProcessMonitor::BringProcessIntoLimbo()
+ProcessMonitor::Kill()
 {
-    bool result;
-    KillOperation op(result);
-    DoOperation(&op);
-    return result;
+    return kill(GetPID(), SIGKILL) == 0;
 }
 
 bool
Index: source/Plugins/Process/Linux/ProcessMonitor.h
===================================================================
--- source/Plugins/Process/Linux/ProcessMonitor.h
+++ source/Plugins/Process/Linux/ProcessMonitor.h
@@ -172,11 +172,9 @@
     bool
     SingleStep(lldb::tid_t tid, uint32_t signo);
 
-    /// Sends the inferior process a PTRACE_KILL signal.  The inferior will
-    /// still exists and can be interrogated.  Once resumed it will exit as
-    /// though it received a SIGKILL.
+    /// Terminate the traced process.
     bool
-    BringProcessIntoLimbo();
+    Kill();
 
     lldb_private::Error
     Detach(lldb::tid_t tid);
Index: source/Plugins/Process/POSIX/ProcessPOSIX.cpp
===================================================================
--- source/Plugins/Process/POSIX/ProcessPOSIX.cpp
+++ source/Plugins/Process/POSIX/ProcessPOSIX.cpp
@@ -339,7 +339,7 @@
     {
         assert (m_monitor);
         m_exit_now = true;
-        if (m_monitor->BringProcessIntoLimbo())
+        if (!m_monitor->Kill())
         {
             error.SetErrorToErrno();
             return error;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3159.2.patch
Type: text/x-patch
Size: 3718 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20140326/1b671a17/attachment.bin>


More information about the lldb-commits mailing list