Integrated: 8247351: [aarch64] NullPointerException during stack walking (clhsdb "where -a")
Nick Gasson
ngasson at openjdk.java.net
Wed Jul 14 09:06:18 UTC 2021
On Fri, 9 Jul 2021 08:37:00 GMT, Nick Gasson <ngasson at openjdk.org> wrote:
> Running the jtreg test serviceability/sa/ClhsdbWhere.java with -Xcomp
> -XX:-TieredCompilation fails with the following exception:
>
> Error: java.lang.NullPointerException: Cannot invoke "sun.jvm.hotspot.debugger.Address.getJLongAt(long)" because "valueAddr" is null
> java.lang.NullPointerException: Cannot invoke "sun.jvm.hotspot.debugger.Address.getJLongAt(long)" because "valueAddr" is null
> at jdk.hotspot.agent/sun.jvm.hotspot.runtime.CompiledVFrame.createStackValue(CompiledVFrame.java:270)
> at jdk.hotspot.agent/sun.jvm.hotspot.runtime.CompiledVFrame.getLocals(CompiledVFrame.java:107)
> at jdk.hotspot.agent/sun.jvm.hotspot.ui.classbrowser.HTMLGenerator.genHTMLForJavaStackTrace(HTMLGenerator.java:1937)
> at jdk.hotspot.agent/sun.jvm.hotspot.CommandProcessor$43.doit(CommandProcessor.java:1573)
> at jdk.hotspot.agent/sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java:2090)
> at jdk.hotspot.agent/sun.jvm.hotspot.CommandProcessor.executeCommand(CommandProcessor.java:2060)
>
> The oop map for the frame being inspected is:
>
> ScopeDesc(pc=0x0000ffff8957e000 offset=140):
> jdk.test.lib.apps.LingeredApp::steadyState at 7 (line 536)
> Locals
> - l0: empty
> - l1: reg rfp [58],oop
> - l2: empty
> Monitor stack
> - @0: monitor{reg rfp [58],oop,stack[16]}
>
> But RegisterMap::getLocation() returns a null Address for register
> 58 (=RFP).
>
> This patch fixes two problems: the fp VMReg value used in
> AARCH64Frame::updateMapWithSavedLink should be 29<<1 not 29 because a
> VMReg has two slots in a 64-bit VM. The other bug is that
> RegisterMap::setLocation and getLocation calculate the long
> locationValid mask using (1 << (i % locationValidTypeSize)) where i and
> locationValidTypeSize are both int. We need to do this calculation as a
> long if i % locationValidTypeSize can be > 32. There's no failure on
> x86_64 because that only has 16 integer registers.
This pull request has now been integrated.
Changeset: 357fe09f
Author: Nick Gasson <ngasson at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/357fe09f2e46efa3343f6c8a57b8693dcd5dd43c
Stats: 5 lines in 2 files changed: 0 ins; 0 del; 5 mod
8247351: [aarch64] NullPointerException during stack walking (clhsdb "where -a")
Reviewed-by: cjplummer
-------------
PR: https://git.openjdk.java.net/jdk/pull/4737
More information about the serviceability-dev
mailing list