[compiler-rt] 3f87788 - tsan: add a test for on_exit

Dmitry Vyukov via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 25 23:00:47 PST 2021


Author: Dmitry Vyukov
Date: 2021-11-26T08:00:43+01:00
New Revision: 3f87788de1105c8ec4fcebb692919750869d421a

URL: https://github.com/llvm/llvm-project/commit/3f87788de1105c8ec4fcebb692919750869d421a
DIFF: https://github.com/llvm/llvm-project/commit/3f87788de1105c8ec4fcebb692919750869d421a.diff

LOG: tsan: add a test for on_exit

Depends on D114605.

Reviewed By: vitalybuka, melver

Differential Revision: https://reviews.llvm.org/D114606

Added: 
    compiler-rt/test/tsan/on_exit.cpp

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/compiler-rt/test/tsan/on_exit.cpp b/compiler-rt/test/tsan/on_exit.cpp
new file mode 100644
index 000000000000..5dd5bfa68b9d
--- /dev/null
+++ b/compiler-rt/test/tsan/on_exit.cpp
@@ -0,0 +1,31 @@
+// RUN: %clang_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s
+#include "test.h"
+
+volatile long global;
+
+void *thread(void *x) {
+  global++;
+  barrier_wait(&barrier);
+  return nullptr;
+}
+
+void on_exit_callback(int status, void *arg) {
+  fprintf(stderr, "on_exit_callback(%d, %lu)\n", status, (long)arg);
+  global++;
+}
+
+int main() {
+  on_exit(on_exit_callback, (void *)42l);
+  barrier_init(&barrier, 2);
+  pthread_t th;
+  pthread_create(&th, nullptr, thread, nullptr);
+  pthread_detach(th);
+  barrier_wait(&barrier);
+  return 2;
+}
+
+// CHECK: on_exit_callback(2, 42)
+// CHECK: WARNING: ThreadSanitizer: data race
+// CHECK:   Write of size 8
+// CHECK:     #0 on_exit_callback
+// CHECK:     #1 on_exit_wrapper


        


More information about the llvm-commits mailing list