[Lldb-commits] [lldb] r272407 - SBThread also had some places where it got the ExecutionContext w/o

Jim Ingham via lldb-commits lldb-commits at lists.llvm.org
Fri Jun 10 10:22:26 PDT 2016


Author: jingham
Date: Fri Jun 10 12:22:26 2016
New Revision: 272407

URL: http://llvm.org/viewvc/llvm-project?rev=272407&view=rev
Log:
SBThread also had some places where it got the ExecutionContext w/o 
taking the API lock.

Modified:
    lldb/trunk/source/API/SBThread.cpp

Modified: lldb/trunk/source/API/SBThread.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBThread.cpp?rev=272407&r1=272406&r2=272407&view=diff
==============================================================================
--- lldb/trunk/source/API/SBThread.cpp (original)
+++ lldb/trunk/source/API/SBThread.cpp Fri Jun 10 12:22:26 2016
@@ -325,7 +325,9 @@ SBThread::GetStopReasonExtendedInfoAsJSO
 {
     Stream &strm = stream.ref();
     
-    ExecutionContext exe_ctx (m_opaque_sp.get());
+    std::unique_lock<std::recursive_mutex> lock;
+    ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
+
     if (! exe_ctx.HasThreadScope())
         return false;
 
@@ -350,7 +352,9 @@ SBThread::GetStopReasonExtendedBacktrace
     if (type != eInstrumentationRuntimeTypeThreadSanitizer)
         return threads;
     
-    ExecutionContext exe_ctx (m_opaque_sp.get());
+    std::unique_lock<std::recursive_mutex> lock;
+    ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
+
     if (! exe_ctx.HasThreadScope())
         return threads;
     
@@ -1250,7 +1254,9 @@ bool
 SBThread::Suspend()
 {
     Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
-    ExecutionContext exe_ctx (m_opaque_sp.get());
+    std::unique_lock<std::recursive_mutex> lock;
+    ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
+
     bool result = false;
     if (exe_ctx.HasThreadScope())
     {
@@ -1277,7 +1283,9 @@ bool
 SBThread::Resume ()
 {
     Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
-    ExecutionContext exe_ctx (m_opaque_sp.get());
+    std::unique_lock<std::recursive_mutex> lock;
+    ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
+
     bool result = false;
     if (exe_ctx.HasThreadScope())
     {
@@ -1304,7 +1312,9 @@ SBThread::Resume ()
 bool
 SBThread::IsSuspended()
 {
-    ExecutionContext exe_ctx (m_opaque_sp.get());
+    std::unique_lock<std::recursive_mutex> lock;
+    ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
+
     if (exe_ctx.HasThreadScope())
         return exe_ctx.GetThreadPtr()->GetResumeState () == eStateSuspended;
     return false;
@@ -1313,7 +1323,9 @@ SBThread::IsSuspended()
 bool
 SBThread::IsStopped()
 {
-    ExecutionContext exe_ctx (m_opaque_sp.get());
+    std::unique_lock<std::recursive_mutex> lock;
+    ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
+
     if (exe_ctx.HasThreadScope())
         return StateIsStoppedState(exe_ctx.GetThreadPtr()->GetState(), true);
     return false;
@@ -1323,7 +1335,9 @@ SBProcess
 SBThread::GetProcess ()
 {
     SBProcess sb_process;
-    ExecutionContext exe_ctx (m_opaque_sp.get());
+    std::unique_lock<std::recursive_mutex> lock;
+    ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
+
     if (exe_ctx.HasThreadScope())
     {
         // Have to go up to the target so we can get a shared pointer to our process...
@@ -1532,7 +1546,9 @@ SBThread::GetStatus (SBStream &status) c
 {
     Stream &strm = status.ref();
 
-    ExecutionContext exe_ctx (m_opaque_sp.get());
+    std::unique_lock<std::recursive_mutex> lock;
+    ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
+
     if (exe_ctx.HasThreadScope())
     {
         exe_ctx.GetThreadPtr()->GetStatus(strm, 0, 1, 1);
@@ -1548,7 +1564,9 @@ SBThread::GetDescription (SBStream &desc
 {
     Stream &strm = description.ref();
 
-    ExecutionContext exe_ctx (m_opaque_sp.get());
+    std::unique_lock<std::recursive_mutex> lock;
+    ExecutionContext exe_ctx(m_opaque_sp.get(), lock);
+
     if (exe_ctx.HasThreadScope())
     {
         exe_ctx.GetThreadPtr()->DumpUsingSettingsFormat(strm, LLDB_INVALID_THREAD_ID);




More information about the lldb-commits mailing list