According to http://man7.org/linux/man-pages/man2/close.2.html it is currently 
platform-dependent whether close() must or must not (seems to be no middle 
ground) be retried.  Might have to do some #ifdef guarding?

--
- DML


> On Jun 27, 2018, at 6:15 PM, Ivan Gerasimov <ivan.gerasi...@oracle.com> wrote:
> 
> Hello!
> 
> When closing a socket via NET_SocketClose(int fd), a close(fd) is called.
> The later is wrapped in a retry-loop, which is wrong because close() is not 
> restartable.
> 
> The `man 2 close` states:
> """
> ... close() should not be retried after an EINTR since this may cause a 
> reused descriptor from another thread to be closed.
> """
> 
> Would you please help review a trivial fix?
> 
> BUGURL: https://bugs.openjdk.java.net/browse/JDK-8205959
> WEBREV: http://cr.openjdk.java.net/~igerasim/8205959/00/webrev/
> 
> Thanks in advance!
> 
> -- 
> With kind regards,
> Ivan Gerasimov
> 

Reply via email to