RFR(XS): 8214235: assertion in collectedHeap.cpp: attempt to clean empty remainder
Boris Ulasevich
boris.ulasevich at bell-sw.com
Tue Dec 11 14:13:24 UTC 2018
Hi Per,
You asked if I have reproducer for this on x86. I do have! The
configuration [--with-jvm-variants=client --with-debug-level=fastdebug]
on 32bit linux-x86 (alignment_reserve is empty for this configuration)
fires the assertion even on build time:
# Internal Error
(/ws/boris/jdk-jdk/src/hotspot/share/gc/shared/collectedHeap.cpp:373),
pid=4338, tid=4339
# assert(words >= min_fill_size()) failed: too small to fill
My fix for the issue works Ok:
http://cr.openjdk.java.net/~bulasevich/8214235/webrev.00
http://bugs.openjdk.java.net/browse/JDK-8214235
Boris
On 29.11.2018 18:13, Boris Ulasevich wrote:
> 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