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.
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