FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Make the error message for stack overflows clearer · simoncev/processing@00c874d · GitHub

Repository navigation

Commit 00c874d

Browse files
committed
Make the error message for stack overflows clearer
Regarding processing#4149 and against the better advice of processing#2623 Currently recursive functions only output this: "crashed in event thread due to Timeout occurred while waiting for packet 29. org.eclipse.jdi.TimeoutException: Timeout occurred while waiting for packet 29. at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:186) at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:197) at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:191) at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:226) at org.eclipse.jdi.internal.ThreadReferenceImpl.frames(ThreadReferenceImpl.java:257) at org.eclipse.jdi.internal.ThreadReferenceImpl.frames(ThreadReferenceImpl.java:240) at processing.mode.java.runner.Runner.findException(Runner.java:726) at processing.mode.java.runner.Runner.reportException(Runner.java:709) at processing.mode.java.runner.Runner.exceptionEvent(Runner.java:631) at processing.mode.java.runner.Runner$2.run(Runner.java:523) org.eclipse.jdi.TimeoutException: Timeout occurred while waiting for packet 30. at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:186) at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:197) at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:191) at org.eclipse.jdi.internal.MirrorImpl.requestVM(MirrorImpl.java:226) at org.eclipse.jdi.internal.VirtualMachineImpl.exit(VirtualMachineImpl.java:716) at processing.mode.java.runner.Runner.close(Runner.java:801) at processing.mode.java.JavaEditor.handleStop(JavaEditor.java:1156) at processing.mode.java.JavaToolbar.handleStop(JavaToolbar.java:146) at processing.mode.java.JavaToolbar$4.actionPerformed(JavaToolbar.java:104) at processing.app.ui.EditorButton.mousePressed(EditorButton.java:181) at java.awt.Component.processMouseEvent(Component.java:6522) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6290) at java.awt.Container.processEvent(Container.java:2234) at java.awt.Component.dispatchEventImpl(Component.java:4881) at java.awt.Container.dispatchEventImpl(Container.java:2292) at java.awt.Component.dispatchEvent(Component.java:4703) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4530) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) at java.awt.Container.dispatchEventImpl(Container.java:2278) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4703) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)" with the patch this becomes "A StackOverflowError means that you have a bug that's causing a function to be called recursively (it's calling itself and going in circles), or you're intentionally calling a recursive function too much, and your code should be rewritten in a more efficient manner." (and the TimeoutException once you click the stop button)
1 parent f775d44 commit 00c874d

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

‎java/src/processing/mode/java/runner/Runner.java‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,12 @@ protected SketchException findException(String message, ObjectReference or, Thre
749749
// This shouldn't happen, but if it does, print the exception in case
750750
// it's something that needs to be debugged separately.
751751
e.printStackTrace(sketchErr);
752+
} catch (Exception e) {
753+
// stack overflows seem to trip in frame.location() above
754+
// ignore this case so that the actual error gets reported to the user
755+
if ("StackOverflowError".equals(message) == false) {
756+
e.printStackTrace(sketchErr);
757+
}
752758
}
753759
// before giving up, try to extract from the throwable object itself
754760
// since sometimes exceptions are re-thrown from a different context
@@ -780,7 +786,11 @@ protected SketchException findException(String message, ObjectReference or, Thre
780786
or.invokeMethod(thread, method, new ArrayList<Value>(), ObjectReference.INVOKE_SINGLE_THREADED);
781787

782788
} catch (Exception e) {
783-
e.printStackTrace(sketchErr);
789+
// stack overflows will make the exception handling above trip again
790+
// ignore this case so that the actual error gets reported to the user
791+
if ("StackOverflowError".equals(message) == false) {
792+
e.printStackTrace(sketchErr);
793+
}
784794
}
785795
// Give up, nothing found inside the pile of stack frames
786796
SketchException rex = new SketchException(message);

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL