RFR(M) 8243500: SA: Incorrect BCI and Line Number with jstack if the top frame is in the interpreter (BSD and Windows)
Chris Plummer
chris.plummer at oracle.com
Tue Apr 28 19:16:24 UTC 2020
Thanks Alex!
Can I get one more review please?
Chris
On 4/27/20 6:52 PM, Alex Menkov wrote:
> Hi Chris,
>
> The fix looks good.
>
> --alex
>
> On 04/27/2020 12:17, Chris Plummer wrote:
>> Ping! Please help review if you can.
>>
>> thanks,
>>
>> Chris
>>
>> On 4/24/20 12:44 AM, Chris Plummer wrote:
>>> Hello,
>>>
>>> Please review the following:
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8243500
>>> http://cr.openjdk.java.net/~cjplummer/8243500/webrev.00/index.html
>>>
>>> A couple years ago JDK-8214226 fixed an issue on Linux-x64 with SA
>>> stack dumps not properly displaying the correct line number for the
>>> topmost frame if it was interpreted. The issue was that SA was
>>> always relying on frame->bcp when in fact the BCP is kept in R13,
>>> and only flushed to frame->bcp when needed as a scratch register. So
>>> this means that SA was in most cases grabbing a stale value from
>>> frame->bcp.
>>>
>>> The fix for JDK-8214226 was mostly made in X86Frame.java to support
>>> using the BCP register for the topmost frame instead using
>>> frame->bcp. This fix actually had a bug in it that was causing the
>>> "illegal bci" failures we've been seeing. There is already a
>>> separate webrev and RFR out for that:
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8231634
>>> http://cr.openjdk.java.net/~cjplummer/8231634/webrev.00/index.html
>>>
>>> What this RFR addresses is the fact that part of the fix for
>>> JDK-8214226 was in LinuxAMD64JavaThreadPDAccess.java, but the same
>>> changes were never made to WindowsAMD64JavaThreadPDAccess.java or
>>> BsdAMD64JavaThreadPDAccess.java. This fix addresses those two ports.
>>> Here's the CR and changeset for reference:
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8214226
>>> http://hg.openjdk.java.net/jdk/jdk/rev/9a73a4e4011f
>>>
>>> The changes for the fix are pretty trivial. The more complicated
>>> part is the test I added that will reproduce the issue 100% of the
>>> time on platforms where SA does not properly check the BCP register.
>>> For this reason I've used @requires to limit running this test on
>>> just those platforms I know have the support in place. The test has
>>> pretty good comments on how it works, so I won't go into details here.
>>>
>>> thanks,
>>>
>>> Chris
>>
More information about the serviceability-dev
mailing list