Re: JDK-8163078 ArrayIndexOutOfBounds is thrown in Parent.updateCachedBounds

2016-11-10 Thread Stefan Fuchs

Hi Daniel,

I mentioned it, because we got similar exceptions in our application, 
which stalled our application completely

We moved the add of the listeners around.
Luckily we could move most of the code,which added or removed listeners, 
to the application startup code.

So the problem went away.

As of JDK-8163078 I wonder, if the code below is correct, given that 
https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#layoutBoundsProperty 
says:


...
"Because the computation of layoutBounds is often tied to a node's 
geometric variables, it is an error to bind any such variables to an 
expression that depends upon |layoutBounds|. For example, the x or y 
variables of a shape should never be bound to layoutBounds for the 
purpose of positioning the node. "




DoubleBinding innerWidth = 
javafx.beans.binding.Bindings.createDoubleBinding(

() -> g.layoutBoundsProperty().get().getWidth(),
g.layoutBoundsProperty());
l.endXProperty().bind(innerWidth);


-- Stefan

Hi Stefan,

>From code review it seems that this is not the case. I'll ask my team mate to 
check this programmatically just to make sure...

Note that JDK-8163078 contains a code example which reproduces the exception 
but adds and removes listeners on the JavaFX thread.

Kind regards,
Daniel


-Original Message-
From: Stefan Fuchs [mailto:snfu...@gmx.de]
Sent: Wednesday, November 09, 2016 7:59 PM
To: Daniel Glöckner; openjfx-dev@openjdk.java.net
Subject: Re: JDK-8163078 ArrayIndexOutOfBounds is thrown in
Parent.updateCachedBounds

Hi Daniel,

are you registering or removing the listeners on  a thread other than the
JavaFX Application Thread?
I think the Observables are not thread save.


-- regards
   Stefan


Hi guys,

We're facing an exception triggered from Parent.updateCachedBounds. I've

pasted the stack trace below.

This looks very similar to https://bugs.openjdk.java.net/browse/JDK-

8163078.

We have a few listeners to layoutBounds property, similar to the reporter of

that issue. This seems to trigger the issue.

For us it's hard to reproduce this issue in our application. If the bug shows

up the result is quite disastrous though. The application freezes in this case.

Has anyone observed this bug or is aware of a workaround? P4 suggests that

it's a low priority issue with minor loss of functionality... really?

Kind regards,
Daniel

   ERROR [28.10.16 13:01:45.415] DefaultLogger uncaughtException()
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at

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

at

com.sun.javafx.collections.VetoableListDecorator.get(VetoableListDecorator.ja
va: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:3579)
at javafx.scene.Node.getGeomBounds(Node.java:3532)
at javafx.scene.Node.getLocalBounds(Node.java:3480)
at javafx.scene.Node.updateTxBounds(Node.java:3643)
at javafx.scene.Node.getTransformedBounds(Node.java:3426)
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.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(Quantum
Toolkit.java:319)

at

com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.jav
a:95)

at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at

com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:19
1)

at java.lang.Thread.run(Unknown Source)







RE: JDK-8163078 ArrayIndexOutOfBounds is thrown in Parent.updateCachedBounds

2016-11-10 Thread Daniel Glöckner
Hi Stefan,

>From code review it seems that this is not the case. I'll ask my team mate to 
>check this programmatically just to make sure...

Note that JDK-8163078 contains a code example which reproduces the exception 
but adds and removes listeners on the JavaFX thread.

Kind regards,
Daniel

> -Original Message-
> From: Stefan Fuchs [mailto:snfu...@gmx.de]
> Sent: Wednesday, November 09, 2016 7:59 PM
> To: Daniel Glöckner; openjfx-dev@openjdk.java.net
> Subject: Re: JDK-8163078 ArrayIndexOutOfBounds is thrown in
> Parent.updateCachedBounds
> 
> Hi Daniel,
> 
> are you registering or removing the listeners on  a thread other than the
> JavaFX Application Thread?
> I think the Observables are not thread save.
> 
> 
> -- regards
>   Stefan
> 
> > Hi guys,
> >
> > We're facing an exception triggered from Parent.updateCachedBounds. I've
> pasted the stack trace below.
> >
> > This looks very similar to https://bugs.openjdk.java.net/browse/JDK-
> 8163078.
> >
> > We have a few listeners to layoutBounds property, similar to the reporter of
> that issue. This seems to trigger the issue.
> >
> > For us it's hard to reproduce this issue in our application. If the bug 
> > shows
> up the result is quite disastrous though. The application freezes in this 
> case.
> >
> > Has anyone observed this bug or is aware of a workaround? P4 suggests that
> it's a low priority issue with minor loss of functionality... really?
> >
> > Kind regards,
> > Daniel
> >
> >   ERROR [28.10.16 13:01:45.415] DefaultLogger uncaughtException()
> > java.lang.ArrayIndexOutOfBoundsException: -1
> > at java.util.ArrayList.elementData(Unknown Source)
> > at java.util.ArrayList.get(Unknown Source)
> > at
> com.sun.javafx.collections.ObservableListWrapper.get(ObservableListWrappe
> r.java:89)
> > at
> com.sun.javafx.collections.VetoableListDecorator.get(VetoableListDecorator.ja
> va: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:3579)
> > at javafx.scene.Node.getGeomBounds(Node.java:3532)
> > at javafx.scene.Node.getLocalBounds(Node.java:3480)
> > at javafx.scene.Node.updateTxBounds(Node.java:3643)
> > at javafx.scene.Node.getTransformedBounds(Node.java:3426)
> > 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.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(Quantum
> Toolkit.java:319)
> > at
> com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.jav
> a:95)
> > at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
> > at
> com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:19
> 1)
> > at java.lang.Thread.run(Unknown Source)
> >



Re: JDK-8163078 ArrayIndexOutOfBounds is thrown in Parent.updateCachedBounds

2016-11-09 Thread Stefan Fuchs

Hi Daniel,

are you registering or removing the listeners on  a thread other than 
the JavaFX Application Thread?

I think the Observables are not thread save.


-- regards
 Stefan


Hi guys,

We're facing an exception triggered from Parent.updateCachedBounds. I've pasted 
the stack trace below.

This looks very similar to https://bugs.openjdk.java.net/browse/JDK-8163078.

We have a few listeners to layoutBounds property, similar to the reporter of 
that issue. This seems to trigger the issue.

For us it's hard to reproduce this issue in our application. If the bug shows 
up the result is quite disastrous though. The application freezes in this case.

Has anyone observed this bug or is aware of a workaround? P4 suggests that it's 
a low priority issue with minor loss of functionality... really?

Kind regards,
Daniel

  ERROR [28.10.16 13:01:45.415] DefaultLogger uncaughtException()
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
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:3579)
at javafx.scene.Node.getGeomBounds(Node.java:3532)
at javafx.scene.Node.getLocalBounds(Node.java:3480)
at javafx.scene.Node.updateTxBounds(Node.java:3643)
at javafx.scene.Node.getTransformedBounds(Node.java:3426)
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.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.win.WinApplication._runLoop(Native Method)
at 
com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Unknown Source)