RFR(xs): 8145190: MinTLABSize can cause overflow problem with CMS GC

Tom Benson tom.benson at oracle.com
Fri Jan 29 14:13:17 UTC 2016


Looks fine to me as well.
Tom

On 1/29/2016 8:13 AM, Jesper Wilhelmsson wrote:
> Looks good!
> /Jesper
>
> Den 29/1/16 kl. 07:46, skrev sangheon:
>> Hi all,
>>
>>     Could I have reviews for this small change to avoid an overflow for
>> MinTLABSize?
>>
>>    Current maximum value of MinTLABSize makes SIGFPE on CMSCollector 
>> constructor
>> as 'PLAB::min_size() * HeapWordSize' makes an overflow. 'size_t
>> PLAB::min_size()' which returns 'align_object_size(MAX2(MinTLABSize /
>> HeapWordSize, (uintx)oopDesc::header_size())) + AlignmentReserve' 
>> makes the
>> problem with addition of 'AlignmentReserve'.
>>    MinTLABSize flag is 'AfterMemoryInit' which means the constraint 
>> check will
>> happen after creating the heap, because we need to check this flag to 
>> be larger
>> than ThreadLocalAllocBuffer::alignment_reserve_in_bytes().
>>
>>    As the maximum value of max_uintx is not practical, it would be 
>> better to
>> restrict its maximum than introducing additional constraint check. 
>> For now we
>> don't have multiple time constraint check. And any value smaller than 
>> 'max_uintx
>> - PLAB::AlignmentReserve*HeapWordSize' will be fine but I think 
>> 'max_uintx / 2'
>> is large enough. PLAB::AlignmentReserve is calculated after heap 
>> creation.
>>    With quite large values, this problem would be hidden by other flags
>> constraint. e.g. YoungPLABSize.
>>
>>     I didn't add a new test as JDK-8144578 enables to check this 
>> problem.
>>
>> CR: https://bugs.openjdk.java.net/browse/JDK-8145190
>> Webrev: http://cr.openjdk.java.net/~sangheki/8145190/webrev.00
>> Testing: JPRT, RBT (TestOptionsWithRanges.java for all platforms 
>> including CMS GC)
>>
>> Thanks,
>> Sangheon




More information about the hotspot-gc-dev mailing list