Author: labath Date: Tue Apr 19 09:03:43 2016 New Revision: 266736 URL: http://llvm.org/viewvc/llvm-project?rev=266736&view=rev Log: Revert "LLDB: Fixed two race conditions when stopping private state thread"
This reverts commit r266733 as it causes a number of failures on linux buildbots. Modified: lldb/trunk/include/lldb/Target/Process.h lldb/trunk/source/Target/Process.cpp Modified: lldb/trunk/include/lldb/Target/Process.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Process.h?rev=266736&r1=266735&r2=266736&view=diff ============================================================================== --- lldb/trunk/include/lldb/Target/Process.h (original) +++ lldb/trunk/include/lldb/Target/Process.h Tue Apr 19 09:03:43 2016 @@ -3310,10 +3310,7 @@ protected: bool PrivateStateThreadIsValid () const { - lldb::StateType state = m_private_state.GetValue(); - return state != lldb::eStateDetached && - state != lldb::eStateExited && - m_private_state_thread.IsJoinable(); + return m_private_state_thread.IsJoinable(); } void Modified: lldb/trunk/source/Target/Process.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Process.cpp?rev=266736&r1=266735&r2=266736&view=diff ============================================================================== --- lldb/trunk/source/Target/Process.cpp (original) +++ lldb/trunk/source/Target/Process.cpp Tue Apr 19 09:03:43 2016 @@ -4112,8 +4112,11 @@ Process::ControlPrivateStateThread (uint if (log) log->Printf ("Process::%s (signal = %d)", __FUNCTION__, signal); - // Signal the private state thread - if (PrivateStateThreadIsValid()) + // Signal the private state thread. First we should copy this is case the + // thread starts exiting since the private state thread will NULL this out + // when it exits + HostThread private_state_thread(m_private_state_thread); + if (private_state_thread.IsJoinable()) { TimeValue timeout_time; bool timed_out; @@ -4131,7 +4134,7 @@ Process::ControlPrivateStateThread (uint { if (timed_out) { - Error error = m_private_state_thread.Cancel(); + Error error = private_state_thread.Cancel(); if (log) log->Printf ("Timed out responding to the control event, cancel got error: \"%s\".", error.AsCString()); } @@ -4142,7 +4145,7 @@ Process::ControlPrivateStateThread (uint } thread_result_t result = NULL; - m_private_state_thread.Join(&result); + private_state_thread.Join(&result); m_private_state_thread.Reset(); } } @@ -4446,6 +4449,7 @@ Process::RunPrivateStateThread (bool is_ if (!is_secondary_thread) m_public_run_lock.SetStopped(); m_private_state_control_wait.SetValue (true, eBroadcastAlways); + m_private_state_thread.Reset(); return NULL; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits