Tag: thread sanitizer

我可以将Thread Sanitizer用于OpenMP程序吗?

请考虑以下示例: #include int main () { int i = 0; #pragma omp parallel { #pragma omp critical { ++i; } } std::cout << i; } 使用g++ -fopenmp -fsanitize=thread和运行yield进行编译 警告:ThreadSanitizer:数据竞争(pid = 9576) 通过线程T1读取大小4在0x7ffdc170f600: #0 main._omp_fn.0(a.out + 0x000000400d20) #1 gomp_thread_start /build/gcc/src/gcc-5.2.0/libgomp/team.c:118(libgomp.so.1 + 0x00000000f42d) 先前通过线程T2在0x7ffdc170f600处写入大小4: #0 main._omp_fn.0(a.out + 0x000000400d35) #1 gomp_thread_start /build/gcc/src/gcc-5.2.0/libgomp/team.c:118(libgomp.so.1 + 0x00000000f42d) 位置是主线程的堆栈。 线程T1(tid = 9578,正在运行)由主线程创建: […]