Author: Augusto Noronha Date: 2023-08-04T16:01:20-07:00 New Revision: d75dc9a8a86c4f69408dcab3a21416729d14652e
URL: https://github.com/llvm/llvm-project/commit/d75dc9a8a86c4f69408dcab3a21416729d14652e DIFF: https://github.com/llvm/llvm-project/commit/d75dc9a8a86c4f69408dcab3a21416729d14652e.diff LOG: [lldb] Fix ThreadList::Update not locking the rhs's mutex ThreadList::Update is being caught by thread sanitizer. There's even a comment on the function that both mutexes should be lock (even though only the "this" mutex was actually being locked). Fix this by locking both mutexes. Differential Revision: https://reviews.llvm.org/D157153 Added: Modified: lldb/source/Target/ThreadList.cpp Removed: ################################################################################ diff --git a/lldb/source/Target/ThreadList.cpp b/lldb/source/Target/ThreadList.cpp index 006c8648be524a..c5c3f667c90471 100644 --- a/lldb/source/Target/ThreadList.cpp +++ b/lldb/source/Target/ThreadList.cpp @@ -736,7 +736,7 @@ void ThreadList::Update(ThreadList &rhs) { if (this != &rhs) { // Lock both mutexes to make sure neither side changes anyone on us while // the assignment occurs - std::lock_guard<std::recursive_mutex> guard(GetMutex()); + std::scoped_lock guard(GetMutex(), rhs.GetMutex()); m_process = rhs.m_process; m_stop_id = rhs.m_stop_id; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits