This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libgomp/50175] New: data race with barrier
- From: "Joost.VandeVondele at pci dot uzh.ch" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 24 Aug 2011 14:01:56 +0000
- Subject: [Bug libgomp/50175] New: data race with barrier
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50175
Bug #: 50175
Summary: data race with barrier
Classification: Unclassified
Product: gcc
Version: 4.6.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libgomp
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: Joost.VandeVondele@pci.uzh.ch
I'm using valgrind together with the drd tool to find data races in my OMPed
code. However, one warning traces back to libgomp, as illustrated by the simple
test program below. As instructed in the drd manual, gcc has been configured
with --disable-linux-futex
Note also that the warning only happens with 3 or more threads.
> cat test.f90
!$OMP PARALLEL
!$OMP BARRIER
!$OMP END PARALLEL
END
> gfortran -fopenmp test.f90
> export OMP_NUM_THREADS=3
> valgrind --tool=drd ./a.out
==12681== drd, a thread error detector
==12681== Copyright (C) 2006-2010, and GNU GPL'd, by Bart Van Assche.
==12681== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==12681== Command: ./a.out
==12681==
==12681== Conflicting store by thread 1 at 0x0618c28c size 4
==12681== at 0x53B297D: gomp_team_barrier_wait (bar.h:66)
==12681== by 0x53B1D2E: gomp_team_end (team.c:464)
==12681== by 0x40072A: MAIN__ (in /data03/vondele/bugs/a.out)
==12681== by 0x400760: main (in /data03/vondele/bugs/a.out)
==12681== Address 0x618c28c is at offset 236 from 0x618c1a0. Allocation
context:
==12681== at 0x4C29301: malloc (vg_replace_malloc.c:236)
==12681== by 0x53AD018: gomp_malloc (alloc.c:36)
==12681== by 0x53B165C: gomp_new_team (team.c:144)
==12681== by 0x53B078B: GOMP_parallel_start (parallel.c:108)
==12681== by 0x40071B: MAIN__ (in /data03/vondele/bugs/a.out)
==12681== by 0x400760: main (in /data03/vondele/bugs/a.out)
==12681== Other segment start (thread 2)
==12681== at 0x4C31759: sem_wait (drd_pthread_intercepts.c:1010)
==12681== by 0x53B265B: gomp_sem_wait (sem.c:120)
==12681== by 0x53B28DB: gomp_team_barrier_wait_end (bar.c:146)
==12681== by 0x400778: MAIN__._omp_fn.0 (in /data03/vondele/bugs/a.out)
==12681== by 0x53B159F: gomp_thread_start (team.c:115)
==12681== by 0x4C295F0: vgDrd_thread_wrapper (drd_pthread_intercepts.c:281)
==12681== by 0x5A09A4E: start_thread (in /lib64/libpthread-2.11.2.so)
==12681== by 0x5CF082C: clone (in /lib64/libc-2.11.2.so)
==12681== Other segment end (thread 2)
==12681== at 0x5A10EB4: __lll_lock_wait (in /lib64/libpthread-2.11.2.so)
==12681== by 0x5A0C2A3: _L_lock_999 (in /lib64/libpthread-2.11.2.so)
==12681== by 0x5A0C0B8: pthread_mutex_lock (in /lib64/libpthread-2.11.2.so)
==12681== by 0x4C2B7B4: pthread_mutex_lock (drd_pthread_intercepts.c:586)
==12681== by 0x53B2968: gomp_team_barrier_wait (mutex.h:44)
==12681== by 0x53B15AB: gomp_thread_start (team.c:116)
==12681== by 0x4C295F0: vgDrd_thread_wrapper (drd_pthread_intercepts.c:281)
==12681== by 0x5A09A4E: start_thread (in /lib64/libpthread-2.11.2.so)
==12681== by 0x5CF082C: clone (in /lib64/libc-2.11.2.so)
==12681==
==12681==
==12681== For counts of detected and suppressed errors, rerun with: -v
==12681== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 31 from 31)