Hi all, please take a look at this proposed fix.
The bug: https://bugs.openjdk.java.net/browse/JDK-8150460 The Webrev: http://cr.openjdk.java.net/~stuefe/webrevs/8150460-linux_close-fdTable/webrev.00/webrev/ Basically, the file descriptor table implemented in linux_close.c may not work for RLIMIT_NO_FILE=infinite or may grow very large (I saw a 50MB table) for high values for RLIMIT_NO_FILE. Please see details in the bug description. The proposed solution is to implement the file descriptor table not as plain array, but as a twodimensional sparse array, which grows on demand. This keeps the memory footprint small and fixes the corner cases described in the bug description. Please note that the implemented solution is kept simple, at the cost of somewhat higher (some kb) memory footprint for low values of RLIMIT_NO_FILE. This can be optimized, if we even think it is worth the trouble. Please also note that the proposed implementation now uses a mutex lock for every call to getFdEntry() - I do not think this matters, as this is all in preparation for an IO system call, which are usually way more expensive than a pthread mutex. But again, this could be optimized. This is an implementation proposal for Linux; the same code found its way to BSD and AIX. Should you approve of this fix, I will modify those files too. Thank you and Kind Regards, Thomas