diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/ThreadDumpAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/ThreadDumpAction.java index 91e4fb592b6d..09d16c60f353 100644 --- a/java/debugger/impl/src/com/intellij/debugger/actions/ThreadDumpAction.java +++ b/java/debugger/impl/src/com/intellij/debugger/actions/ThreadDumpAction.java @@ -188,15 +188,20 @@ public class ThreadDumpAction extends AnAction implements AnAction.TransparentUp for (int i = 0, framesSize = frames.size(); i < framesSize; i++) { final StackFrame stackFrame = frames.get(i); - final Location location = stackFrame.location(); - buffer.append("\n\t ").append(renderLocation(location)); + try { + final Location location = stackFrame.location(); + buffer.append("\n\t ").append(renderLocation(location)); - final List monitors = lockedAt.get(i); - if (monitors != null) { - for (ObjectReference monitor : monitors) { - buffer.append("\n\t - ").append(renderLockedObject(monitor)); + final List monitors = lockedAt.get(i); + if (monitors != null) { + for (ObjectReference monitor : monitors) { + buffer.append("\n\t - ").append(renderLockedObject(monitor)); + } } } + catch (InvalidStackFrameException e) { + buffer.append("\n\t Invalid stack frame: ").append(e.getMessage()); + } } } catch (IncompatibleThreadStateException e) {