[Lldb-commits] [lldb] r157875 - /lldb/trunk/source/Target/Process.cpp
Sean Callanan
scallanan at apple.com
Fri Jun 1 18:16:20 PDT 2012
Author: spyffe
Date: Fri Jun 1 20:16:20 2012
New Revision: 157875
URL: http://llvm.org/viewvc/llvm-project?rev=157875&view=rev
Log:
Fixed a problem where detaching from a process
left a read-write lock dangling, causing crashes
in debug builds.
Modified:
lldb/trunk/source/Target/Process.cpp
Modified: lldb/trunk/source/Target/Process.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Process.cpp?rev=157875&r1=157874&r2=157875&view=diff
==============================================================================
--- lldb/trunk/source/Target/Process.cpp (original)
+++ lldb/trunk/source/Target/Process.cpp Fri Jun 1 20:16:20 2012
@@ -1299,15 +1299,24 @@
// to tell the program to run.
if (!IsHijackedForEvent(eBroadcastBitStateChanged))
{
- const bool old_state_is_stopped = StateIsStoppedState(old_state, false);
- const bool new_state_is_stopped = StateIsStoppedState(new_state, false);
- if (old_state_is_stopped != new_state_is_stopped)
+ if (new_state == eStateDetached)
{
- if (new_state_is_stopped)
+ if (log)
+ log->Printf("Process::SetPublicState (%s) -- unlocking run lock for detach", StateAsCString(new_state));
+ m_run_lock.WriteUnlock();
+ }
+ else
+ {
+ const bool old_state_is_stopped = StateIsStoppedState(old_state, false);
+ const bool new_state_is_stopped = StateIsStoppedState(new_state, false);
+ if (old_state_is_stopped != new_state_is_stopped)
{
- if (log)
- log->Printf("Process::SetPublicState (%s) -- unlocking run lock", StateAsCString(new_state));
- m_run_lock.WriteUnlock();
+ if (new_state_is_stopped)
+ {
+ if (log)
+ log->Printf("Process::SetPublicState (%s) -- unlocking run lock", StateAsCString(new_state));
+ m_run_lock.WriteUnlock();
+ }
}
}
}
More information about the lldb-commits
mailing list