]>
git.proxmox.com Git - rustc.git/blob - src/compiler-rt/test/tsan/signal_errno.cc
1 // RUN: %clang_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s
10 static void MyHandler(int, siginfo_t
*s
, void *c
) {
15 static void* sendsignal(void *p
) {
16 barrier_wait(&barrier
);
17 pthread_kill(mainth
, SIGPROF
);
21 static __attribute__((noinline
)) void loop() {
22 barrier_wait(&barrier
);
24 volatile char *p
= (char*)malloc(1);
32 barrier_init(&barrier
, 2);
33 mainth
= pthread_self();
34 struct sigaction act
= {};
35 act
.sa_sigaction
= &MyHandler
;
36 sigaction(SIGPROF
, &act
, 0);
38 pthread_create(&th
, 0, sendsignal
, 0);
44 // CHECK: WARNING: ThreadSanitizer: signal handler spoils errno
45 // CHECK: #0 MyHandler(int, {{(__)?}}siginfo{{(_t)?}}*, void*) {{.*}}signal_errno.cc
47 // CHECK: SUMMARY: ThreadSanitizer: signal handler spoils errno{{.*}}MyHandler