Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8128660

Build 45 upgrade leads to endless loop

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not an Issue
    • Icon: P4 P4
    • None
    • fx2.0
    • javafx
    • None
    • Build45 - upgraded from build 42

      When upgrading to build 45 from build 42 I get a stack overflow as seen below.

      This problem involves a ChangeListener I have added to the bounds property of a label (also shown below). As you can see, I am listening for changes to the label's local bounds. With build 45, I get an endless loop caused by the fact that my listener is changing the children of the label's parent. This results in the bounds changing, my listener being called again, and so on.

      Now, this worked fine in build 42, so I am curious if this is expected behavior, or a bug was accidentally introduced with build 45.


      -----
      ChangeListener<? super Bounds> boundsListener = new ChangeListener<Bounds>() {

      @Override
      public void changed(ObservableValue<? extends Bounds> observable, Bounds oldValue, Bounds newValue) {
      Path path = balloonPath(newValue.getWidth() + 2 * PADDING, 0.9 * newValue.getHeight() + PADDING);
      stack.getChildren().setAll(path, label);
      }
      };
      label.boundsInLocalProperty().addListener(boundsListener);
      -----




      java.lang.StackOverflowError
      at javafx.scene.Node.getTransformedBounds(Node.java:2559)
      at javafx.scene.Parent.recomputeBounds(Parent.java:1269)
      at javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1072)
      at javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:2131)
      at javafx.scene.Node.updateGeomBounds(Node.java:2689)
      at javafx.scene.Node.getGeomBounds(Node.java:2649)
      at javafx.scene.Node.getLocalBounds(Node.java:2631)
      at javafx.scene.Node.updateTxBounds(Node.java:2702)
      at javafx.scene.Node.getTransformedBounds(Node.java:2561)
      at javafx.scene.Parent.recomputeBounds(Parent.java:1269)
      at javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1072)
      at javafx.scene.Node.updateGeomBounds(Node.java:2689)
      at javafx.scene.Node.getGeomBounds(Node.java:2649)
      at javafx.scene.Node.getLocalBounds(Node.java:2631)
      at javafx.scene.Node$MiscProperties$2.computeBounds(Node.java:4319)
      at javafx.scene.Node$LazyBoundsProperty.get(Node.java:6295)
      at javafx.scene.Node$LazyBoundsProperty.get(Node.java:6265)
      at javafx.beans.binding.ObjectExpression.getValue(ObjectExpression.java:26)
      at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:175)
      at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:61)
      at javafx.scene.Node$LazyBoundsProperty.invalidate(Node.java:6305)
      at javafx.scene.Node$MiscProperties.invalidateBoundsInLocal(Node.java:4347)
      at javafx.scene.Node.invalidateBoundsInLocal(Node.java:2330)
      at javafx.scene.Node.localBoundsChanged(Node.java:2873)
      at javafx.scene.Node.impl_geomChanged(Node.java:2862)
      at javafx.scene.Parent.impl_geomChanged(Parent.java:1511)
      at javafx.scene.Parent.childBoundsChanged(Parent.java:1535)
      at javafx.scene.Node.notifyParentOfBoundsChange(Node.java:2923)
      at javafx.scene.Node.transformedBoundsChanged(Node.java:2892)
      at javafx.scene.Node.localBoundsChanged(Node.java:2874)
      at javafx.scene.Node.impl_geomChanged(Node.java:2862)
      at javafx.scene.Parent.impl_geomChanged(Parent.java:1511)
      at javafx.scene.Parent.childBoundsChanged(Parent.java:1535)
      at javafx.scene.Node.notifyParentOfBoundsChange(Node.java:2923)
      at javafx.scene.Node.transformedBoundsChanged(Node.java:2892)
      at javafx.scene.Node.localBoundsChanged(Node.java:2874)
      at javafx.scene.Node.impl_geomChanged(Node.java:2862)
      at javafx.scene.text.Text.impl_geomChanged(Text.java:638)
      at javafx.scene.text.Text$4.invalidated(Text.java:299)
      at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:85)
      at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:119)
      at javafx.scene.text.Text.setFont(Text.java:274)
      at javafx.scene.text.Text.impl_cssSet(Text.java:1250)
      at javafx.scene.Node.impl_cssSet(Node.java:6200)
      at com.sun.javafx.css.StyleHelper.transitionToState(StyleHelper.java:708)
      at javafx.scene.Node.impl_processCSS(Node.java:6074)
      at javafx.scene.Parent.impl_processCSS(Parent.java:972)
      at javafx.scene.Parent.impl_processCSS(Parent.java:972)
      at javafx.scene.control.Control.impl_processCSS(Control.java:959)
      at javafx.scene.Node.impl_reapplyCSS(Node.java:6030)
      at javafx.scene.Node$4.invalidated(Node.java:692)
      at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:85)
      at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:119)
      at javafx.scene.Node.setScene(Node.java:659)
      at javafx.scene.Parent$1.onChanged(Parent.java:385)
      at com.sun.javafx.collections.VetoableObservableList.callObservers(VetoableObservableList.java:63)
      at com.sun.javafx.collections.ObservableListWrapper.setAll(ObservableListWrapper.java:221)
      at com.sun.javafx.collections.VetoableObservableList.setAll(VetoableObservableList.java:72)
      at com.sun.javafx.collections.ObservableListWrapper.setAll(ObservableListWrapper.java:232)
      at com.intuism.ui.component.balloon.BalloonSkin$1.changed(BalloonSkin.java:58)
      at com.intuism.ui.component.balloon.BalloonSkin$1.changed(BalloonSkin.java:53)
      at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:178)
      at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:61)
      at javafx.scene.Node$LazyBoundsProperty.invalidate(Node.java:6305)
      at javafx.scene.Node$MiscProperties.invalidateBoundsInLocal(Node.java:4347)
      at javafx.scene.Node.invalidateBoundsInLocal(Node.java:2330)
      at javafx.scene.Node.localBoundsChanged(Node.java:2873)
      at javafx.scene.Node.impl_geomChanged(Node.java:2862)
      at javafx.scene.Parent.impl_geomChanged(Parent.java:1511)
      at javafx.scene.Parent.childBoundsChanged(Parent.java:1535)
      at javafx.scene.Node.notifyParentOfBoundsChange(Node.java:2923)
      at javafx.scene.Node.transformedBoundsChanged(Node.java:2892)
      at javafx.scene.Node.localBoundsChanged(Node.java:2874)
      at javafx.scene.Node.impl_geomChanged(Node.java:2862)
      at javafx.scene.Parent.impl_geomChanged(Parent.java:1511)
      at javafx.scene.Parent.childBoundsChanged(Parent.java:1535)
      at javafx.scene.Node.notifyParentOfBoundsChange(Node.java:2923)
      at javafx.scene.Node.transformedBoundsChanged(Node.java:2892)
      at javafx.scene.Node.localBoundsChanged(Node.java:2874)
      at javafx.scene.Node.impl_geomChanged(Node.java:2862)
      at javafx.scene.text.Text.impl_geomChanged(Text.java:638)
      at javafx.scene.text.Text$4.invalidated(Text.java:299)
      at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:85)
      at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:119)
      at javafx.scene.text.Text.setFont(Text.java:274)
      at javafx.scene.text.Text.impl_cssSet(Text.java:1250)
      at javafx.scene.Node.impl_cssSet(Node.java:6200)
      at com.sun.javafx.css.StyleHelper.transitionToState(StyleHelper.java:708)
      at javafx.scene.Node.impl_processCSS(Node.java:6074)
      at javafx.scene.Parent.impl_processCSS(Parent.java:972)
      at javafx.scene.Node.impl_reapplyCSS(Node.java:6030)
      at javafx.scene.Node$4.invalidated(Node.java:692)
      at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:85)
      at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:119)
      at javafx.scene.Node.setScene(Node.java:659)
      at javafx.scene.Parent.computeDirtyScene(Parent.java:543)
      at javafx.scene.Parent.impl_sceneChanged(Parent.java:556)
      at javafx.scene.Node$4.invalidated(Node.java:711)
      at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:85)
      at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:119)
      at javafx.scene.Node.setScene(Node.java:659)
      at javafx.scene.Parent$1.onChanged(Parent.java:385)
      at com.sun.javafx.collections.VetoableObservableList.callObservers(VetoableObservableList.java:63)
      at com.sun.javafx.collections.ObservableListWrapper.setAll(ObservableListWrapper.java:221)
      at com.sun.javafx.collections.VetoableObservableList.setAll(VetoableObservableList.java:72)
      at com.sun.javafx.collections.ObservableListWrapper.setAll(ObservableListWrapper.java:232)
      at com.intuism.ui.component.balloon.BalloonSkin$1.changed(BalloonSkin.java:58)
      at com.intuism.ui.component.balloon.BalloonSkin$1.changed(BalloonSkin.java:53)
      at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:178)
      at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:61)
      at javafx.scene.Node$LazyBoundsProperty.invalidate(Node.java:6305)
      at javafx.scene.Node$MiscProperties.invalidateBoundsInLocal(Node.java:4347)
      at javafx.scene.Node.invalidateBoundsInLocal(Node.java:2330)
      at javafx.scene.Node.localBoundsChanged(Node.java:2873)
      at javafx.scene.Node.impl_geomChanged(Node.java:2862)
      at javafx.scene.Parent.impl_geomChanged(Parent.java:1511)
      at javafx.scene.Parent.childBoundsChanged(Parent.java:1535)
      at javafx.scene.Node.notifyParentOfBoundsChange(Node.java:2923)
      at javafx.scene.Node.transformedBoundsChanged(Node.java:2892)
      at javafx.scene.Node.localBoundsChanged(Node.java:2874)
      at javafx.scene.Node.impl_geomChanged(Node.java:2862)
      at javafx.scene.Parent.impl_geomChanged(Parent.java:1511)
      at javafx.scene.Parent.childBoundsChanged(Parent.java:1535)
      at javafx.scene.Node.notifyParentOfBoundsChange(Node.java:2923)
      at javafx.scene.Node.transformedBoundsChanged(Node.java:2892)
      at javafx.scene.Node.localBoundsChanged(Node.java:2874)
      at javafx.scene.Node.impl_geomChanged(Node.java:2862)
      at javafx.scene.text.Text.impl_geomChanged(Text.java:638)
      at javafx.scene.text.Text$4.invalidated(Text.java:299)
      at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:85)
      at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:119)
      at javafx.scene.text.Text.setFont(Text.java:274)
      at javafx.scene.text.Text.impl_cssSet(Text.java:1250)
      at javafx.scene.Node.impl_cssSet(Node.java:6200)
      at com.sun.javafx.css.StyleHelper.transitionToState(StyleHelper.java:708)
      at javafx.scene.Node.impl_processCSS(Node.java:6074)
      at javafx.scene.Parent.impl_processCSS(Parent.java:972)
      at javafx.scene.Parent.impl_processCSS(Parent.java:972)
      at javafx.scene.control.Control.impl_processCSS(Control.java:959)
      at javafx.scene.Node.impl_reapplyCSS(Node.java:6030)
      at javafx.scene.Node$4.invalidated(Node.java:692)
      at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:85)
      at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:119)
      at javafx.scene.Node.setScene(Node.java:659)
      at javafx.scene.Parent$1.onChanged(Parent.java:385)
      at com.sun.javafx.collections.VetoableObservableList.callObservers(VetoableObservableList.java:63)
      at com.sun.javafx.collections.ObservableListWrapper.setAll(ObservableListWrapper.java:221)
      at com.sun.javafx.collections.VetoableObservableList.setAll(VetoableObservableList.java:72)
      at com.sun.javafx.collections.ObservableListWrapper.setAll(ObservableListWrapper.java:232)
      at com.intuism.ui.component.balloon.BalloonSkin$1.changed(BalloonSkin.java:58)
      at com.intuism.ui.component.balloon.BalloonSkin$1.changed(BalloonSkin.java:53)
      at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:178)
      at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:61)
      (... etc. ...)

            jgiles Jonathan Giles
            risaksen Randahl Isaksen
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: