RFR: AArch64: Fix endless loop / stack-corruption

Roman Kennke rkennke at redhat.com
Sat May 5 22:52:39 UTC 2018


Am 05.05.2018 um 11:16 schrieb Aleksey Shipilev:
> On 05/04/2018 11:23 PM, Roman Kennke wrote:
>> In aarch64's
>> TemplateInterpreterGenerator::generate_Reference_get_entry(void), there
>> used to be enter()/leave() calls around the g1 pre-barrier. This is
>> necessary in case the barrier calls into the runtime, to setup/remove
>> stack frames for the call. With the interpreter BarrierSetAssembler
>> work, this seems to have been dropped. It does lead to stack corruption,
>> sometimes endless loops, etc.
>>
>> This patch re-instates the missing enter()/leave() calls where they have
>> been. This makes hotspot_gc_shenandoah tests happy (finally!)
>>
>> I filed
>> https://bugs.openjdk.java.net/browse/JDK-8202676
>>
>> to track and fix this upstream.
>>
>> http://cr.openjdk.java.net/~rkennke/aarch64-fix-barrier-rt-call/webrev.00/
>>
>> Ok to push?
> 
> OK.
> 
> -Aleksey
> 

Upstream review lead to moving the enter/leave into the BSA impls.

http://hg.openjdk.java.net/jdk/jdk/raw-rev/7238cb613dc5

Adopted accordingly (cherry-pick 8202676: AArch64: Missing enter/leave
around barrier leads to infinite loop):

http://cr.openjdk.java.net/~rkennke/aarch64-fix-barrier-rt-call/webrev.01/

Still ok to push?

Roman



More information about the shenandoah-dev mailing list