I'm starting to use Helgrind a tool of Valgrind. I read on the manual the following statement:
Runtime support library for GNU OpenMP (part of GCC), at least for GCC versions 4.2 and 4.3. The GNU OpenMP runtime library (libgomp.so) constructs its own synchronisation primitives using combinations of atomic memory instructions and the futex syscall, which causes total chaos since in Helgrind since it cannot "see" those.
In the latest version of GCC, is this still true or now the OpenMP uses the standard POSIX pthread?