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

Kumar Srinivasan kumar.x.srinivasan at oracle.com
Wed Dec 16 13:42:49 UTC 2015


Hi  Bernd,

> Hello,
>
> I always like it when access() is used instead of stat() magic.
>
> I noticed that the new ProgramExists in java_md_common.c does not
> anymore reject directories (which are typically executable). Not sure
> it this matters or is intentional, it is a change in semantic.

Yes as the name suggests "ProgramExists", therefore that method should be
checking for the existence of the target file and whether it  is executable.

> Is there an exising typo in args.c#366 ("size i_s_ fine") which could
> be fixed in the patch as well?

I will refine that comment.

> I would simply remove the stat code from expandArgFile, the fallback
> code is only slow in the unlikely case of rejected large files so there
> is no need to attempt the stat() call. Would remove 10 lines.

I think it is correct, the way it is, because we could potentially have 
large argfiles
residing on slow file systems (smb, nfs etc.).

Thanks for the input.

Kumar

> Gruss
> Bernd
>
> Am Tue, 15 Dec 2015 10:36:08 -0800
> schrieb Henry Jen<henry.jen at oracle.com>:
>
>> Changes looks reasonable to me.
>>
>> Cheers,
>> Henry
>>
>>
>>> On 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 core-libs-dev mailing list