Author: Kadir Cetinkaya Date: 2024-05-08T12:00:54+02:00 New Revision: aefad851672e6dd17592895066a39aa5b388e5db
URL: https://github.com/llvm/llvm-project/commit/aefad851672e6dd17592895066a39aa5b388e5db DIFF: https://github.com/llvm/llvm-project/commit/aefad851672e6dd17592895066a39aa5b388e5db.diff LOG: [clangd] Fix data race surfaced in clangd-tsan buildbot We can have concurrent accesses to same PreambleData (e.g. code-completion and ast-builds). Hence we need to deep copy TargetOpts. Added: Modified: clang-tools-extra/clangd/Preamble.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clangd/Preamble.cpp b/clang-tools-extra/clangd/Preamble.cpp index d5818e0ca309b..ecd490145dd3c 100644 --- a/clang-tools-extra/clangd/Preamble.cpp +++ b/clang-tools-extra/clangd/Preamble.cpp @@ -918,7 +918,9 @@ void PreamblePatch::apply(CompilerInvocation &CI) const { // no guarantees around using arbitrary options when reusing PCHs, and // diff erent target opts can result in crashes, see // ParsedASTTest.PreambleWithDifferentTarget. - CI.TargetOpts = Baseline->TargetOpts; + // Make sure this is a deep copy, as the same Baseline might be used + // concurrently. + *CI.TargetOpts = *Baseline->TargetOpts; // No need to map an empty file. if (PatchContents.empty()) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits