https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83948
Bug ID: 83948 Summary: Thread safety issue writing to internal file - libgfortran Product: gcc Version: 7.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libfortran Assignee: unassigned at gcc dot gnu.org Reporter: longb at cray dot com Target Milestone: --- > cat test.f90 subroutine sub (a1, i1, f1, i2, i3, i4, out) implicit none character(30),intent(in) :: a1 integer,intent(in) :: i1, i2, i3, i4 real,intent(in) :: f1 character(700), intent(out) :: out character(700) :: local_out ! local stack variable write (local_out, "(A,A30,A,I8,A,I8,A,F8.6,A,I3,A,I3)") & "Same pole re-projecting area source: ", a1, & ': IndexVal=', i1, & ' Indexval*2=', i2, & ' RandomValue=', f1, & ", RandomValue*999=", i3, & ", iThread=", i4 out = local_out end subroutine sub program test use omp_lib implicit none integer,parameter :: n = 1000, cn = 700 character(cn) :: table(n) character(30) :: a1 integer :: i1, i2, i3, i4 real :: f1 integer :: i !$omp parallel do private (i1, i2, i3, i4, f1, a1) do i = 1,n call random_number(f1) i1 = min(i,99999999) i2 = min(2*i, 99999999) i3 = f1*999 i4 = omp_get_thread_num() a1 = "Beginnng of new record:" call sub (a1, i1, f1, i2, i3, i4, table(i)) end do !$omp end parallel do do i = max(1,n-5), n print *, "Table element number = ", i, trim(table(i)) end do end program test OK : 10 threads > export OMP_NUM_THREADS=10 > ftn -fopenmp -O3 test.f90 > srun -n1 -c10 ./a.out Table element number = 995 Same pole re-projecting area source: Beginnng of new record: : IndexVal= 995 Indexval*2= 1990 RandomValue=0.733033, RandomValue*999=732, iThread= 9 Table element number = 996 Same pole re-projecting area source: Beginnng of new record: : IndexVal= 996 Indexval*2= 1992 RandomValue=0.609290, RandomValue*999=608, iThread= 9 Table element number = 997 Same pole re-projecting area source: Beginnng of new record: : IndexVal= 997 Indexval*2= 1994 RandomValue=0.810925, RandomValue*999=810, iThread= 9 Table element number = 998 Same pole re-projecting area source: Beginnng of new record: : IndexVal= 998 Indexval*2= 1996 RandomValue=0.617685, RandomValue*999=617, iThread= 9 Table element number = 999 Same pole re-projecting area source: Beginnng of new record: : IndexVal= 999 Indexval*2= 1998 RandomValue=0.820912, RandomValue*999=820, iThread= 9 Table element number = 1000 Same pole re-projecting area source: Beginnng of new record: : IndexVal= 1000 Indexval*2= 2000 RandomValue=0.617121, RandomValue*999=616, iThread= 9 Fails: 20 threads > export OMP_NUM_THREADS=20 > srun -n1 -c20 ./a.out At line 15 of file test.f90 Internal Error: stash_internal_unit(): Stack Size Exceeded Error termination. Backtrace: #0 0x403ca0 in ??? #1 0x403e0f in ??? #2 0x4059cd in gomp_thread_start at ../../../cray-gcc-7.2.0-201709081833.7aac99f36ce61/libgomp/team.c:120 #3 0x41a263 in start_thread at /home/abuild/rpmbuild/BUILD/glibc-2.22/nptl/pthread_create.c:334 #4 0x4a1488 in ??? at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 #5 0xffffffffffffffff in ???