[aarch64-port-dev ] RFR: 8209413: AArch64: NPE in clhsdb jstack command
Nick Gasson (Arm Technology China)
Nick.Gasson at arm.com
Mon Feb 18 07:36:20 UTC 2019
Hi Andrew,
Please take a look at this updated patch:
http://cr.openjdk.java.net/~ngasson/8209413/webrev.03/
It contains your suggested change below, as well as an extra check in
the AARCH64Frame two-argument constructor that the PC from SP[-1] is
valid. Also changed SharedRuntime::generate_native_wrapper and
TemplateInterpreterGenerator::generate_native_entry to save an accurate
return PC in the frame anchor.
There's a FIXME in set_last_Java_frame like this:
} else {
// FIXME: This is almost never correct. We should delete all
// cases of set_last_Java_frame with last_java_pc=NULL and use the
// correct return address instead.
adr(scratch, pc());
}
Should we do this now? There's only two places I can see:
StubGenerator::generate_throw_exception and the set_last_Java_frame
overload that takes a Label.
Thanks,
Nick
On 12/02/2019 23:32, Andrew Haley wrote:
> What's the status of this? Are you still looking at it?
>
> On 2/7/19 3:39 PM, Andrew Haley wrote:
>> On 2/7/19 2:36 PM, Nick Gasson (Arm Technology China) wrote:
>>>
>>> Yeah I tried this method too (see the end of my first email). It
>>> works fine except the PC is off by a few instructions. That can be
>>> fixed quite easily though if required, and it always points into the
>>> right method.
>>
>> We should fix those few cases.
>>
>>> I ended up doing the stack scanning thing because as far as I can
>>> tell that constructor is only used when we need to find the return
>>> PC from a native frame
>>
>> I don't think that ever happens. In the code I modified we know that
>> we have a good PC in the frame anchor. In the cases where we have a
>> native frame on the stack and nothing in the frame anchor we give
>> up. At least, I can see no counter-cases.
>>
>>> (I might have been wrong about this), so I couldn't see how it would
>>> ever get the right value. If we check vm.isJavaPCDbg() before we use
>>> the SP[-1] value that will make the remaining callers a bit safer
>>> (and set this.pc to null otherwise).
>>
>> That would be safe, for sure.
>>
>
>
More information about the serviceability-dev
mailing list