[Patch] PR 31228, Fix close-on-exec race.

David Daney ddaney@avtrex.com
Tue Mar 20 22:24:00 GMT 2007


Tom Tromey wrote:
>>>>>> "David" == David Daney <ddaney@avtrex.com> writes:
> 
> David> Make the accept non-blocking, and do a select/poll on the
> David> ServerSocket. That way the accept would never block and you could use
> David> a mutex.
> 
> Yeah.  I hadn't thought of the accept case, thanks.
> 
> David> This makes me think that ld.so is probably broken also.  When we do
> David> dlopen ld.so opens the library file and does several mmaps before
> David> closing the file descriptor.  These could leak out as well.
> 
> Not to mention other places that libc may create fds.
> 
> On some platforms fdwalk(3) can be used to make this close loop more
> efficient.  There's also closefrom(3).  Linux doesn't seem to have
> either of these, but Solaris does.
> 
> Tom

It would be fairly simple to write a linux version of closefrom(3) by 
reading /proc/self/fd.  I think that may be the best choice.

David Daney.



More information about the Java-patches mailing list