RFR: JDK-8133349 - CMS: Assert failed: Ctl pt invariant
eric.caspole at oracle.com
Tue Aug 18 13:53:41 UTC 2015
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
> 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.
>> 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?
More information about the hotspot-gc-dev