3

I have a pretty nasty bug on JavaFX (jdk 1.8.0_91) occurring in my application in which several progress bars are displayed and update (randomly or at the same time). Sometimes, especially when a progress bar is filled (it had a style class to the progress bar) but sometimes also in the middle of nothing, the software blocks and I have this trace appearing several times (not always the same number, but the last one was 27 times) :

Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException: -1

at java.util.ArrayList.elementData(ArrayList.java:418)

at java.util.ArrayList.get(ArrayList.java:431)

at com.sun.javafx.collections.ObservableListWrapper.get(ObservableListWrapper.java:89)

at com.sun.javafx.collections.VetoableListDecorator.get(VetoableListDecorator.java:306)

at javafx.scene.Parent.updateCachedBounds(Parent.java:1591)

at javafx.scene.Parent.recomputeBounds(Parent.java:1535)

at javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1388)

at javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)

at javafx.scene.Node.updateGeomBounds(Node.java:3577)

at javafx.scene.Node.getGeomBounds(Node.java:3530)

at javafx.scene.Node.getLocalBounds(Node.java:3478)

at javafx.scene.Node.updateTxBounds(Node.java:3641)

at javafx.scene.Node.getTransformedBounds(Node.java:3424)

at javafx.scene.Node.updateBounds(Node.java:559)

at javafx.scene.Parent.updateBounds(Parent.java:1719)

at javafx.scene.Parent.updateBounds(Parent.java:1717)

at javafx.scene.Parent.updateBounds(Parent.java:1717)

at javafx.scene.Parent.updateBounds(Parent.java:1717)

at javafx.scene.Parent.updateBounds(Parent.java:1717)

at javafx.scene.Parent.updateBounds(Parent.java:1717)

at javafx.scene.Parent.updateBounds(Parent.java:1717)

at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2404)

at com.sun.javafx.tk.Toolkit.lambda$runPulse$30(Toolkit.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:354)

at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:381)

at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:510)

at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:490)

at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$404(QuantumToolkit.java:319)

at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)

at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)

at com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139)

at java.lang.Thread.run(Thread.java:745)

The 27 traces are then followed by a huge amount of this message :

Exception in thread "JavaFX Application Thread" java.lang.ArrayIndexOutOfBoundsException

Since there is no sign of my own code in the exception stacktrace, I am a bit lost. Does anyone have an idea where this could come from ?

Arthur Vaïsse
  • 1,551
  • 1
  • 13
  • 26
  • 1
    Since there's no code, the best anyone can do here is make random guesses. Is there any way you can create a [MCVE] that reproduces the problem? Otherwise, my best random guess is that you're trying to access the UI from a background thread. My next guess would be that you're modifying an observable list while processing a change on that list in a `ListChangeListener`. But this is all guesswork at this stage. – James_D May 30 '16 at 17:08
  • I have got the same problem at random times, rarely though. – glmxndr Dec 02 '16 at 10:14

1 Answers1

2

The issue is pretty common if there is a modification of the UI that is not on the JavaFX thread. Unfortunately in this case you get an Array Index out of bounds exception and no real clue where the issue happens.

See also (search result for "ObservableListWrapper.java:89"):

Wolfgang Fahl
  • 15,016
  • 11
  • 93
  • 186