RFR(XS): 8214235: assertion in collectedHeap.cpp: attempt to clean empty remainder

Boris Ulasevich boris.ulasevich at bell-sw.com
Thu Nov 29 15:13:28 UTC 2018


Hi Per,

On 29.11.2018 16:30, Per Liden wrote:
> Hi,
> 
> On 11/29/18 12:02 PM, Boris Ulasevich wrote:
>> Hi Per,
>>
>> On 28.11.2018 17:35, Per Liden wrote:
>>> Hi,
>>>
>>> On 11/28/18 1:39 PM, Boris Ulasevich wrote:
>>>> Hi all,
>>>>
>>>> Please review a simple fix: do not fill remaining tlab memory
>>>> when the remainder is empty.
>>>
>>> Hmm I get the feeling something else is wrong here. Like a misaligned 
>>> object or a misaligned object size was allocated in the TLAB.
>>
>> Actually assertion check catches the case when top() = end().
>> I do not think it is something criminal. May be it is better to
>> add check (top() < hard_end()) instead:
>> http://cr.openjdk.java.net/~bulasevich/8214235/webrev.00
> 
> There's still something fishy here. The TLAB alignment_reserve should 
> make sure there's always enough space left for a filler object. 

My case is different! alignment_reserve() returns 0:
alignment_reserve() = MAX2(tlab_alloc_reserve(), 
_reserve_for_allocation_prefetch) =
MAX2(min_dummy_object_size() > MinObjAlignment ? min_dummy_object_size() 
: 0, is_server_compilation_mode_vm() ? a+b*c/d : 0) =
MAX2(2 > 2 ? 2 : 0, 0 ? a+b*c/d : 0) = MAX2(0, 0) = 0

> Do you 
> have a reproducer for this on x86 or does this only happen on Arm?
> 
> /Per
> 
>>
>>> When you crash here it would be interesting to see what the tlab 
>>> start/end/top/etc is and what MinObjAlignement is being used.
>>
>> TLAB: start()=0x938b0b28, end()=0x938dcdc8, top()=0x938dcdc8
>> MinObjAlignment: 2
>>
>>> cheers,
>>> Per
>>>
>>>>
>>>> https://bugs.openjdk.java.net/browse/JDK-8214235
>>>> http://cr.openjdk.java.net/~bulasevich/8214235/webrev.01
>>>>
>>>> Thanks,
>>>> Boris



More information about the hotspot-gc-dev mailing list