mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-12 06:11:37 +00:00
38 lines
878 B
C++
38 lines
878 B
C++
// assert(false) calls __assert_fail(), which in turn calls abort() and
|
|
// _IO_flush_all_lockp(). This last function triggers a race. Check that this
|
|
// race is suppressed. Note: the test program below is not sufficient for
|
|
// reproducing this race.
|
|
|
|
|
|
#include <iostream>
|
|
#include <fstream>
|
|
#include <cassert>
|
|
#include <pthread.h>
|
|
|
|
static pthread_mutex_t s_mutex;
|
|
|
|
void* thread_func(void*)
|
|
{
|
|
pthread_mutex_lock(&s_mutex);
|
|
pthread_mutex_unlock(&s_mutex);
|
|
std::cout << "thread\n";
|
|
assert(false);
|
|
return 0;
|
|
}
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
pthread_mutex_init(&s_mutex, 0);
|
|
pthread_t tid;
|
|
pthread_mutex_lock(&s_mutex);
|
|
pthread_create(&tid, 0, thread_func, 0);
|
|
FILE* fp = fopen("/tmp/valgrind-drd-tests-abort", "w");
|
|
fprintf(fp, "x");
|
|
pthread_mutex_unlock(&s_mutex);
|
|
pthread_join(tid, 0);
|
|
pthread_mutex_destroy(&s_mutex);
|
|
fclose(fp);
|
|
|
|
return 0;
|
|
}
|