RFR: JDK-8133349 - CMS: Assert failed: Ctl pt invariant

Eric Caspole eric.caspole at oracle.com
Tue Aug 18 18:09:28 UTC 2015


It appears that the TLAB alignment_reserve() on x64 is 2, the same as 
for PLAB, so that explains why this assert never happened there.
Eric


On 08/18/2015 04:29 AM, Thomas Schatzl wrote:
> Hi Eric,
>
> On Mon, 2015-08-17 at 21:29 -0400, Eric Caspole wrote:
>> Hi everybody,
>> Could I get reviews for this bug 8133349.
>> This is assert is happening because the _survivor_chunk_array size is
>> based on a calculation from ThreadLocalAllocBuffer::min_size(), but
>> during a GC the PLAB::min_size() is used as the lower limit.
>>
>> These are different because the TLAB alignment_reserve() == 40 words,
>> but the PLAB AlignmentReserve == 2 words which is from
>> oopDesc::header_size().
>
> Any idea why the TLAB alignment reserve is 40 words? (Just curious).
>>
>> So that means the _survivor_chunk_array is a little bit smaller than
>> will fit all the PLABs that could be allocated during a GC.
>>
>> Before the fix for JDK-8078904, the _survivor_chunk_array was padded
>> by 2x, not sure why, so this situation never caused a problem. With
>> the fix for JDK-8078904, the _survivor_chunk_array is exactly sized to
>> hold the PLABs.
>>
>> Bug:
>> https://bugs.openjdk.java.net/browse/JDK-8133349
>> Webrev:
>> http://cr.openjdk.java.net/~ecaspole/JDK-8133349/01/webrev/
>>
>> Passes JPRT and many  counts of PGC threads in the failing test, which
>> only was exposed in a certain Solaris situation.
>
>    thanks, looks good. Is it possible to recreate that Solaris test using
> a simple JPRT test? Or is this a 100% failure on the existing test?
>
> Thanks,
>    Thomas
>
>


More information about the hotspot-gc-dev mailing list