[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