https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90539
--- Comment #32 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- Hi Martin, this 3822 ierr = pio_put_var (tape(t)%File, ps0var, (/ps0/)) looks like the culprit (or rather, where gfortran currently generates wrong code). This is consistent with the problem seen in netcdf, so I feel pretty confident that this is indeed the problem. To double-check, could you maybe do the following? Assume ps0 is a real(kind=8) variable, do ... real(kind=8) :: ps0_array(1) ! Use the type as ps0 and then ps0_array(1) = ps0 ierr = pio_put_var (tape(t)%File, ps0var, ps0_array) and see if the segfault goes away, or at least if this one has been removed, and there is a different one now :-)