SongKong Jaikoz

SongKong and Jaikoz Music Tagger Community Forum

IndexOutOfBoundsException in 2.3.1/Linux 2.6.24/Java 1.6.0_05

Running Jaikoz 2.3.1 on Linux 2.6.24 with Java 1.6.0_05:

$ uname -a
Linux liverwurst 2.6.24-gentoo-r4-mactel #2 SMP PREEMPT Fri Apr 4 01:49:21 BST 2008 i686 Genuine Intel(R) CPU 1500 @ 2.00GHz GenuineIntel GNU/Linux

$ java -version
java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM) Server VM (build 10.0-b19, mixed mode)

I’ve been trying to go through a large number of files (~5k), closing groups of them when I’m happy with their tags. After a while, I try to close a file whose id (row number) is apparently larger than the size of some internal structure keeping track of the open files. I get a IndexOutOfBoundsException and can no longer continue.

Stack trace (trying to close file id 4405; status bar claims 4503 open files; not sure where 4353 comes from):

06/04/2008 00.13.52:com.jthink.jaikoz.EventDispatchThreadExceptionHandler:handle:SEVERE: RuntimeException occurred in application
java.lang.IndexOutOfBoundsException: Index: 4405, Size: 4353
        at java.util.ArrayList.RangeCheck(ArrayList.java:547)
        at java.util.ArrayList.get(ArrayList.java:322)
        at com.jthink.jaikoz.table.tablemodel.TagDisplayMetaDataModel.getValueAt(TagDisplayMetaDataModel.java:74)
        at com.jthink.jaikoz.table.JaikozRowHeaderTable.getValueAt(JaikozRowHeaderTable.java:105)
        at javax.swing.JTable.prepareRenderer(JTable.java:5653)
        at org.jdesktop.swingx.JXTable.prepareRenderer(JXTable.java:3499)
        at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2072)
        at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1974)
        at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1770)
        at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
        at javax.swing.JComponent.paintComponent(JComponent.java:763)
        at javax.swing.JComponent.paint(JComponent.java:1027)
        at javax.swing.JComponent.paintChildren(JComponent.java:864)
        at javax.swing.JComponent.paint(JComponent.java:1036)
        at javax.swing.JViewport.paint(JViewport.java:747)
        at javax.swing.JComponent.paintChildren(JComponent.java:864)
        at javax.swing.JComponent.paint(JComponent.java:1036)
        at javax.swing.JComponent.paintChildren(JComponent.java:864)
        at javax.swing.JComponent.paint(JComponent.java:1036)
        at javax.swing.JComponent.paintChildren(JComponent.java:864)
        at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1026)
        at javax.swing.JComponent.paint(JComponent.java:1036)
        at javax.swing.JComponent.paintChildren(JComponent.java:864)
        at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1026)
        at javax.swing.JComponent.paint(JComponent.java:1036)
        at javax.swing.JComponent.paintChildren(JComponent.java:864)
        at javax.swing.JSplitPane.paintChildren(JSplitPane.java:1026)
        at javax.swing.JComponent.paint(JComponent.java:1036)
        at javax.swing.JComponent.paintChildren(JComponent.java:864)
        at javax.swing.JComponent.paint(JComponent.java:1036)
        at javax.swing.JComponent.paintChildren(JComponent.java:864)
        at javax.swing.JComponent.paint(JComponent.java:1036)
        at javax.swing.JLayeredPane.paint(JLayeredPane.java:564)
        at javax.swing.JComponent.paintChildren(JComponent.java:864)
        at javax.swing.JComponent.paint(JComponent.java:1036)
        at javax.swing.JComponent.paintToOffscreen(JComponent.java:5122)
        at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:285)
        at javax.swing.RepaintManager.paint(RepaintManager.java:1128)
        at javax.swing.JComponent._paintImmediately(JComponent.java:5070)
        at javax.swing.JComponent.paintImmediately(JComponent.java:4880)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:723)
        at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:679)
        at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:659)
        at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
        at java.awt.Dialog$1.run(Dialog.java:1045)
        at java.awt.Dialog$3.run(Dialog.java:1097)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Dialog.show(Dialog.java:1095)
        at java.awt.Component.show(Component.java:1422)
        at java.awt.Component.setVisible(Component.java:1375)
        at java.awt.Window.setVisible(Window.java:806)
        at java.awt.Dialog.setVisible(Dialog.java:985)
        at com.jthink.jaikoz.guielement.AbstractMessagePopupDisplayer.displayDialog(AbstractMessagePopupDisplayer.java:165)
        at com.jthink.jaikoz.guielement.ErrorMessagePopupDisplayer.display(ErrorMessagePopupDisplayer.java:48)
        at com.jthink.jaikoz.EventDispatchThreadExceptionHandler.handle(EventDispatchThreadExceptionHandler.java:50)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at java.awt.EventDispatchThread.handleException(EventDispatchThread.java:389)
        at java.awt.EventDispatchThread.processException(EventDispatchThread.java:295)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:287)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
        at java.awt.Dialog$1.run(Dialog.java:1045)
        at java.awt.Dialog$3.run(Dialog.java:1097)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Dialog.show(Dialog.java:1095)
        at java.awt.Component.show(Component.java:1422)
        at java.awt.Component.setVisible(Component.java:1375)
        at java.awt.Window.setVisible(Window.java:806)
        at java.awt.Dialog.setVisible(Dialog.java:985)
        at com.jthink.jaikoz.guielement.AbstractMessagePopupDisplayer.displayDialog(AbstractMessagePopupDisplayer.java:165)
        at com.jthink.jaikoz.guielement.ErrorMessagePopupDisplayer.display(ErrorMessagePopupDisplayer.java:48)
        at com.jthink.jaikoz.EventDispatchThreadExceptionHandler.handle(EventDispatchThreadExceptionHandler.java:50)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at java.awt.EventDispatchThread.handleException(EventDispatchThread.java:389)
        at java.awt.EventDispatchThread.processException(EventDispatchThread.java:295)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:287)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Ok, this is a known issue that affects a few customers - but I havent been able to get to the bottom of it yet. The new version of Jaikoz out soon has extra logging added to try and figure out why this is happening.