--- old/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java 2020-03-14 10:25:23.067305300 +0900 +++ new/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java 2020-03-14 10:25:22.255459500 +0900 @@ -150,12 +150,22 @@ public CFrame sender(ThreadProxy thread) { ThreadContext context = thread.getContext(); - Address nextPC = getNextPC(dwarf != null); - if (nextPC == null) { - return null; + Address nextPC; + DwarfParser nextDwarf; + try { + nextPC = getNextPC(dwarf != null); + if (nextPC == null) { + return null; + } + nextDwarf = getNextDwarf(nextPC); + } catch (DebuggerException e) { // Bail out to Java frame case + nextDwarf = null; + nextPC = getNextPC(false); + if (nextPC == null) { + return null; + } } - DwarfParser nextDwarf = getNextDwarf(nextPC); Address nextCFA = getNextCFA(nextDwarf, context); return isValidFrame(nextCFA, context) ? new LinuxAMD64CFrame(dbg, nextCFA, nextPC, nextDwarf) : null;