From be6005a0d5862e2a0d91373194927d40c1a2637e Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Fri, 14 Dec 2012 13:56:27 +0000 Subject: [PATCH] tsan: add test for malloc/free in signal handler llvm-svn: 170205 --- compiler-rt/lib/tsan/lit_tests/signal_malloc.cc | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 compiler-rt/lib/tsan/lit_tests/signal_malloc.cc diff --git a/compiler-rt/lib/tsan/lit_tests/signal_malloc.cc b/compiler-rt/lib/tsan/lit_tests/signal_malloc.cc new file mode 100644 index 0000000..86ae436 --- /dev/null +++ b/compiler-rt/lib/tsan/lit_tests/signal_malloc.cc @@ -0,0 +1,26 @@ +// RUN: %clang_tsan -O1 %s -o %t && %t 2>&1 | FileCheck %s +#include +#include +#include +#include +#include + +static void handler(int, siginfo_t*, void*) { + volatile char *p = (char*)malloc(1); + p[0] = 0; + free((void*)p); +} + +int main() { + struct sigaction act = {}; + act.sa_sigaction = &handler; + sigaction(SIGPROF, &act, 0); + kill(getpid(), SIGPROF); + sleep(1); + return 0; +} + +// CHECK: WARNING: ThreadSanitizer: signal-unsafe call inside of a signal +// CHECK: #0 malloc +// CHECK: #1 handler(int, siginfo*, void*) {{.*}}signal_malloc.cc:9 + -- 2.7.4