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

Eric Caspole eric.caspole at oracle.com
Tue Aug 18 13:53:41 UTC 2015

Hi Thomas,

In threadLocalAllocBuffer.hpp line 133 the TLAB leaves end_reserve space 
for prefetch with is probably different on various architectures.

On SPARC 4 core VMs like in dev ops, in that test with that object 
allocation pattern/heap layout it happened that it only failed with 4 or 
more PGC threads, but passed with 3 or less.

I'll try to make a specific test related to this situation now that I 
see what was going on.

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