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

sangheon sangheon.kim at oracle.com
Fri Jan 29 06:46:34 UTC 2016

Hi all,

    Could I have reviews for this small change to avoid an overflow for 

   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)


More information about the hotspot-gc-dev mailing list