RFR : 8205959 : Do not restart close if errno is EINTR

David Lloyd dlloyd at redhat.com
Wed Jun 27 23:23:40 UTC 2018


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.gerasimov at 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
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/net-dev/attachments/20180627/07adf407/attachment-0001.html>


More information about the net-dev mailing list