This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libgomp/50175] New: data race with barrier


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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]