1*bcaeed49SFangrui Song // RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 2*bcaeed49SFangrui Song #include <pthread.h> 3*bcaeed49SFangrui Song 4*bcaeed49SFangrui Song volatile int N; // Prevent loop unrolling. 5*bcaeed49SFangrui Song int **data; 6*bcaeed49SFangrui Song Thread1(void * x)7*bcaeed49SFangrui Songvoid *Thread1(void *x) { 8*bcaeed49SFangrui Song for (int i = 0; i < N; i++) 9*bcaeed49SFangrui Song data[i][0] = 42; 10*bcaeed49SFangrui Song return 0; 11*bcaeed49SFangrui Song } 12*bcaeed49SFangrui Song main()13*bcaeed49SFangrui Songint main() { 14*bcaeed49SFangrui Song N = 4; 15*bcaeed49SFangrui Song data = new int*[N]; 16*bcaeed49SFangrui Song for (int i = 0; i < N; i++) 17*bcaeed49SFangrui Song data[i] = new int; 18*bcaeed49SFangrui Song pthread_t t; 19*bcaeed49SFangrui Song pthread_create(&t, 0, Thread1, 0); 20*bcaeed49SFangrui Song Thread1(0); 21*bcaeed49SFangrui Song pthread_join(t, 0); 22*bcaeed49SFangrui Song for (int i = 0; i < N; i++) 23*bcaeed49SFangrui Song delete data[i]; 24*bcaeed49SFangrui Song delete[] data; 25*bcaeed49SFangrui Song } 26*bcaeed49SFangrui Song 27*bcaeed49SFangrui Song // CHECK: ThreadSanitizer: reported 1 warnings 28