https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90230
Bug ID: 90230
Summary: newunit in open function is not threadsafe with openmp
Product: gcc
Version: 7.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: mweiland at freenet dot de
Target Milestone: ---
Created attachment 46239
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46239&action=edit
Source file to reproduce the error
The issue can be reproduced with:
gfortran -c -fopenmp minimal.f90
gfortran -fopenmp minimal.o
./a.out
It yields:
opened file with lun: -10
At line 7 of file minimal.f90
Fortran runtime error: File already opened in another unit
It seems to me that the newunit feature of open() is not threadsafe.
I get the output:
opened file with lun: -11
At line 7 of file minimal.f90
Fortran runtime error: File already opened in another unit
Error termination. Backtrace:
...
With ifort/14.0 and NagCompiler, this example works, e.g.:
ifort -c -fopenmp minimal.f90
ifort -fopenmp minimal.o
./a.out
opened file with lun: -130
closed file with lun: -130
opened file with lun: -133
opened file with lun: -131
opened file with lun: -134
opened file with lun: -135
closed file with lun: -134
opened file with lun: -129
closed file with lun: -133
closed file with lun: -131
closed file with lun: -129
opened file with lun: -132
closed file with lun: -132
opened file with lun: -136
opened file with lun: -137
closed file with lun: -137
closed file with lun: -135
opened file with lun: -138
closed file with lun: -138
closed file with lun: -136
Not sure if this is really a bug, since I do not know if newunit is actually
supposed to be treadsafe from the Fortran standard.