Le vendredi 07 août 2009 à 00:02 +0200, "Martin v. Löwis" a écrit :
There are always two dimensions in which to evaluate criticality of an issue: how serious is the problem it can cause when it hits, and in how many real applications is it likely to occur?
In the first dimension, I agree it's a serious problem. In the second dimension, it only affects applications that seek on files, and so I believe the problem is only of minor relevance.
It doesn't depend on seek() actually (this was the reporter's diagnosis, which turned out wrong). It happens when writing more than the buffer size after the buffer was filled for readahead but not entirely consumed.
The fact that it wasn't reported before may have to do with either the fact that it indeed doesn't affect a lot of applications, or that not many people have been using 3.1 "seriously" yet.
As a side note, when I was working on the IO lib, I regularly ran the Durus stress test script in addition to our test suite. So the problem might indeed be unlikely in the real world.
I think posting a patch on the 3.1 release page would be sufficient for now, along with a summary description on the circumstances that may trigger the bug, and the consequences it may cause.
I'm fine with this decision. The patch can be trivially extracted from one of the commits or svnmerges, but I don't know how to post it on the release page.
Regards
Antoine.
PS : Obviously, having our own brand new IO subsystem rather than relying on a venerable standard C library is not without risks.