Tom Tromey wrote: >>>>>> "David" == David Daney 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 > How about this version? I only tested it on x86_64-pc-linux-gnu, so there may be bugs in the parts of the patch that are targeted at platforms that have fdwalk. 2007-03-21 David Daney