Skip to content

Conversation

@fmayer
Copy link
Contributor

@fmayer fmayer commented Jun 4, 2025

No description provided.

fmayer added 2 commits June 4, 2025 16:06
Created using spr 1.3.4
Created using spr 1.3.4
@fmayer fmayer requested a review from thurstond June 4, 2025 23:08
@fmayer fmayer marked this pull request as ready for review June 4, 2025 23:08
@llvmbot
Copy link
Member

llvmbot commented Jun 4, 2025

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: Florian Mayer (fmayer)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/142874.diff

1 Files Affected:

  • (added) compiler-rt/test/hwasan/TestCases/Posix/dlerror.cpp (+30)
diff --git a/compiler-rt/test/hwasan/TestCases/Posix/dlerror.cpp b/compiler-rt/test/hwasan/TestCases/Posix/dlerror.cpp
new file mode 100644
index 0000000000000..2b8269852d50b
--- /dev/null
+++ b/compiler-rt/test/hwasan/TestCases/Posix/dlerror.cpp
@@ -0,0 +1,30 @@
+// Make sure dlerror is not classified as a leak even if we use dynamic TLS.
+// This is currently not implemented, so this test is XFAIL.
+
+// RUN: %clangxx_hwasan -O0 %s -o %t && HWASAN_OPTIONS=detect_leaks=1 %run %t
+// XFAIL: *
+
+#include <assert.h>
+#include <dlfcn.h>
+#include <pthread.h>
+#include <sanitizer/hwasan_interface.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+constexpr auto kKeys = 100;
+
+int main(int argc, char **argv) {
+  __hwasan_enable_allocator_tagging();
+  // Exhaust static TLS slots to force use of dynamic TLS.
+  pthread_key_t keys[kKeys];
+  for (int i = 0; i < kKeys; ++i) {
+    assert(pthread_key_create(&keys[i], nullptr) == 0);
+  }
+  void* o = dlopen("invalid_file_name.so", 0);
+  const char* err = dlerror();
+  for (int i = 0; i < kKeys; ++i) {
+    assert(pthread_key_delete(keys[i]) == 0);
+  }
+  return 0;
+}

@github-actions
Copy link

github-actions bot commented Jun 4, 2025

✅ With the latest revision this PR passed the C/C++ code formatter.

Created using spr 1.3.4
Created using spr 1.3.4
@fmayer fmayer merged commit dbee0d5 into main Jun 5, 2025
10 checks passed
@fmayer fmayer deleted the users/fmayer/spr/nfci-hwasan-add-test-demonstrating-hwasan-lsan-false-positive branch June 5, 2025 03:02
@llvm-ci
Copy link
Collaborator

llvm-ci commented Jun 5, 2025

LLVM Buildbot has detected a new failure on builder sanitizer-aarch64-linux running on sanitizer-buildbot7 while building compiler-rt at step 2 "annotate".

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

Here is the relevant piece of the build log for the reference
Step 2 (annotate) failure: 'python ../sanitizer_buildbot/sanitizers/zorg/buildbot/builders/sanitizers/buildbot_selector.py' (failure)
...
[183/186] Generating Msan-aarch64-with-call-Test
[184/186] Generating MSAN_INST_TEST_OBJECTS.msan_test.cpp.aarch64.o
[185/186] Generating Msan-aarch64-Test
[185/186] Running compiler_rt regression tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/discovery.py:276: warning: input '/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/interception/Unit' contained no tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/discovery.py:276: warning: input '/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/sanitizer_common/Unit' contained no tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/main.py:73: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 5924 tests, 72 workers --
Testing:  0.. 10.. 20.
XPASS: HWAddressSanitizer-aarch64 :: TestCases/Posix/dlerror.cpp (1557 of 5924)
******************** TEST 'HWAddressSanitizer-aarch64 :: TestCases/Posix/dlerror.cpp' FAILED ********************
Exit Code: 0

Command Output (stderr):
--
/home/b/sanitizer-aarch64-linux/build/build_default/./bin/clang  --driver-mode=g++   -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta   -gline-tables-only -fsanitize=hwaddress -fuse-ld=lld -mllvm -hwasan-globals -mllvm -hwasan-use-short-granules -mllvm -hwasan-instrument-landing-pads=0 -mllvm -hwasan-instrument-personality-functions -O0 /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/hwasan/TestCases/Posix/dlerror.cpp -o /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/hwasan/AARCH64/TestCases/Posix/Output/dlerror.cpp.tmp && HWASAN_OPTIONS=detect_leaks=1  /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/hwasan/AARCH64/TestCases/Posix/Output/dlerror.cpp.tmp # RUN: at line 4
+ /home/b/sanitizer-aarch64-linux/build/build_default/./bin/clang --driver-mode=g++ -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta -gline-tables-only -fsanitize=hwaddress -fuse-ld=lld -mllvm -hwasan-globals -mllvm -hwasan-use-short-granules -mllvm -hwasan-instrument-landing-pads=0 -mllvm -hwasan-instrument-personality-functions -O0 /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/hwasan/TestCases/Posix/dlerror.cpp -o /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/hwasan/AARCH64/TestCases/Posix/Output/dlerror.cpp.tmp
+ HWASAN_OPTIONS=detect_leaks=1
+ /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/hwasan/AARCH64/TestCases/Posix/Output/dlerror.cpp.tmp

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 

2 warning(s) in tests
Slowest Tests:
--------------------------------------------------------------------------
28.28s: ThreadSanitizer-aarch64 :: bench_threads.cpp
27.25s: ThreadSanitizer-aarch64 :: restore_stack.cpp
20.84s: ThreadSanitizer-aarch64 :: signal_thread.cpp
20.13s: libFuzzer-aarch64-default-Linux :: value-profile-set.test
19.37s: libFuzzer-aarch64-libcxx-Linux :: value-profile-set.test
17.75s: libFuzzer-aarch64-static-libcxx-Linux :: value-profile-set.test
16.74s: HWAddressSanitizer-aarch64 :: TestCases/Linux/create-thread-stress.cpp
16.51s: libFuzzer-aarch64-default-Linux :: value-profile-switch.test
15.46s: libFuzzer-aarch64-default-Linux :: minimize_timeout.test
14.40s: ThreadSanitizer-aarch64 :: compare_exchange_acquire_fence.cpp
13.92s: libFuzzer-aarch64-libcxx-Linux :: value-profile-switch.test
13.84s: Profile-aarch64 :: Posix/instrprof-value-prof-shared.test
12.87s: libFuzzer-aarch64-static-libcxx-Linux :: value-profile-switch.test
12.17s: DataFlowSanitizer-aarch64 :: custom.cpp
11.52s: ThreadSanitizer-aarch64 :: stress.cpp
11.52s: libFuzzer-aarch64-static-libcxx-Linux :: minimize_timeout.test
11.20s: libFuzzer-aarch64-default-Linux :: value-profile-cmp.test
10.67s: AddressSanitizer-Unit :: ./Asan-aarch64-calls-Noinst-Test/AddressSanitizer/ThreadedQuarantineTest
10.54s: libFuzzer-aarch64-default-Linux :: minimize_crash.test
10.50s: libFuzzer-aarch64-static-libcxx-Linux :: minimize_crash.test

Step 9 (test compiler-rt symbolizer) failure: test compiler-rt symbolizer (failure)
...
[183/186] Generating Msan-aarch64-with-call-Test
[184/186] Generating MSAN_INST_TEST_OBJECTS.msan_test.cpp.aarch64.o
[185/186] Generating Msan-aarch64-Test
[185/186] Running compiler_rt regression tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/discovery.py:276: warning: input '/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/interception/Unit' contained no tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/discovery.py:276: warning: input '/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/sanitizer_common/Unit' contained no tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/main.py:73: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 5924 tests, 72 workers --
Testing:  0.. 10.. 20.
XPASS: HWAddressSanitizer-aarch64 :: TestCases/Posix/dlerror.cpp (1557 of 5924)
******************** TEST 'HWAddressSanitizer-aarch64 :: TestCases/Posix/dlerror.cpp' FAILED ********************
Exit Code: 0

Command Output (stderr):
--
/home/b/sanitizer-aarch64-linux/build/build_default/./bin/clang  --driver-mode=g++   -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta   -gline-tables-only -fsanitize=hwaddress -fuse-ld=lld -mllvm -hwasan-globals -mllvm -hwasan-use-short-granules -mllvm -hwasan-instrument-landing-pads=0 -mllvm -hwasan-instrument-personality-functions -O0 /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/hwasan/TestCases/Posix/dlerror.cpp -o /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/hwasan/AARCH64/TestCases/Posix/Output/dlerror.cpp.tmp && HWASAN_OPTIONS=detect_leaks=1  /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/hwasan/AARCH64/TestCases/Posix/Output/dlerror.cpp.tmp # RUN: at line 4
+ /home/b/sanitizer-aarch64-linux/build/build_default/./bin/clang --driver-mode=g++ -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta -gline-tables-only -fsanitize=hwaddress -fuse-ld=lld -mllvm -hwasan-globals -mllvm -hwasan-use-short-granules -mllvm -hwasan-instrument-landing-pads=0 -mllvm -hwasan-instrument-personality-functions -O0 /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/hwasan/TestCases/Posix/dlerror.cpp -o /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/hwasan/AARCH64/TestCases/Posix/Output/dlerror.cpp.tmp
+ HWASAN_OPTIONS=detect_leaks=1
+ /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/hwasan/AARCH64/TestCases/Posix/Output/dlerror.cpp.tmp

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..

2 warning(s) in tests
Slowest Tests:
--------------------------------------------------------------------------
28.28s: ThreadSanitizer-aarch64 :: bench_threads.cpp
27.25s: ThreadSanitizer-aarch64 :: restore_stack.cpp
20.84s: ThreadSanitizer-aarch64 :: signal_thread.cpp
20.13s: libFuzzer-aarch64-default-Linux :: value-profile-set.test
19.37s: libFuzzer-aarch64-libcxx-Linux :: value-profile-set.test
17.75s: libFuzzer-aarch64-static-libcxx-Linux :: value-profile-set.test
16.74s: HWAddressSanitizer-aarch64 :: TestCases/Linux/create-thread-stress.cpp
16.51s: libFuzzer-aarch64-default-Linux :: value-profile-switch.test
15.46s: libFuzzer-aarch64-default-Linux :: minimize_timeout.test
14.40s: ThreadSanitizer-aarch64 :: compare_exchange_acquire_fence.cpp
13.92s: libFuzzer-aarch64-libcxx-Linux :: value-profile-switch.test
13.84s: Profile-aarch64 :: Posix/instrprof-value-prof-shared.test
12.87s: libFuzzer-aarch64-static-libcxx-Linux :: value-profile-switch.test
12.17s: DataFlowSanitizer-aarch64 :: custom.cpp
11.52s: ThreadSanitizer-aarch64 :: stress.cpp
11.52s: libFuzzer-aarch64-static-libcxx-Linux :: minimize_timeout.test
11.20s: libFuzzer-aarch64-default-Linux :: value-profile-cmp.test
10.67s: AddressSanitizer-Unit :: ./Asan-aarch64-calls-Noinst-Test/AddressSanitizer/ThreadedQuarantineTest
10.54s: libFuzzer-aarch64-default-Linux :: minimize_crash.test
10.50s: libFuzzer-aarch64-static-libcxx-Linux :: minimize_crash.test


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants