< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java

Print this page

        

@@ -148,16 +148,26 @@
 
    @Override
    public CFrame sender(ThreadProxy thread) {
      ThreadContext context = thread.getContext();
 
-     Address nextPC = getNextPC(dwarf != 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;
    }
 
< prev index next >