https://github.com/zahiraam updated https://github.com/llvm/llvm-project/pull/118664
>From 35f795549d25ec1358b54ebd3f2176cf8e49aeff Mon Sep 17 00:00:00 2001 From: Zahira Ammarguellat <zahira.ammarguel...@intel.com> Date: Wed, 4 Dec 2024 08:23:12 -0800 Subject: [PATCH 1/2] [NFC] Avoid data race condition. --- clang-tools-extra/clangd/TUScheduler.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clang-tools-extra/clangd/TUScheduler.cpp b/clang-tools-extra/clangd/TUScheduler.cpp index 71548b59cc3088..96045380a3f21b 100644 --- a/clang-tools-extra/clangd/TUScheduler.cpp +++ b/clang-tools-extra/clangd/TUScheduler.cpp @@ -501,6 +501,7 @@ class PreambleThread { } { + std::unique_lock<std::mutex> Lock(Mutex); WithContext Guard(std::move(CurrentReq->Ctx)); // Note that we don't make use of the ContextProvider here. // Preamble tasks are always scheduled by ASTWorker tasks, and we @@ -1329,6 +1330,7 @@ void ASTWorker::startTask(llvm::StringRef Name, std::optional<UpdateType> Update, TUScheduler::ASTActionInvalidation Invalidation) { if (RunSync) { + std::lock_guard<std::mutex> Lock(Mutex); assert(!Done && "running a task after stop()"); runTask(Name, Task); return; >From 6dd0aa3de96e017fe25605150fcca3244dc4f27d Mon Sep 17 00:00:00 2001 From: Zahira Ammarguellat <zahira.ammarguel...@intel.com> Date: Wed, 4 Dec 2024 13:50:09 -0800 Subject: [PATCH 2/2] Remove unnecessary lock. --- clang-tools-extra/clangd/TUScheduler.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/clang-tools-extra/clangd/TUScheduler.cpp b/clang-tools-extra/clangd/TUScheduler.cpp index 96045380a3f21b..75d878c9ee07a4 100644 --- a/clang-tools-extra/clangd/TUScheduler.cpp +++ b/clang-tools-extra/clangd/TUScheduler.cpp @@ -1330,7 +1330,6 @@ void ASTWorker::startTask(llvm::StringRef Name, std::optional<UpdateType> Update, TUScheduler::ASTActionInvalidation Invalidation) { if (RunSync) { - std::lock_guard<std::mutex> Lock(Mutex); assert(!Done && "running a task after stop()"); runTask(Name, Task); return; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits