https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117473
Bug ID: 117473 Summary: Issue with OpenMP workshare and -fsanitize=thread Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: anlauf at gcc dot gnu.org Target Milestone: --- Created attachment 59547 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59547&action=edit Reproducer This may be a dup of pr66553 or not, but I am reporting this anyway. The attached code runs fine when compiled with gfc-15 -fopenmp -O2 -g gfc-omp-workshare.f90 -fsanitize=thread when executing with OMP_NUM_THREADS=1: Max.threads: 1 -0.16594849976231613 2.8431552110569240E-002 However, with more threads I get a sanitizer warning: OMP_NUM_THREADS=2 ./a.out Max.threads: 2 ================== WARNING: ThreadSanitizer: data race (pid=6436) Read of size 8 at 0x72cc00044610 by main thread (mutexes: write M0): #0 test /home/anlauf/gcc-bugs/gfc-omp-workshare.f90:19 (a.out+0x4040b1) #1 main /home/anlauf/gcc-bugs/gfc-omp-workshare.f90:2 (a.out+0x402d95) Previous write of size 8 at 0x72cc00044610 by thread T1: #0 spline_init_vec.0._omp_fn.0 /home/anlauf/gcc-bugs/gfc-omp-workshare.f90:45 (a.out+0x40381a) #1 gomp_thread_start ../../../gcc-trunk/libgomp/team.c:129 (libgomp.so.1+0x22c97) Location is heap block of size 101400 at 0x72cc00038000 allocated by main thread: #0 malloc ../../../../gcc-trunk/libsanitizer/tsan/tsan_interceptors_posix.cpp:665 (libtsan.so.2+0x56917) #1 test /home/anlauf/gcc-bugs/gfc-omp-workshare.f90:9 (a.out+0x403a3a) #2 main /home/anlauf/gcc-bugs/gfc-omp-workshare.f90:2 (a.out+0x402d95) Mutex M0 (0x7258000003e0) created at: #0 pthread_mutex_lock ../../../../gcc-trunk/libsanitizer/tsan/tsan_interceptors_posix.cpp:1341 (libtsan.so.2+0x5af6e) #1 __gthread_mutex_lock ../libgcc/gthr-default.h:795 (a.out+0x40c72b) #2 insert_unit ../../../gcc-trunk/libgfortran/io/unit.c:250 (a.out+0x40c72b) Thread T1 (tid=6438, running) created by main thread at: #0 pthread_create ../../../../gcc-trunk/libsanitizer/tsan/tsan_interceptors_posix.cpp:1022 (libtsan.so.2+0x5c0f5) #1 gomp_team_start ../../../gcc-trunk/libgomp/team.c:859 (libgomp.so.1+0x2329f) #2 main /home/anlauf/gcc-bugs/gfc-omp-workshare.f90:2 (a.out+0x402d95) SUMMARY: ThreadSanitizer: data race /home/anlauf/gcc-bugs/gfc-omp-workshare.f90:19 in test ================== -0.16594849976231613 2.8431552110569240E-002 So is this a bug in the program source code, or a false positive in the thread sanitizer?