diff options
author | Jim Ingham <jingham@apple.com> | 2012-09-10 20:50:15 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2012-09-10 20:50:15 +0000 |
commit | 41f2b940c974b0ef7082a638cd23f128e167e8d1 (patch) | |
tree | 5c6eb0f38531bfe13996f7c78eb6d8b47f12cc4d | |
parent | 7acbf00f969095bf517bd5b234f634d6c56d085c (diff) | |
download | bcm5719-llvm-41f2b940c974b0ef7082a638cd23f128e167e8d1.tar.gz bcm5719-llvm-41f2b940c974b0ef7082a638cd23f128e167e8d1.zip |
Fixed a few places where we were doing:
uint32_t size = ThreadList.GetSize();
for (i=0; i < size; ++i)
without grabbing the thread list mutex.
llvm-svn: 163541
-rw-r--r-- | lldb/source/Commands/CommandObjectProcess.cpp | 15 | ||||
-rw-r--r-- | lldb/source/Commands/CommandObjectThread.cpp | 2 | ||||
-rw-r--r-- | lldb/source/Target/Process.cpp | 1 |
3 files changed, 12 insertions, 6 deletions
diff --git a/lldb/source/Commands/CommandObjectProcess.cpp b/lldb/source/Commands/CommandObjectProcess.cpp index e744b58dc5b..f1d3eb38d7d 100644 --- a/lldb/source/Commands/CommandObjectProcess.cpp +++ b/lldb/source/Commands/CommandObjectProcess.cpp @@ -792,14 +792,17 @@ protected: } } - const uint32_t num_threads = process->GetThreadList().GetSize(); + { // Scope for thread list mutex: + Mutex::Locker locker (process->GetThreadList().GetMutex()); + const uint32_t num_threads = process->GetThreadList().GetSize(); - // Set the actions that the threads should each take when resuming - for (uint32_t idx=0; idx<num_threads; ++idx) - { - process->GetThreadList().GetThreadAtIndex(idx)->SetResumeState (eStateRunning); + // Set the actions that the threads should each take when resuming + for (uint32_t idx=0; idx<num_threads; ++idx) + { + process->GetThreadList().GetThreadAtIndex(idx)->SetResumeState (eStateRunning); + } } - + Error error(process->Resume()); if (error.Success()) { diff --git a/lldb/source/Commands/CommandObjectThread.cpp b/lldb/source/Commands/CommandObjectThread.cpp index 7cb8273cf39..93ecf36fdd2 100644 --- a/lldb/source/Commands/CommandObjectThread.cpp +++ b/lldb/source/Commands/CommandObjectThread.cpp @@ -185,6 +185,7 @@ protected: else if (command.GetArgumentCount() == 1 && ::strcmp (command.GetArgumentAtIndex(0), "all") == 0) { Process *process = m_interpreter.GetExecutionContext().GetProcessPtr(); + Mutex::Locker locker (process->GetThreadList().GetMutex()); uint32_t num_threads = process->GetThreadList().GetSize(); for (uint32_t i = 0; i < num_threads; i++) { @@ -208,6 +209,7 @@ protected: { uint32_t num_args = command.GetArgumentCount(); Process *process = m_interpreter.GetExecutionContext().GetProcessPtr(); + Mutex::Locker locker (process->GetThreadList().GetMutex()); std::vector<ThreadSP> thread_sps; for (uint32_t i = 0; i < num_args; i++) diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index 918f98c369c..da537adabf8 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -4860,6 +4860,7 @@ Process::GetThreadStatus (Stream &strm, { size_t num_thread_infos_dumped = 0; + Mutex::Locker locker (GetThreadList().GetMutex()); const size_t num_threads = GetThreadList().GetSize(); for (uint32_t i = 0; i < num_threads; i++) { |