TSAN: add new test
gcc/testsuite/ChangeLog: * g++.dg/tsan/pthread_cond_clockwait.C: New test.
This commit is contained in:
parent
fe108dad32
commit
80b4ce1a51
31
gcc/testsuite/g++.dg/tsan/pthread_cond_clockwait.C
Normal file
31
gcc/testsuite/g++.dg/tsan/pthread_cond_clockwait.C
Normal file
@ -0,0 +1,31 @@
|
||||
// Test pthread_cond_clockwait not generating false positives with tsan
|
||||
// { dg-do run { target { { *-*-linux* *-*-gnu* *-*-uclinux* } && pthread } } }
|
||||
// { dg-options "-fsanitize=thread -lpthread" }
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
pthread_cond_t cv;
|
||||
pthread_mutex_t mtx;
|
||||
|
||||
void *fn(void *vp) {
|
||||
pthread_mutex_lock(&mtx);
|
||||
pthread_cond_signal(&cv);
|
||||
pthread_mutex_unlock(&mtx);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int main() {
|
||||
pthread_mutex_lock(&mtx);
|
||||
|
||||
pthread_t tid;
|
||||
pthread_create(&tid, NULL, fn, NULL);
|
||||
|
||||
struct timespec ts;
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
ts.tv_sec += 10;
|
||||
pthread_cond_clockwait(&cv, &mtx, CLOCK_MONOTONIC, &ts);
|
||||
pthread_mutex_unlock(&mtx);
|
||||
|
||||
pthread_join(tid, NULL);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user