gluonhq / maps

https://gluonhq.com/labs/maps/
GNU General Public License v3.0
141 stars 35 forks source link

IndexOutOfBoundsException #67

Closed leowhss closed 2 years ago

leowhss commented 2 years ago

Hello,

Ran com.gluonhq.maps.samples.mobile.MobileSample.java from maps-2.0.0-ea-4/

on Pop!_OS 21.04 and zulu11.52.13-ca-fx-jdk11.0.13-linux_x64 which has the following JavaFX

javafx.version=17.0.1 javafx.runtime.version=17.0.1+101 javafx.runtime.build=101

After zooming and panning for a short duration,

the following Exception will be repeatedly thrown:

Exception in thread "JavaFX Application Thread" java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 2 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) at java.base/java.util.Objects.checkIndex(Objects.java:372) at java.base/java.util.ArrayList.get(ArrayList.java:459) at javafx.base/com.sun.javafx.collections.ObservableListWrapper.get(ObservableListWrapper.java:89) at javafx.base/com.sun.javafx.collections.VetoableListDecorator.get(VetoableListDecorator.java:305) at javafx.graphics/javafx.scene.Parent.updateCachedBounds(Parent.java:1704) at javafx.graphics/javafx.scene.Parent.recomputeBounds(Parent.java:1648) at javafx.graphics/javafx.scene.Parent.doComputeGeomBounds(Parent.java:1501) at javafx.graphics/javafx.scene.Parent$1.doComputeGeomBounds(Parent.java:115) at javafx.graphics/com.sun.javafx.scene.ParentHelper.computeGeomBoundsImpl(ParentHelper.java:84) at javafx.graphics/com.sun.javafx.scene.layout.RegionHelper.superComputeGeomBoundsImpl(RegionHelper.java:78) at javafx.graphics/com.sun.javafx.scene.layout.RegionHelper.superComputeGeomBounds(RegionHelper.java:62) at javafx.graphics/javafx.scene.layout.Region.doComputeGeomBounds(Region.java:3355) at javafx.graphics/javafx.scene.layout.Region$1.doComputeGeomBounds(Region.java:168) at javafx.graphics/com.sun.javafx.scene.layout.RegionHelper.computeGeomBoundsImpl(RegionHelper.java:89) at javafx.graphics/com.sun.javafx.scene.NodeHelper.computeGeomBounds(NodeHelper.java:116) at javafx.graphics/javafx.scene.Node.updateGeomBounds(Node.java:3813) at javafx.graphics/javafx.scene.Node.getGeomBounds(Node.java:3775) at javafx.graphics/javafx.scene.Node.computeLocalBounds(Node.java:3829) at javafx.graphics/javafx.scene.Node.updateLocalBounds(Node.java:3859) at javafx.graphics/javafx.scene.Node.getLocalBounds(Node.java:3729) at javafx.graphics/javafx.scene.Node.intersectsBounds(Node.java:5258) at javafx.graphics/javafx.scene.Node$1.intersectsBounds(Node.java:558) at javafx.graphics/com.sun.javafx.scene.NodeHelper.intersectsBounds(NodeHelper.java:263) at javafx.graphics/javafx.scene.layout.Region.doPickNodeLocal(Region.java:3224) at javafx.graphics/javafx.scene.layout.Region$1.doPickNodeLocal(Region.java:184) at javafx.graphics/com.sun.javafx.scene.layout.RegionHelper.pickNodeLocalImpl(RegionHelper.java:104) at javafx.graphics/com.sun.javafx.scene.NodeHelper.pickNodeLocal(NodeHelper.java:129) at javafx.graphics/javafx.scene.Node.pickNode(Node.java:5168) at javafx.graphics/javafx.scene.Scene$MouseHandler.pickNode(Scene.java:4040) at javafx.graphics/javafx.scene.Scene.pick(Scene.java:2058) at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3850) at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1878) at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2623) at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411) at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301) at java.base/java.security.AccessController.doPrivileged(Native Method) at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450) at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424) at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449) at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:557) at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:943) at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:290) at java.base/java.lang.Thread.run(Thread.java:829)

Thanks,

Sean

rjolly commented 2 years ago

Same here. Both on 16.0.1 and 18.0.1.

rjolly commented 2 years ago

Cc @abhinayagarwal @jperedadnr

rjolly commented 2 years ago

It looks like something ought to be done on the JavaFX Application Thread, which is currently not:

https://stackoverflow.com/questions/56090082/how-to-fix-indexoutofbounds-exception-when-javafx-recomputes-parent-node-bounds