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