http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30162
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|WONTFIX | --- Comment #24 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-08-06 13:43:05 UTC --- (In reply to comment #23) > The real bug is thus that we shouldn't try to seek or truncate the fd at all, > as it's not necessary in this case. I think the issue occurs for: st_write_done (st_parameter_dt *dtp) ... if (dtp->u.p.current_unit != NULL && dtp->u.p.current_unit->flags.access == ACCESS_SEQUENTIAL) switch (dtp->u.p.current_unit->endfile) ... case NO_ENDFILE: /* Get rid of whatever is after this record. */ if (!is_internal_unit (dtp)) unit_truncate (dtp->u.p.current_unit, stell (dtp->u.p.current_unit->s), &dtp->common); dtp->u.p.current_unit->endfile = AT_ENDFILE; with a file as simple as open (99, file="foo.dat") write (99, '(a)') 'Hello world' end $ mkfifo foo.dat $ tail -f foo.dat & [2] 342 $ gfortran test.f90 && ./a.out At line 2 of file test.f90 (unit = 99, file = 'foo.dat') Fortran runtime error: Invalid argument Hello world $ fg tail -f foo.dat ^C