https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97589
--- Comment #22 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- Hi Toon, it took some time, but we finally figured out that it is actually a bug in your program that is causing problems. It has (shortened) nxglobal = 72; This sets the coarray nxglobal to 72 on every image, including image 2. if (this_image() == 1) then read(*,config) This optionally reads in nxglobal[1]. ! Why won't this work as nxglobal[:] = nx ? do i = 2, num_images() nxglobal[i] = nxglobal; This sets nxglobal[2] on image 2 from image 1. This is a race condition: It is not clear which store comes first. To fix this, you would need a "sync all" before the if (this_image() = 1) statement, or you could set the default value on image 1 only. (Incidentally, looking at this code led to finding a bug in namelist handling, where the implied this_image() was not honored (namelist I/O only worked on image 1), so the time looking at this bug was not wasted :-) By the way, there is also a segfault with GFORTRAN_NUM_IMAGES=64, which will need to be investigated.