RFR(XS): 8204652: [aix] fix thread stack allocation, too big stack sizes not recognized
David Holmes
david.holmes at oracle.com
Sun Jun 10 21:28:09 UTC 2018
On 11/06/2018 7:24 AM, Thomas Stüfe wrote:
>
> On Sun 10. Jun 2018 at 22:39, David Holmes <david.holmes at oracle.com
>> <mailto:david.holmes at oracle.com>> wrote:
>>
>> Hi Goetz,
>>
>> On 11/06/2018 1:33 AM, Lindenmaier, Goetz wrote:
>> > Hi,
>> >
>> > This fixes a crash in thread creation with too big stack sizes
>> > http://cr.openjdk.java.net/~goetz/wr18/8204652-aixHugeStacksCrash/01/
>> > Please review.
>> >
>> > For Java and Compiler threads the return code of
>> pthread_attr_setstacksize
>> > is overwritten. If pthread_attr_setstacksize does not succeed,
>> a tiny
>> > stack size with not enough space for the yellow/red pages is
>> allocated.
>> > VM crashes with SIGSEGV right away.
>>
>> On Linux these are not considered fatal errors (assertion failures in
>> debug to catch something unexpected during testing). If setting the
>> desired stack fails then it falls back to the default system stack
>> size.
>> So only failure of the actual pthread_create is considered an error.
>>
>> One flaw in that logic, as per the issue you have hit it seems, is that
>> if the requested stack size is invalid then we should really then try
>> the default stack size for that kind of thread (if the requested size
>> was different) and not fallback to the system default. (And we
>> should be
>> checking for a guard failure in debug mode.)
>>
>> On AIX it seems you want any failure to be fatal so in that regard
>> adding the missing check of ret seems consistent.
>>
>> I am a little confused about the actual error though as per your later
>> mail. If the stacksize then shifted down to 192K why did the
>> pthread_create fail? The log shows a guardsize of 4K so that should be
>> fine if it is correct. I understand that the resulting stack may be too
>> small for the VM guard pages - but that won't result in a
>> pthread_create
>> failure. ???
>>
>> Cheers,
>> David
>>
>
> I am quite sure that pthread_create did not run at all. Probably the
> errno stems from the failing pthread_attr_setstacksize call, and if the
> output was produced by Goetz fixed version, neither
> pthread_attr_setguardsize nor pthread_create would have been executed.
> The error message in this case is totally misleading. That was the issue
> I tried to address in my first mail.
Got it! Yes I agree - it's wrong to say pthread_create failed.
David
> ..Thomas
>
>
> > Best regards,
> > Goetz
> >
>
More information about the hotspot-runtime-dev
mailing list