augusto2112 created this revision. augusto2112 added reviewers: jingham, JDevlieghere. Herald added a project: All. augusto2112 requested review of this revision. Herald added a project: LLDB. Herald added a subscriber: lldb-commits.
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. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D157153 Files: lldb/source/Target/ThreadList.cpp Index: lldb/source/Target/ThreadList.cpp =================================================================== --- lldb/source/Target/ThreadList.cpp +++ lldb/source/Target/ThreadList.cpp @@ -736,7 +736,7 @@ 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;
Index: lldb/source/Target/ThreadList.cpp =================================================================== --- lldb/source/Target/ThreadList.cpp +++ lldb/source/Target/ThreadList.cpp @@ -736,7 +736,7 @@ 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