RFR: JDK-8115868: 32-bit JVM failed to start from a large network filesystem (original) (raw)

Martin Buchholz martinrb at google.com
Tue Dec 15 17:28:21 UTC 2015


Note that the semantics of stat and access may be subtly different, and that there are many calls to stat in the JDK sources, and they may all be broken on 32-bit systems.

I just wrote elsewhere:

_FILE_OFFSET_BITS is generally an all-or-nothing thing, because it affects interoperability between translation units. It would be good to convert all of the JDK build to use -D_FILE_OFFSET_BITS=64, but that would be a big job. So traditionally the JDK has instead used the functions made available via _LARGEFILE64_SOURCE. But that is also a JDK-wide job now, because every call to plain stat in the source code is broken on 32-bit systems with 64-bit inodes, which are becoming more common.

I recommend the _FILE_OFFSET_BITS=64 strategy, but it's probably a job for build-dev, not core-libs-dev.

On Tue, Dec 15, 2015 at 7:54 AM, Kumar Srinivasan <kumar.x.srinivasan at oracle.com> wrote:

Hello,

Please review fix for: JDK-8115868 The webrev is here: http://cr.openjdk.java.net/~ksrini/8115868/webrev.0/ The background: The launcher uses stat(2) to check for the existence of a file, unfortunately on 32-bit system with large file systems causes the inode storage to overflow causing the syscall to return EOVERFLOW. Solution: * stat(2) replaced with access(3), in most cases. * jbs is marked noreg-hard hard to replicate the problem Thanks Kumar



More information about the build-dev mailing list