1 // Regression test for https://github.com/google/sanitizers/issues/1259 2 // RUN: %clang_tsan -O1 %s -o %t && %run %t 3 // REQUIRES: glibc-2.30 || android-30 4 5 #define _GNU_SOURCE 6 #include <pthread.h> 7 8 pthread_cond_t cv; 9 pthread_mutex_t mtx; 10 fn(void * vp)11void *fn(void *vp) { 12 pthread_mutex_lock(&mtx); 13 pthread_cond_signal(&cv); 14 pthread_mutex_unlock(&mtx); 15 return NULL; 16 } 17 main()18int main() { 19 pthread_mutex_lock(&mtx); 20 21 pthread_t tid; 22 pthread_create(&tid, NULL, fn, NULL); 23 24 struct timespec ts; 25 clock_gettime(CLOCK_MONOTONIC, &ts); 26 ts.tv_sec += 10; 27 pthread_cond_clockwait(&cv, &mtx, CLOCK_MONOTONIC, &ts); 28 pthread_mutex_unlock(&mtx); 29 30 pthread_join(tid, NULL); 31 return 0; 32 } 33