[aarch64-port-dev ] RFR: AArch64: jtreg test vmTestbase/nsk/jvmti/PopFrame/popframe005 segfaults

Andrew Haley aph at redhat.com
Mon Dec 31 12:39:43 UTC 2018


Hi,

On 12/28/18 3:06 AM, Nick Gasson (Arm Technology China) wrote:

> Please review a one-line fix to prevent a JVMTI PopFrame crash on AArch64:
> 
> Bug: https://bugs.openjdk.java.net/browse/JDK-8215951
> Webrev: http://cr.openjdk.java.net/~njian/8215951/webrev.0/
> 
> This jtreg test started intermittently failing on AArch64 with a 
> segfault after 8215425:
>    http://hg.openjdk.java.net/jdk/jdk/rev/1e213c37befa
> (There is a full crash log attached to the bug.)
> 
> The faulting instruction is the load of the dispatch table pointer from 
> rdispatch (x21) in InterpreterMacroAssembler::dispatch_base.
> 
>    0x0000ffff8c939ab8: ldrb   w8, [x22, #0]!
>    0x0000ffff8c939abc: add    w9, w8, #0x900
>    0x0000ffff8c939ac0: ldr    x9, [x21, w9, uxtw #3]   <------
>    0x0000ffff8c939ac4: br     x9
> 
> When deoptimising a frame that has a JVMTI PopFrame event pending, 
> vframeArrayElement::unpack_on_stack will set the return PC of the 
> deoptimised frame to the the interpreter entry point 
> remove_activation_preserving_args_entry. After the PopFrame handling 
> this calls dispatch_next to dispatch the next opcode, but at this point 
> rdispatch may not have been initialised to point at the dispatch table. 
> Fix by calling get_dispatch() to initialise rdispatch at the same time 
> as the rest of the interpreter state is restored in 
> remove_activation_preserving_args_entry.
> 
> I guess this has always been a potential problem, but adding the prints 
> in the changeset above changed the timing of when a method was compiled 
> and exposed it?

That's hard to say without a lot of analysis. In any case, your patch looks
fine. We'll want to add it to the list of jdk8 backports.

-- 
Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671


More information about the aarch64-port-dev mailing list