30 lines · cpp
1// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s2#include "test.h"3 4char s[] = "abracadabra";5 6void *Thread0(void *p) {7 fputs(s, stdout);8 barrier_wait(&barrier);9 return 0;10}11 12void *Thread1(void *p) {13 barrier_wait(&barrier);14 s[3] = 'z';15 return 0;16}17 18int main() {19 barrier_init(&barrier, 2);20 pthread_t th[2];21 pthread_create(&th[0], 0, Thread0, 0);22 pthread_create(&th[1], 0, Thread1, 0);23 pthread_join(th[0], 0);24 pthread_join(th[1], 0);25 fprintf(stderr, "DONE");26}27 28// CHECK: WARNING: ThreadSanitizer: data race29// CHECK: DONE30