[Lldb-commits] [lldb] [lldb-dap] Fix mutex acquisition order for modules event. (PR #163821)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Thu Oct 16 09:51:16 PDT 2025
================
@@ -1437,7 +1437,12 @@ void DAP::EventThread() {
const bool remove_module =
event_mask & lldb::SBTarget::eBroadcastBitModulesUnloaded;
- std::lock_guard<std::mutex> guard(modules_mutex);
+ // NOTE: Both mutexes must be acquired (API mutex first, then modules
+ // mutex) to prevent deadlock when handling `modules_request`, which
+ // also requires both locks.
+ lldb::SBMutex api_mutex = GetAPIMutex();
+ std::lock_guard api_guard(api_mutex);
+ std::lock_guard modules_guard(modules_mutex);
----------------
JDevlieghere wrote:
Can we use scoped_lock (C++17)?
```suggestion
std::scoped_lock lock(api_mutex, modules_mutex);
```
https://github.com/llvm/llvm-project/pull/163821
More information about the lldb-commits
mailing list