forked from OSchip/llvm-project
<rdar://problem/10487848>
Protect a member variable from being modified by multiple threads. llvm-svn: 145920
This commit is contained in:
parent
175c7d0da5
commit
09c3e3d7f5
|
@ -123,6 +123,7 @@ ProcessGDBRemote::ProcessGDBRemote(Target& target, Listener &listener) :
|
|||
m_gdb_comm(false),
|
||||
m_debugserver_pid (LLDB_INVALID_PROCESS_ID),
|
||||
m_last_stop_packet (),
|
||||
m_last_stop_packet_mutex (Mutex::eMutexTypeNormal),
|
||||
m_register_info (),
|
||||
m_async_broadcaster ("lldb.process.gdb-remote.async-broadcaster"),
|
||||
m_async_thread (LLDB_INVALID_HOST_THREAD),
|
||||
|
@ -1548,7 +1549,7 @@ ProcessGDBRemote::DoDestroy ()
|
|||
|
||||
if (packet_cmd == 'W' || packet_cmd == 'X')
|
||||
{
|
||||
m_last_stop_packet = response;
|
||||
SetLastStopPacket (response);
|
||||
SetExitStatus(response.GetHexU8(), NULL);
|
||||
}
|
||||
}
|
||||
|
@ -2353,12 +2354,12 @@ ProcessGDBRemote::AsyncThread (void *arg)
|
|||
case eStateStopped:
|
||||
case eStateCrashed:
|
||||
case eStateSuspended:
|
||||
process->m_last_stop_packet = response;
|
||||
process->SetLastStopPacket (response);
|
||||
process->SetPrivateState (stop_state);
|
||||
break;
|
||||
|
||||
case eStateExited:
|
||||
process->m_last_stop_packet = response;
|
||||
process->SetLastStopPacket (response);
|
||||
response.SetFilePos(1);
|
||||
process->SetExitStatus(response.GetHexU8(), NULL);
|
||||
done = true;
|
||||
|
|
|
@ -271,6 +271,12 @@ protected:
|
|||
return m_gdb_comm;
|
||||
}
|
||||
|
||||
void
|
||||
SetLastStopPacket (const StringExtractorGDBRemote &response)
|
||||
{
|
||||
lldb_private::Mutex::Locker locker (m_last_stop_packet_mutex);
|
||||
m_last_stop_packet = response;
|
||||
}
|
||||
//------------------------------------------------------------------
|
||||
/// Broadcaster event bits definitions.
|
||||
//------------------------------------------------------------------
|
||||
|
@ -284,6 +290,7 @@ protected:
|
|||
GDBRemoteCommunicationClient m_gdb_comm;
|
||||
lldb::pid_t m_debugserver_pid;
|
||||
StringExtractorGDBRemote m_last_stop_packet;
|
||||
lldb_private::Mutex m_last_stop_packet_mutex;
|
||||
GDBRemoteDynamicRegisterInfo m_register_info;
|
||||
lldb_private::Broadcaster m_async_broadcaster;
|
||||
lldb::thread_t m_async_thread;
|
||||
|
|
Loading…
Reference in New Issue