relay log problem

Alexandre Julliard julliard at winehq.org
Fri Jan 29 05:03:52 CST 2010


Michael Stefaniuc <mstefani at redhat.com> writes:

> Incorrect. Wine doesn't use write(2) but vfprintf(3) which operates on
> FILE handles; the output is buffered aka a vfprintf call won't translate
> 1:1 to a write(2) system call. But even if it would directly use
> write(2), that system call isn't atomic. A lot of people consider a
> write smaller/equal the PAGE_SIZE to be atomic but it isn't; one can get
> a short write because of an EINTR.
>
> The ">>" redirection fixes the overwriting corruption but not the
> interleaving one. With multiple threads and enough debug output the
> chances are high to get a few interleaving corruption; i see it
> regularly in the output of winetest.exe runs.

No, Wine explicitly uses write(2) for debug output, and is careful about
writing only complete lines precisely to avoid the interleaving issue.
It does require O_APPEND to ensure that the writes don't step over each
other, which is why you need ">>". It definitely makes a difference.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list