RFR(XS): 8214235: assertion in collectedHeap.cpp: attempt to clean empty remainder
boris.ulasevich at bell-sw.com
Thu Nov 29 15:13:28 UTC 2018
On 29.11.2018 16:30, Per Liden wrote:
> On 11/29/18 12:02 PM, Boris Ulasevich wrote:
>> Hi Per,
>> On 28.11.2018 17:35, Per Liden wrote:
>>> 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:
> 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(),
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?
>>> 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
More information about the hotspot-gc-dev