Bug in LabelView when resizing window larger

Issue #187 closed
Robert Leach created an issue

So I was using my 133x133 test data, debugging some reorganization of zoom code and encountered an error when resizing the window larger (quickly & a lot). I started out with the window at minimum size (the way it was on app start) and then quickly dragged the top left corner of the window to approximately max size. I got these errors in the console:

error: tried to retrieve header for  index 133 but max is 133
java.lang.ArrayIndexOutOfBoundsException: 133
0
 - edu.stanford.genetics.treeview.HeaderSummary.getSummary(HeaderSummary.java:86)
 - edu.stanford.genetics.treeview.plugin.dendroview.LabelView.updateBuffer(LabelView.java:416)
 - edu.stanford.genetics.treeview.plugin.dendroview.LabelView.updateBuffer(LabelView.java:347)
    at edu.stanford.genetics.treeview.model.IntHeaderInfo.getHeader(IntHeaderInfo.java:72)
    at edu.stanford.genetics.treeview.HeaderSummary.getSummary(HeaderSummary.java:66)
    at edu.stanford.genetics.treeview.plugin.dendroview.LabelView.updateBuffer(LabelView.java:416)
    at edu.stanford.genetics.treeview.plugin.dendroview.LabelView.updateBuffer(LabelView.java:347)
    at edu.stanford.genetics.treeview.ModelView.paintComponent(ModelView.java:161)
    at javax.swing.JComponent.paint(JComponent.java:1053)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JViewport.paint(JViewport.java:744)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5224)
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1532)
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1455)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1252)
    at javax.swing.JComponent.paint(JComponent.java:1039)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
    at java.awt.Container.paint(Container.java:1973)
    at java.awt.Window.paint(Window.java:3901)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:822)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:794)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:794)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
    at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1680)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
    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)
 - edu.stanford.genetics.treeview.ModelView.paintComponent(ModelView.java:161)
 - javax.swing.JComponent.paint(JComponent.java:1053)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JViewport.paint(JViewport.java:744)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paintToOffscreen(JComponent.java:5224)
 - javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1532)
 - javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1455)
 - javax.swing.RepaintManager.paint(RepaintManager.java:1252)
 - javax.swing.JComponent.paint(JComponent.java:1039)
 - java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
 - sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
 - sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
 - java.awt.Container.paint(Container.java:1973)
 - java.awt.Window.paint(Window.java:3901)
 - javax.swing.RepaintManager$3.run(RepaintManager.java:822)
 - javax.swing.RepaintManager$3.run(RepaintManager.java:794)
 - java.security.AccessController.doPrivileged(Native Method)
 - java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
 - javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:794)
 - javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
 - javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
 - javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
 - javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1680)
 - java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
 - java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
 - java.awt.EventQueue.access$400(EventQueue.java:97)
 - java.awt.EventQueue$3.run(EventQueue.java:697)
 - java.awt.EventQueue$3.run(EventQueue.java:691)
 - java.security.AccessController.doPrivileged(Native Method)
 - java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
 - java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
 - java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
 - java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
 - java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
 - java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
 - java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
 - java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
error: tried to retrieve header for  index 133 but max is 133
java.lang.ArrayIndexOutOfBoundsException: 133
    at edu.stanford.genetics.treeview.model.IntHeaderInfo.getHeader(IntHeaderInfo.java:72)
    at edu.stanford.genetics.treeview.plugin.dendroview.LabelView.updateBuffer(LabelView.java:417)
    at edu.stanford.genetics.treeview.plugin.dendroview.LabelView.updateBuffer(LabelView.java:347)
    at edu.stanford.genetics.treeview.ModelView.paintComponent(ModelView.java:161)
    at javax.swing.JComponent.paint(JComponent.java:1053)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JViewport.paint(JViewport.java:744)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paint(JComponent.java:1062)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
    at javax.swing.JComponent.paintChildren(JComponent.java:886)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5224)
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1532)
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1455)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1252)
    at javax.swing.JComponent.paint(JComponent.java:1039)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
    at java.awt.Container.paint(Container.java:1973)
    at java.awt.Window.paint(Window.java:3901)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:822)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:794)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:794)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
    at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1680)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
    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)
133
 - edu.stanford.genetics.treeview.TreeSelection$IntegerSelection.isSelected(TreeSelection.java:306)
 - edu.stanford.genetics.treeview.TreeSelection.isIndexSelected(TreeSelection.java:119)
 - edu.stanford.genetics.treeview.plugin.dendroview.LabelView.updateBuffer(LabelView.java:424)
 - edu.stanford.genetics.treeview.plugin.dendroview.LabelView.updateBuffer(LabelView.java:347)
 - edu.stanford.genetics.treeview.ModelView.paintComponent(ModelView.java:161)
 - javax.swing.JComponent.paint(JComponent.java:1053)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JViewport.paint(JViewport.java:744)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paint(JComponent.java:1062)
 - javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
 - javax.swing.JComponent.paintChildren(JComponent.java:886)
 - javax.swing.JComponent.paintToOffscreen(JComponent.java:5224)
 - javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1532)
 - javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1455)
 - javax.swing.RepaintManager.paint(RepaintManager.java:1252)
 - javax.swing.JComponent.paint(JComponent.java:1039)
 - java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
 - sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
 - sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
 - java.awt.Container.paint(Container.java:1973)
 - java.awt.Window.paint(Window.java:3901)
 - javax.swing.RepaintManager$3.run(RepaintManager.java:822)
 - javax.swing.RepaintManager$3.run(RepaintManager.java:794)
 - java.security.AccessController.doPrivileged(Native Method)
 - java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
 - javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:794)
 - javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
 - javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
 - javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
 - javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1680)
 - java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
 - java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
 - java.awt.EventQueue.access$400(EventQueue.java:97)
 - java.awt.EventQueue$3.run(EventQueue.java:697)
 - java.awt.EventQueue$3.run(EventQueue.java:691)
 - java.security.AccessController.doPrivileged(Native Method)
 - java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
 - java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
 - java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
 - java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
 - java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
 - java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
 - java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
 - java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Comments (8)

  1. Robert Leach reporter

    Max index should be 132, so it's calling with an index of 133 (out of bounds) on LabelView.java:416.

  2. Robert Leach reporter

    Also getting this error occasionally in DoubleArrayDrawer, line 297:

    ArrayIndexOutOfBoundsException in paint() in DoubleArrayDrawer: null

  3. Christopher Keil repo owner

    I have seen these errors before but couldn't look at them right away. This seems to be an issue about updating all used classes to the current state of the matrix/ model. At given occasions, not all classes are updated properly such that their variables contain the appropriate state at that time.

  4. Log in to comment