OpenMP segfault/stack size exceeded writing to internal file
Andrew Benson
abenson@carnegiescience.edu
Wed Nov 16 20:27:00 GMT 2016
I've opened a PR for the following bug at:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78387
The following code when run using OpenMP crashes with a "stack size exceeded"
error (and, sometimes, a segfault) under gfortran 7.0.0 (r242500). This
happens most times I run the code, but not every time. When compiled with
gfortran 6.0.0 it runs successfully every time.
program p
double precision :: b
b=0.1d0
!$omp parallel
call s(b)
!$omp end parallel
contains
subroutine s(a)
implicit none
double precision, intent(in) :: a
character(len=10) :: f,c
write (f,'(a5,i1,a1)') "(e10.",2,")"
write (c,f) a
write (0,*) trim(c)
return
end subroutine s
end program p
$ gfortran -v
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/home/abenson/Galacticus/Tools/libexec/gcc/x86_64-pc-
linux-gnu/7.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-trunk/configure --prefix=/home/abenson/Galacticus/
Tools --enable-languages=c,c++,fortran --disable-multilib
Thread model: posix
gcc version 7.0.0 20161116 (experimental) (GCC)
$ gfortran t.F90 -g -fopenmp
[abenson@mies v0.9.4]$ a.out
0.10E+00
0.10E+00
0.10E+00
0.10E+00
At line 12 of file t.F90
Internal Error: stash_internal_unit(): Stack Size Exceeded
Error termination. Backtrace:
0.10E+00
0.10E+00
0.10E+00
0.10E+00
0.10E+00
0.10E+00
0.10E+00
0.10E+00
0.10E+00
0.10E+00
0.10E+00
#0 0x400a7b in s
at /home/abenson/Galacticus/v0.9.4/t.F90:12
#1 0x400c53 in MAIN__._omp_fn.0
at /home/abenson/Galacticus/v0.9.4/t.F90:5
#2 0x7f786cbc955d in gomp_thread_start
at ../../../gcc-trunk/libgomp/team.c:119
#3 0x7f786bdbdc39 in start_thread
at /data001/abenson/Galacticus/Tools/glibc-2.12.1/nptl/
pthread_create.c:301
#4 0x7f786c4c361c in ???
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
#5 0xffffffffffffffff in ???
The frequency with which the code crashes increases as the number of OpenMP
threads is increased (running with 2 threads it almost always runs
successfully, with 4 threads it crashes on 1 run in 10-20, with 16 threads it
crashes almost every time).
The error is sometimes reported at line 12, sometimes at line 13 - but always
the same "stack size exceeded" error.
-Andrew
--
* Andrew Benson: http://users.obs.carnegiescience.edu/abenson/contact.html
* Galacticus: http://sites.google.com/site/galacticusmodel
More information about the Fortran
mailing list