--- old/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/CompiledVFrame.java 2017-12-01 22:48:18.850164320 +0900 +++ new/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/CompiledVFrame.java 2017-12-01 22:48:18.598163851 +0900 @@ -128,6 +128,9 @@ /** Returns List */ public List getMonitors() { + if (getScope() == null) { + return new ArrayList<>(); + } List monitors = getScope().getMonitors(); if (monitors == null) { return new ArrayList<>(); --- old/test/hotspot/jtreg/serviceability/sa/ClhsdbJstack.java 2017-12-01 22:48:19.393165331 +0900 +++ new/test/hotspot/jtreg/serviceability/sa/ClhsdbJstack.java 2017-12-01 22:48:19.160164898 +0900 @@ -38,14 +38,17 @@ public class ClhsdbJstack { - public static void main(String[] args) throws Exception { - System.out.println("Starting ClhsdbJstack test"); - + private static void testJstack(boolean withXcomp) throws Exception { LingeredApp theApp = null; try { ClhsdbLauncher test = new ClhsdbLauncher(); - theApp = LingeredApp.startApp(); - System.out.println("Started LingeredApp with pid " + theApp.getPid()); + theApp = withXcomp ? LingeredApp.startApp(List.of("-Xcomp")) + : LingeredApp.startApp(); + System.out.print("Started LingeredApp "); + if (withXcomp) { + System.out.print("(-Xcomp) "); + } + System.out.println("with pid " + theApp.getPid()); List cmds = List.of("jstack -v"); @@ -61,10 +64,16 @@ test.run(theApp.getPid(), cmds, expStrMap, null); } catch (Exception ex) { - throw new RuntimeException("Test ERROR " + ex, ex); + throw new RuntimeException("Test ERROR (with -Xcomp=" + withXcomp + ") "+ ex, ex); } finally { LingeredApp.stopApp(theApp); } + } + + public static void main(String[] args) throws Exception { + System.out.println("Starting ClhsdbJstack test"); + testJstack(false); + testJstack(true); System.out.println("Test PASSED"); } }