File buffering

Teemu Ikonen tpikonen at
Wed Jan 17 10:25:39 CST 2007


I have a Visual Fortran application which exhibits problems related to
concurrency and file buffer flushing when run under wine (it works
under all versions of windows).

The program does essentially this:

opens a file
writes to it
closes it
forks another program to read the file just written
deletes the file in the original process

Under wine, the forked program does not find the file just written. If
I run the program under winedbg and set a breakpoint somewhere between
writing and deletion, the buffers are flushed when the breakpoint is
reached, and the program works as it does under windows.

To my mind this would indicate that windows flushes all open buffers
before forking a new process (the api call I see in wine debug output
is CreateProcessW). Would it make sense to add flush-calls to the wine
implementation as well? I tried to make the program work by adding
calls to the Fortran subroutine FLUSH between closing and forking, but
somewhat surprisingly, that didn't help.


More information about the wine-devel mailing list