[PATCH] SOCK_CLOEXEC for opening sockets
Chris Hegarty
chris.hegarty at oracle.com
Mon Jul 16 09:57:57 UTC 2018
Andrew,
I filed the following issue to track this:
https://bugs.openjdk.java.net/browse/JDK-8207335
Once you produce an updated patch, I can review and
sponsor this for you.
-Chris.
On 12/07/18 08:21, Andrew Luo wrote:
> Thanks, I can refactor it. I’m not as familiar with the OpenJDK
> architecture – should I just duplicate the function into libnio or is
> there some common utility library that I should move it into? Also, let
> me know what in net_util_* needs cleanup. The other instances of
> socket/socketpair in Mac/AIX/Solaris I’m willing to handle as well.
>
> Files are mostly already handled:
> https://bugs.openjdk.java.net/browse/JDK-8043780 (in a similar way –
> O_CLOEXEC on systems that support it and fcntl on other POSIX systems).
> One other resource you mentioned is epolls. Perhaps there’s also other
> file descriptors that are being used elsewhere, but I think it will take
> me longer time to figure out. I’m willing to work on that as well if we
> all think it’s a good idea.
>
> Anyways, while I agree that it would be ideal to address those other
> file descriptors as well, is it ok to address those in a separate
> changeset, or do you think that this changeset doesn’t really provide
> value unless we make this change everywhere? Sockets are somewhat more
> problematic than other types of file descriptors (in my opinion) as if
> you use it to listen on a port and then fork child processes (from
> native code) then restart the parent process, it won’t be able to listen
> to the same port until all of the children processes (of the previous
> process) exit/close the fd. Other file descriptors, unless you open in
> exclusive mode, won’t have the same problem (although the behavior is
> undesirable).
>
> Thanks,
>
> -Andrew
>
> *From:*Alan Bateman <Alan.Bateman at oracle.com>
> *Sent:* Wednesday, July 11, 2018 11:59 PM
> *To:* Andrew Luo <andrewluotechnologies at outlook.com>
> *Cc:* Martin Buchholz <martinrb at google.com>; net-dev at openjdk.java.net
> *Subject:* Re: [PATCH] SOCK_CLOEXEC for opening sockets
>
> On 12/07/2018 05:55, Andrew Luo wrote:
>
> Ok, fixed a few more places (and a bug where fcntl was being run on
> a -1 fd). Patch is below, let me know if there’s any other
> suggestions/etc.
>
> The file system code should not be calling into NET_* functions. The
> changes to net_util_* will also need cleanup. Otherwise I think you've
> got all the places in the networking / NIO APIs, at least on Linux.
> There are others on macOS, Solaris, ... of course.
>
> That said, I assume we have many more places in the JDK that have file
> descriptors to open files and other resources. If we really want to
> support the case of someone calling fork/exec from JNI code then it will
> likely need work in several other areas.
>
> -Alan
>
More information about the net-dev
mailing list