On 01/31/2013 02:34 PM, Alan Bateman wrote:
On 30/01/2013 21:36, Chris Hegarty wrote:
There is a very small, and very old, window for a race in the socket
asynchronous close mechanism on Linux. This can lead to blocking
socket operations never returning even after the socket has been closed.
This issue would appear to exist since its (linux_close.c) creation
back in 1.4, but since the window for the race is tiny, it seems to
have gone unnoticed until now.
I think at the time that close would block if there was another thread
doing I/O so this may be why the signal was queued first.
And this still appears to be the case on Mac. I have not changed the mac
version of this function (I was not able to produce the problem after
1000's of test runs), but it may be that we need to revisit this at a
future stage. Maybe a sequence of interrupt, close/dup2, interrupt. But
for now, lets go with the current changes.
The proposed change looks good to me.
> Chris,
> Looks good for me.
> -Dmitry
Alan and Dmitry, thanks for the reviews.
-Chris.
-Alan