MarginallyClever / Robot-Overlord-App

Simulation and control software for robots
https://www.marginallyclever.com/
GNU General Public License v2.0
168 stars 49 forks source link

Caused by: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException #145

Closed Jackymancs4 closed 1 year ago

Jackymancs4 commented 1 year ago

Describe the bug I'have not (yet) managed to replicate it, but some configuration in the control panel started to flood the console with this error:

java.lang.reflect.InvocationTargetException
        at java.desktop/java.awt.EventQueue.invokeAndWait(EventQueue.java:1369)
        at java.desktop/java.awt.EventQueue.invokeAndWait(EventQueue.java:1344)
        at java.desktop/javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1480)
        at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:98)
        at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:453)
        at com.jogamp.opengl.util.FPSAnimator$MainTask.run(FPSAnimator.java:178)
        at java.base/java.util.TimerThread.mainLoop(Timer.java:566)
        at java.base/java.util.TimerThread.run(Timer.java:516)
Caused by: com.jogamp.opengl.GLException: Caught RuntimeException: java.lang.ArrayIndexOutOfBoundsException on thread AWT-EventQueue-0
        at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
        at com.jogamp.opengl.awt.GLJPanel$OffscreenBackend.doPaintComponent(GLJPanel.java:2095)
        at com.jogamp.opengl.awt.GLJPanel.paintComponent(GLJPanel.java:569)
        at java.desktop/javax.swing.JComponent.paint(JComponent.java:1119)
        at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5311)
        at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1657)
        at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1632)
        at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1570)
        at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1337)
        at java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5259)
        at java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5069)
        at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:879)
        at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:862)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
        at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:862)
        at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:835)
        at com.jogamp.opengl.util.AWTAnimatorImpl$1.run(AWTAnimatorImpl.java:170)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException
        at com.marginallyclever.robotoverlord.systems.robot.robotarm.ArmRobotSystem.applySmallCartesianForceToEndEffector(ArmRobotSystem.java:173)
        at com.marginallyclever.robotoverlord.systems.robot.robotarm.ArmRobotSystem.applyCartesianForceToEndEffector(ArmRobotSystem.java:138)
        at com.marginallyclever.robotoverlord.systems.robot.robotarm.ArmRobotSystem.updateRobotComponent(ArmRobotSystem.java:118)
        at com.marginallyclever.robotoverlord.systems.robot.robotarm.ArmRobotSystem.update(ArmRobotSystem.java:102)
        at com.marginallyclever.robotoverlord.RobotOverlord.lambda$1(RobotOverlord.java:169)
        at com.marginallyclever.robotoverlord.renderpanel.OpenGLRenderPanel.updateStep(OpenGLRenderPanel.java:842)
        at com.marginallyclever.robotoverlord.renderpanel.OpenGLRenderPanel$1.display(OpenGLRenderPanel.java:299)
        at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
        at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
        at com.jogamp.opengl.awt.GLJPanel$Updater.display(GLJPanel.java:1446)
        at com.jogamp.opengl.awt.GLJPanel$10.run(GLJPanel.java:1521)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
        ... 31 more
Caused by: java.lang.ArrayIndexOutOfBoundsException
java.lang.reflect.InvocationTargetException
        at java.desktop/java.awt.EventQueue.invokeAndWait(EventQueue.java:1369)
        at java.desktop/java.awt.EventQueue.invokeAndWait(EventQueue.java:1344)
        at java.desktop/javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1480)
        at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:98)
        at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:453)
        at com.jogamp.opengl.util.FPSAnimator$MainTask.run(FPSAnimator.java:178)
        at java.base/java.util.TimerThread.mainLoop(Timer.java:566)
        at java.base/java.util.TimerThread.run(Timer.java:516)
Caused by: com.jogamp.opengl.GLException: Caught RuntimeException: java.lang.ArrayIndexOutOfBoundsException on thread AWT-EventQueue-0
        at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1327)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
        at com.jogamp.opengl.awt.GLJPanel$OffscreenBackend.doPaintComponent(GLJPanel.java:2095)
        at com.jogamp.opengl.awt.GLJPanel.paintComponent(GLJPanel.java:569)
        at java.desktop/javax.swing.JComponent.paint(JComponent.java:1119)
        at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5311)
        at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1657)
        at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1632)
        at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1570)
        at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1337)
        at java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5259)
        at java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5069)
        at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:879)
        at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:862)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
        at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:862)
        at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:835)
        at com.jogamp.opengl.util.AWTAnimatorImpl$1.run(AWTAnimatorImpl.java:170)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException
        at com.marginallyclever.robotoverlord.systems.robot.robotarm.ArmRobotSystem.applySmallCartesianForceToEndEffector(ArmRobotSystem.java:173)
        at com.marginallyclever.robotoverlord.systems.robot.robotarm.ArmRobotSystem.applyCartesianForceToEndEffector(ArmRobotSystem.java:138)
        at com.marginallyclever.robotoverlord.systems.robot.robotarm.ArmRobotSystem.updateRobotComponent(ArmRobotSystem.java:118)
        at com.marginallyclever.robotoverlord.systems.robot.robotarm.ArmRobotSystem.update(ArmRobotSystem.java:102)
        at com.marginallyclever.robotoverlord.RobotOverlord.lambda$1(RobotOverlord.java:169)
        at com.marginallyclever.robotoverlord.renderpanel.OpenGLRenderPanel.updateStep(OpenGLRenderPanel.java:842)
        at com.marginallyclever.robotoverlord.renderpanel.OpenGLRenderPanel$1.display(OpenGLRenderPanel.java:299)
        at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
        at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
        at com.jogamp.opengl.awt.GLJPanel$Updater.display(GLJPanel.java:1446)
        at com.jogamp.opengl.awt.GLJPanel$10.run(GLJPanel.java:1521)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
        ... 31 more
Caused by: java.lang.ArrayIndexOutOfBoundsException

This blocked the renderer, causing the app to become unresponsive. If the condition that lead to this could be fixed that would be great, otherwise I suggest a message box for the user with indication on how to proceed. Maybe an artificial trigger to the "Go to home" button.

i-make-robots commented 1 year ago

Please only report replicable bugs. Will reopen when you can.

github-actions[bot] commented 1 year ago

Stale issue message