[Lldb-commits] [lldb] [lldb] Make PrivateStateThread::m_is_running atomic (PR #231458)
via lldb-commits
lldb-commits at lists.llvm.org
Tue Oct 13 04:12:09 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Raphael Isemann (Teemperor)
<details>
<summary>Changes</summary>
The flag is written by the thread starting the private state thread (e.g. in Process::Attach) and read from other threads via PrivateStateThreadIsRunning(), e.g. in Process::SendAsyncInterrupt.
This patch makes the variable atomic as it's just used as a global toggle to indicate whether the thread is running.
Original TSan report:
```
Read of size 1 at 0x00010bf46a20 by main thread:
#<!-- -->0 lldb_private::Process::PrivateStateThread::IsRunning() Process.h:3340
#<!-- -->1 lldb_private::Process::PrivateStateThreadIsRunning() const Process.h:3177
#<!-- -->2 lldb_private::Process::SendAsyncInterrupt(lldb_private::Thread*) Process.cpp:4268
#<!-- -->3 lldb::SBProcess::SendAsyncInterrupt() SBProcess.cpp:701 (liblldb.24.0.0git.dylib:arm64+0xf7474)
Previous write of size 1 at 0x00010bf46a20 by thread T1 (mutexes: write M0):
#<!-- -->0 lldb_private::Process::PrivateStateThread::StartupThread() Process.cpp:4124
#<!-- -->1 lldb_private::Process::StartPrivateStateThread(lldb::StateType, bool, std::__1::shared_ptr<lldb_private::Process::PrivateStateThread>*) Process.cpp:4190
#<!-- -->2 lldb_private::Process::Attach(lldb_private::ProcessAttachInfo&) Process.cpp:3290
#<!-- -->3 PlatformPOSIX::Attach(lldb_private::ProcessAttachInfo&, lldb_private::Debugger&, lldb_private::Target*, lldb_private::Status&) PlatformPOSIX.cpp:415
#<!-- -->4 lldb_private::Target::Attach(lldb_private::ProcessAttachInfo&, lldb_private::Stream*) Target.cpp:3859
#<!-- -->5 AttachToProcess(lldb_private::ProcessAttachInfo&, lldb_private::Target&) SBTarget.cpp:102
#<!-- -->6 lldb::SBTarget::AttachToProcessWithName(lldb::SBListener&, char const*, bool, lldb::SBError&) SBTarget.cpp:534
```
assisted-by: claude
---
Full diff: https://github.com/llvm/llvm-project/pull/231458.diff
1 Files Affected:
- (modified) lldb/include/lldb/Target/Process.h (+2-1)
``````````diff
diff --git a/lldb/include/lldb/Target/Process.h b/lldb/include/lldb/Target/Process.h
index 226c58034dd65..7106d5e4e3638 100644
--- a/lldb/include/lldb/Target/Process.h
+++ b/lldb/include/lldb/Target/Process.h
@@ -11,6 +11,7 @@
#include "lldb/Host/Config.h"
+#include <atomic>
#include <climits>
#include <chrono>
@@ -3404,7 +3405,7 @@ void PruneThreadPlans();
//the < private state management.
ProcessRunLock m_public_run_lock;
ProcessRunLock m_private_run_lock;
- bool m_is_running = false;
+ std::atomic<bool> m_is_running = false;
Purpose m_purpose;
///< This will be the thread name given to the Private State HostThread when
///< it gets spun up.
``````````
</details>
https://github.com/llvm/llvm-project/pull/231458
More information about the lldb-commits
mailing list