From 4904b7396988bd7fd9319e26eaa5cdfa7ce98f60 Mon Sep 17 00:00:00 2001 From: Eugene Zhulenev Date: Fri, 30 Aug 2024 14:17:27 -0700 Subject: [PATCH 1/2] Fix tsan race in PerfJITEventListener.cpp --- .../ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp b/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp index e2b5ce49ba2ec..b7b07cc41129e 100644 --- a/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp +++ b/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp @@ -60,6 +60,10 @@ class PerfJITEventListener : public JITEventListener { public: PerfJITEventListener(); ~PerfJITEventListener() { + // Lock a mutex to correctly synchronize with prior calls to + // `notifyObjectLoaded` and `notifyFreeingObject` that happened on other + // threads to prevent tsan from complaining. + std::lock_guard Guard(Mutex); if (MarkerAddr) CloseMarker(); } From cde2173c5066b233a3098a77232ffbf92c58d7c8 Mon Sep 17 00:00:00 2001 From: Eugene Zhulenev Date: Fri, 30 Aug 2024 14:27:27 -0700 Subject: [PATCH 2/2] Update PerfJITEventListener.cpp --- llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp b/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp index b7b07cc41129e..cf9ed7dbff153 100644 --- a/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp +++ b/llvm/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp @@ -63,7 +63,7 @@ class PerfJITEventListener : public JITEventListener { // Lock a mutex to correctly synchronize with prior calls to // `notifyObjectLoaded` and `notifyFreeingObject` that happened on other // threads to prevent tsan from complaining. - std::lock_guard Guard(Mutex); + std::lock_guard Guard(Mutex); if (MarkerAddr) CloseMarker(); }