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

            Bug ID: 67303
           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/iter.c:304

> cat test.f90
SUBROUTINE foo()
END SUBROUTINE

!$OMP PARALLEL DO SCHEDULE(guided)
DO i=1,1000
   CALL foo()
ENDDO
END

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

> OMP_NUM_THREADS=4 ./a.out

==================
WARNING: ThreadSanitizer: data race (pid=5740)
  Read of size 8 at 0x7d740001eb48 by thread T2:
    #0 gomp_iter_guided_next
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/iter.c:304
(libgomp.so.1+0x00000000c123)
    #1 gomp_loop_guided_next
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/loop.c:328
(libgomp.so.1+0x00000000df00)
    #2 MAIN__._omp_fn.0 /data/vjoost/gnu/bugs/test.f90:4 (a.out+0x000000400ad5)
    #3 gomp_thread_start
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/team.c:118
(libgomp.so.1+0x0000000177a8)

  Previous atomic write of size 8 at 0x7d740001eb48 by thread T3:
    #0 __tsan_atomic64_compare_exchange_weak
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libsanitizer/tsan/tsan_interface_atomic.cc:814
(libtsan.so.0+0x00000005d3e3)
    #1 gomp_iter_guided_next
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/iter.c:327
(libgomp.so.1+0x00000000c1d4)
    #2 gomp_loop_guided_next
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/loop.c:328
(libgomp.so.1+0x00000000df00)
    #3 MAIN__._omp_fn.0 /data/vjoost/gnu/bugs/test.f90:4 (a.out+0x000000400ad5)
    #4 gomp_thread_start
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/team.c:118
(libgomp.so.1+0x0000000177a8)

  Location is heap block of size 2080 at 0x7d740001ea00 allocated by main
thread:
    #0 malloc
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libsanitizer/tsan/tsan_interceptors.cc:491
(libtsan.so.0+0x0000000250a3)
    #1 gomp_malloc
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/alloc.c:37
(libgomp.so.1+0x00000000abba)
    #2 gomp_new_team
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/team.c:149
(libgomp.so.1+0x00000001780a)
    #3 gomp_parallel_loop_start
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/loop.c:448
(libgomp.so.1+0x00000000cdfc)
    #4 GOMP_parallel_loop_guided
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/loop.c:519
(libgomp.so.1+0x00000000e6eb)
    #5 MAIN__ /data/vjoost/gnu/bugs/test.f90:4 (a.out+0x000000400a49)
    #6 main /data/vjoost/gnu/bugs/test.f90:8 (a.out+0x000000400a96)

  Thread T2 (tid=5743, running) created by main thread at:
    #0 pthread_create
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libsanitizer/tsan/tsan_interceptors.cc:895
(libtsan.so.0+0x000000026c94)
    #1 gomp_team_start
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/team.c:796
(libgomp.so.1+0x000000017fee)
    #2 gomp_parallel_loop_start
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/loop.c:450
(libgomp.so.1+0x00000000ce95)
    #3 GOMP_parallel_loop_guided
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/loop.c:519
(libgomp.so.1+0x00000000e6eb)
    #4 MAIN__ /data/vjoost/gnu/bugs/test.f90:4 (a.out+0x000000400a49)
    #5 main /data/vjoost/gnu/bugs/test.f90:8 (a.out+0x000000400a96)

  Thread T3 (tid=5744, running) created by main thread at:
    #0 pthread_create
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libsanitizer/tsan/tsan_interceptors.cc:895
(libtsan.so.0+0x000000026c94)
    #1 gomp_team_start
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/team.c:796
(libgomp.so.1+0x000000017fee)
    #2 gomp_parallel_loop_start
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/loop.c:450
(libgomp.so.1+0x00000000ce95)
    #3 GOMP_parallel_loop_guided
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/loop.c:519
(libgomp.so.1+0x00000000e6eb)
    #4 MAIN__ /data/vjoost/gnu/bugs/test.f90:4 (a.out+0x000000400a49)
    #5 main /data/vjoost/gnu/bugs/test.f90:8 (a.out+0x000000400a96)

SUMMARY: ThreadSanitizer: data race
/data/vjoost/toolchain-tsan/build/gcc-5.1.0/libgomp/iter.c:304
gomp_iter_guided_next
==================

Reply via email to