TSAN: add new test

gcc/testsuite/ChangeLog:

	* g++.dg/tsan/pthread_cond_clockwait.C: New test.
This commit is contained in:
Michael de Lang 2021-05-14 12:09:45 +02:00 committed by Martin Liska
parent fe108dad32
commit 80b4ce1a51

View 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;
}