Mercurial > hg > CbC > CbC_llvm
comparison compiler-rt/test/tsan/fd_pipe_race.cpp @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
147:c2174574ed3a | 150:1d019706d866 |
---|---|
1 // RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s | |
2 #include "test.h" | |
3 | |
4 int fds[2]; | |
5 | |
6 void *Thread1(void *x) { | |
7 write(fds[1], "a", 1); | |
8 barrier_wait(&barrier); | |
9 return NULL; | |
10 } | |
11 | |
12 void *Thread2(void *x) { | |
13 barrier_wait(&barrier); | |
14 close(fds[0]); | |
15 close(fds[1]); | |
16 return NULL; | |
17 } | |
18 | |
19 int main() { | |
20 barrier_init(&barrier, 2); | |
21 pipe(fds); | |
22 pthread_t t[2]; | |
23 pthread_create(&t[0], NULL, Thread1, NULL); | |
24 pthread_create(&t[1], NULL, Thread2, NULL); | |
25 pthread_join(t[0], NULL); | |
26 pthread_join(t[1], NULL); | |
27 } | |
28 | |
29 // CHECK: WARNING: ThreadSanitizer: data race | |
30 // CHECK: Write of size 8 | |
31 // CHECK: #0 close | |
32 // CHECK: #1 Thread2 | |
33 // CHECK: Previous read of size 8 | |
34 // CHECK: #0 write | |
35 // CHECK: #1 Thread1 | |
36 | |
37 |