[libcxx-commits] [libcxx] [libc++] Add thread safety annotations for std::lock (PR #154078)

LLVM Continuous Integration via libcxx-commits libcxx-commits at lists.llvm.org
Tue Sep 2 23:43:38 PDT 2025


llvm-ci wrote:

LLVM Buildbot has detected a new failure on builder `sanitizer-aarch64-linux-fuzzer` running on `sanitizer-buildbot12` while building `libcxx` at step 2 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/159/builds/30029

<details>
<summary>Here is the relevant piece of the build log for the reference</summary>

```
Step 2 (annotate) failure: 'python ../sanitizer_buildbot/sanitizers/zorg/buildbot/builders/sanitizers/buildbot_selector.py' (failure)
...
[2652/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerExtFunctionsWeak.cpp.o
[2653/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer_main.aarch64.dir/FuzzerMain.cpp.o
[2654/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerSHA1.cpp.o
[2655/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerCrossOver.cpp.o
[2656/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerIOPosix.cpp.o
[2657/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerUtilLinux.cpp.o
[2658/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerUtilPosix.cpp.o
[2659/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerUtil.cpp.o
[2660/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerIO.cpp.o
[2661/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerMerge.cpp.o
FAILED: compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerMerge.cpp.o 
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/./bin/clang++ --target=aarch64-unknown-linux-gnu -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/../../include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -Wno-unused-parameter -O3 -DNDEBUG -std=c++17 -march=armv8-a -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fno-stack-protector -fno-sanitize=safe-stack -fvisibility=hidden -fno-lto -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta -O3 -gline-tables-only -Wno-gnu -Wno-variadic-macros -Wno-c99-extensions -ftrivial-auto-var-init=pattern -D_LIBCPP_ABI_VERSION=Fuzzer -nostdinc++ -fno-omit-frame-pointer -isystem /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1 -MD -MT compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerMerge.cpp.o -MF compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerMerge.cpp.o.d -o compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerMerge.cpp.o -c /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerMerge.cpp
In file included from /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerMerge.cpp:11:
In file included from /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerCommand.h:15:
In file included from /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerDefs.h:19:
In file included from /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/set:537:
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1050:46: error: no matching member function for call to '__find_equal'
 1050 |               __node_base_pointer& __child = __find_equal(__parent, __key);
      |                                              ^~~~~~~~~~~~
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1041:75: note: while substituting into a lambda expression here
 1041 |           [this, &__max_node](const key_type& __key, __reference&& __val) {
      |                                                                           ^
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/set:746:13: note: in instantiation of function template specialization 'std::__tree<unsigned int, std::less<unsigned int>, std::allocator<unsigned int>>::__insert_range_unique<std::__wrap_iter<unsigned int *>, std::__wrap_iter<unsigned int *>>' requested here
  746 |     __tree_.__insert_range_unique(__first, __last);
      |             ^
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerMerge.cpp:153:17: note: in instantiation of function template specialization 'std::set<unsigned int>::insert<std::__wrap_iter<unsigned int *>>' requested here
  153 |     AllFeatures.insert(Cur.begin(), Cur.end());
      |                 ^
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1177:72: note: candidate function template not viable: requires single argument '__v', but 2 arguments were provided
 1177 |   _LIBCPP_HIDE_FROM_ABI pair<__end_node_pointer, __node_base_pointer&> __find_equal(const _Key& __v) const {
      |                                                                        ^            ~~~~~~~~~~~~~~~
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1174:72: note: candidate function template not viable: requires single argument '__v', but 2 arguments were provided
 1174 |   _LIBCPP_HIDE_FROM_ABI pair<__end_node_pointer, __node_base_pointer&> __find_equal(const _Key& __v);
      |                                                                        ^            ~~~~~~~~~~~~~~~
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1183:3: note: candidate function template not viable: requires 3 arguments, but 2 were provided
 1183 |   __find_equal(const_iterator __hint, __node_base_pointer& __dummy, const _Key& __v);
      |   ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1066:46: error: no matching member function for call to '__find_equal'
 1066 |               __node_base_pointer& __child = __find_equal(__parent, __nd->__get_value());
      |                                              ^~~~~~~~~~~~
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1057:52: note: while substituting into a lambda expression here
 1057 |           [this, &__max_node](__reference&& __val) {
      |                                                    ^
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/set:746:13: note: in instantiation of function template specialization 'std::__tree<unsigned int, std::less<unsigned int>, std::allocator<unsigned int>>::__insert_range_unique<std::__wrap_iter<unsigned int *>, std::__wrap_iter<unsigned int *>>' requested here
  746 |     __tree_.__insert_range_unique(__first, __last);
      |             ^
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerMerge.cpp:153:17: note: in instantiation of function template specialization 'std::set<unsigned int>::insert<std::__wrap_iter<unsigned int *>>' requested here
  153 |     AllFeatures.insert(Cur.begin(), Cur.end());
      |                 ^
Step 7 (stage1 build all) failure: stage1 build all (failure)
...
[2652/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerExtFunctionsWeak.cpp.o
[2653/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer_main.aarch64.dir/FuzzerMain.cpp.o
[2654/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerSHA1.cpp.o
[2655/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerCrossOver.cpp.o
[2656/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerIOPosix.cpp.o
[2657/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerUtilLinux.cpp.o
[2658/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerUtilPosix.cpp.o
[2659/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerUtil.cpp.o
[2660/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerIO.cpp.o
[2661/2670] Building CXX object compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerMerge.cpp.o
FAILED: compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerMerge.cpp.o 
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/./bin/clang++ --target=aarch64-unknown-linux-gnu -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/../../include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -Wno-unused-parameter -O3 -DNDEBUG -std=c++17 -march=armv8-a -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fno-stack-protector -fno-sanitize=safe-stack -fvisibility=hidden -fno-lto -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta -O3 -gline-tables-only -Wno-gnu -Wno-variadic-macros -Wno-c99-extensions -ftrivial-auto-var-init=pattern -D_LIBCPP_ABI_VERSION=Fuzzer -nostdinc++ -fno-omit-frame-pointer -isystem /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1 -MD -MT compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerMerge.cpp.o -MF compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerMerge.cpp.o.d -o compiler-rt/lib/fuzzer/CMakeFiles/RTfuzzer.aarch64.dir/FuzzerMerge.cpp.o -c /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerMerge.cpp
In file included from /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerMerge.cpp:11:
In file included from /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerCommand.h:15:
In file included from /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerDefs.h:19:
In file included from /home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/set:537:
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1050:46: error: no matching member function for call to '__find_equal'
 1050 |               __node_base_pointer& __child = __find_equal(__parent, __key);
      |                                              ^~~~~~~~~~~~
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1041:75: note: while substituting into a lambda expression here
 1041 |           [this, &__max_node](const key_type& __key, __reference&& __val) {
      |                                                                           ^
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/set:746:13: note: in instantiation of function template specialization 'std::__tree<unsigned int, std::less<unsigned int>, std::allocator<unsigned int>>::__insert_range_unique<std::__wrap_iter<unsigned int *>, std::__wrap_iter<unsigned int *>>' requested here
  746 |     __tree_.__insert_range_unique(__first, __last);
      |             ^
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerMerge.cpp:153:17: note: in instantiation of function template specialization 'std::set<unsigned int>::insert<std::__wrap_iter<unsigned int *>>' requested here
  153 |     AllFeatures.insert(Cur.begin(), Cur.end());
      |                 ^
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1177:72: note: candidate function template not viable: requires single argument '__v', but 2 arguments were provided
 1177 |   _LIBCPP_HIDE_FROM_ABI pair<__end_node_pointer, __node_base_pointer&> __find_equal(const _Key& __v) const {
      |                                                                        ^            ~~~~~~~~~~~~~~~
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1174:72: note: candidate function template not viable: requires single argument '__v', but 2 arguments were provided
 1174 |   _LIBCPP_HIDE_FROM_ABI pair<__end_node_pointer, __node_base_pointer&> __find_equal(const _Key& __v);
      |                                                                        ^            ~~~~~~~~~~~~~~~
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1183:3: note: candidate function template not viable: requires 3 arguments, but 2 were provided
 1183 |   __find_equal(const_iterator __hint, __node_base_pointer& __dummy, const _Key& __v);
      |   ^            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1066:46: error: no matching member function for call to '__find_equal'
 1066 |               __node_base_pointer& __child = __find_equal(__parent, __nd->__get_value());
      |                                              ^~~~~~~~~~~~
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/__tree:1057:52: note: while substituting into a lambda expression here
 1057 |           [this, &__max_node](__reference&& __val) {
      |                                                    ^
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm_build0/runtimes/runtimes-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_aarch64/include/c++/v1/set:746:13: note: in instantiation of function template specialization 'std::__tree<unsigned int, std::less<unsigned int>, std::allocator<unsigned int>>::__insert_range_unique<std::__wrap_iter<unsigned int *>, std::__wrap_iter<unsigned int *>>' requested here
  746 |     __tree_.__insert_range_unique(__first, __last);
      |             ^
/home/b/sanitizer-aarch64-linux-fuzzer/build/llvm-project/compiler-rt/lib/fuzzer/FuzzerMerge.cpp:153:17: note: in instantiation of function template specialization 'std::set<unsigned int>::insert<std::__wrap_iter<unsigned int *>>' requested here
  153 |     AllFeatures.insert(Cur.begin(), Cur.end());
      |                 ^

```

</details>

https://github.com/llvm/llvm-project/pull/154078


More information about the libcxx-commits mailing list