summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Linux
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Process/Linux')
-rw-r--r--lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
index 0551596f4cc..dfc92887fa8 100644
--- a/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
+++ b/lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp
@@ -1794,14 +1794,20 @@ NativeProcessLinux::Detach ()
{
Error error;
- // Tell ptrace to detach from the process.
- if (GetID () != LLDB_INVALID_PROCESS_ID)
- error = Detach (GetID ());
-
// Stop monitoring the inferior.
m_sigchld_handle.reset();
- // No error.
+ // Tell ptrace to detach from the process.
+ if (GetID () == LLDB_INVALID_PROCESS_ID)
+ return error;
+
+ for (auto thread_sp : m_threads)
+ {
+ Error e = Detach(thread_sp->GetID());
+ if (e.Fail())
+ error = e; // Save the error, but still attempt to detach from other threads.
+ }
+
return error;
}
OpenPOWER on IntegriCloud