Index: test/tsan/vptr_benign_race.cc =================================================================== --- test/tsan/vptr_benign_race.cc +++ test/tsan/vptr_benign_race.cc @@ -5,24 +5,33 @@ struct A { A() { - sem_init(&sem_, 0, 0); + pthread_mutex_init(&m, 0); + pthread_cond_init(&c, 0); + signaled = false; } virtual void F() { } void Done() { - sem_post(&sem_); + pthread_mutex_lock(&m); + signaled = true; + pthread_cond_signal(&c); + pthread_mutex_unlock(&m); } virtual ~A() { } - sem_t sem_; + pthread_mutex_t m; + pthread_cond_t c; + bool signaled; }; struct B : A { virtual void F() { } virtual ~B() { - sem_wait(&sem_); - sem_destroy(&sem_); + pthread_mutex_lock(&m); + while (!signaled) + pthread_cond_wait(&c, &m); + pthread_mutex_unlock(&m); } };