[compiler-rt] [NFCI] [hwasan] Add test demonstrating hwasan lsan false positive (PR #142874)

via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 4 16:09:25 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

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

Author: Florian Mayer (fmayer)

<details>
<summary>Changes</summary>



---
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
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;
+}

``````````

</details>


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


More information about the llvm-commits mailing list