15d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// RUN: %clangxx_tsan -O1 %s -o %t && %deflake %run %t | FileCheck %s 25cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov#include <pthread.h> 35cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov#include <stdio.h> 45cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov#include <unistd.h> 55cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov 65cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukovint Global; 75cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov 85cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukovvoid *Thread1(void *x) { 95cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov sleep(1); 105cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov Global++; 115cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov return 0; 125cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov} 135cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov 145cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukovvoid *Thread2(void *x) { 155cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov pthread_setname_np(pthread_self(), "foobar2"); 165cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov Global--; 175cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov return 0; 185cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov} 195cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov 205cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukovint main() { 215cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov pthread_t t[2]; 225cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov pthread_create(&t[0], 0, Thread1, 0); 235cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov pthread_create(&t[1], 0, Thread2, 0); 245cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov pthread_setname_np(t[0], "foobar1"); 255cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov pthread_join(t[0], NULL); 265cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov pthread_join(t[1], NULL); 275cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov} 285cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov 295cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov// CHECK: WARNING: ThreadSanitizer: data race 305cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov// CHECK: Thread T1 'foobar1' 315cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov// CHECK: Thread T2 'foobar2' 325cf2c460e96e593b1c772f1b02d3a217f4837fdcDmitry Vyukov 33