[Bug libgomp/66761] New: libgomp: ThreadSanitizer: data race in libgomp

Joost.VandeVondele at mat dot ethz.ch gcc-bugzilla@gcc.gnu.org
Sat Jul 4 11:36:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66761

            Bug ID: 66761
           Summary: libgomp: ThreadSanitizer: data race in libgomp
           Product: gcc
           Version: 5.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libgomp
          Assignee: unassigned at gcc dot gnu.org
          Reporter: Joost.VandeVondele at mat dot ethz.ch
                CC: jakub at gcc dot gnu.org
  Target Milestone: ---

After compiling libgomp with -fsanitize=thread, the following testcase triggers
a warning, which might indicate a problem in libgomp/config/linux/wait.h:52 :

> cat test.f90
SUBROUTINE copy(a,b,n)
INTEGER :: a(*),b(*),n
!$OMP PARALLEL DO SHARED(a,b,n) PRIVATE(i)
DO i=1,n
  a(i)=b(i)
ENDDO
END SUBROUTINE

SUBROUTINE test()
 INTEGER, PARAMETER :: N=1024
 INTEGER :: a(N),b(N),i

!$OMP PARALLEL SHARED(a,b) PRIVATE(i)

!$OMP DO
DO i=1,N
   b(i)=i
ENDDO 
!$OMP BARRIER

!$OMP MASTER
  CALL copy(a,b,n)
!$OMP END MASTER

!$OMP END PARALLEL

END SUBROUTINE

PROGRAM tester
CALL test()
END

> gfortran -fopenmp -fsanitize=thread -g test.f90

> ./a.out
==================
WARNING: ThreadSanitizer: data race (pid=66889)
  Atomic write of size 8 at 0x7f30d27667c0 by main thread:
    #0 __tsan_atomic64_fetch_add
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libsanitizer/tsan/tsan_interface_atomic.cc:616
(libtsan.so.0+0x000000058880)
    #1 gomp_team_end
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/team.c:875
(libgomp.so.1+0x000000019752)
    #2 GOMP_parallel_end
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/parallel.c:159
(libgomp.so.1+0x000000010b7b)
    #3 GOMP_parallel
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/parallel.c:169
(libgomp.so.1+0x000000010c71)
    #4 copy_ /data/vjoost/gnu/bugs/test.f90:5 (a.out+0x000000400c4e)
    #5 test_._omp_fn.0 /data/vjoost/gnu/bugs/test.f90:22 (a.out+0x000000400dd0)
    #6 GOMP_parallel
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/parallel.c:168
(libgomp.so.1+0x000000010c6c)
    #7 test_ /data/vjoost/gnu/bugs/test.f90:13 (a.out+0x000000400bb9)
    #8 tester /data/vjoost/gnu/bugs/test.f90:30 (a.out+0x000000400c80)
    #9 main /data/vjoost/gnu/bugs/test.f90:31 (a.out+0x000000400cc9)

  Previous read of size 8 at 0x7f30d27667c0 by thread T29:
    #0 do_spin
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/config/linux/wait.h:52
(libgomp.so.1+0x00000001bcee)
    #1 do_wait
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/config/linux/wait.h:64
(libgomp.so.1+0x00000001bcee)
    #2 gomp_team_barrier_wait_end
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/config/linux/bar.c:112
(libgomp.so.1+0x00000001bcee)
    #3 gomp_team_barrier_wait_final
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/config/linux/bar.c:136
(libgomp.so.1+0x00000001c039)
    #4 gomp_thread_start
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/team.c:119
(libgomp.so.1+0x0000000177b4)

  Location is global 'gomp_managed_threads' of size 8 at 0x7f30d27667c0
(libgomp.so.1+0x0000002317c0)

  Thread T29 (tid=66919, running) created by main thread at:
    #0 pthread_create
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libsanitizer/tsan/tsan_interceptors.cc:895
(libtsan.so.0+0x000000026c94)
    #1 gomp_team_start
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/team.c:796
(libgomp.so.1+0x000000017fee)
    #2 GOMP_parallel
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/parallel.c:167
(libgomp.so.1+0x000000010c67)
    #3 test_ /data/vjoost/gnu/bugs/test.f90:13 (a.out+0x000000400bb9)
    #4 tester /data/vjoost/gnu/bugs/test.f90:30 (a.out+0x000000400c80)
    #5 main /data/vjoost/gnu/bugs/test.f90:31 (a.out+0x000000400cc9)

SUMMARY: ThreadSanitizer: data race
/data/vjoost/toolchain-sanitize/build/gcc-5.1.0/libgomp/team.c:875
gomp_team_end
==================
ThreadSanitizer: reported 1 warnings



More information about the Gcc-bugs mailing list