Skip to content

Events pane gives StackOverflowError when GUI.createToolPane(...) is used #8

@PavelTurk

Description

@PavelTurk

This is my code:

public class Test1 extends Application {

    @Override
    public void start(Stage primaryStage) {
        var button = new Button("Test");
        var button2 = new Button("Test2");
        var hBox = new HBox(button, button2);
        button2.setOnAction(e -> System.out.println("Test2"));
        VBox root = new VBox(hBox);
        button.setOnAction(e -> {
            ToolPane pane = GUI.createToolPane(primaryStage, getHostServices());
            VBox.setVgrow(pane, Priority.ALWAYS);
            root.getChildren().add(pane);
            pane.getConnector().start();
        });
        Scene scene = new Scene(root, 1000, 760);
        scene.getStylesheets().add(getClass().getResource("styles.css").toExternalForm());
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

When I run the application, click the test button, select the Events tab, and click the Record button, I get:

Exception in thread "JavaFX Application Thread" java.lang.StackOverflowError
	at javafx.graphics@25/javafx.scene.Parent.requestParentLayout(Parent.java:1069)
	at javafx.graphics@25/javafx.scene.Parent.markDirtyLayout(Parent.java:1015)
	at javafx.graphics@25/javafx.scene.Parent.requestLayout(Parent.java:1031)
	at javafx.graphics@25/javafx.scene.Parent.requestParentLayout(Parent.java:1069)
	at javafx.graphics@25/javafx.scene.Parent.markDirtyLayout(Parent.java:1015)
	at javafx.graphics@25/javafx.scene.Parent.requestLayout(Parent.java:1031)
	at javafx.graphics@25/javafx.scene.layout.StackPane.requestLayout(StackPane.java:322)
	at javafx.graphics@25/javafx.scene.Parent.requestParentLayout(Parent.java:1069)
	at javafx.graphics@25/javafx.scene.Parent.markDirtyLayout(Parent.java:1015)
	at javafx.graphics@25/javafx.scene.Parent.requestLayout(Parent.java:1031)
	at javafx.graphics@25/javafx.scene.layout.VBox.requestLayout(VBox.java:548)
	at javafx.graphics@25/javafx.scene.Parent.requestParentLayout(Parent.java:1069)
	at javafx.graphics@25/javafx.scene.Parent.markDirtyLayout(Parent.java:1015)
	at javafx.graphics@25/javafx.scene.Parent.requestLayout(Parent.java:1031)
	at javafx.graphics@25/javafx.scene.layout.HBox.requestLayout(HBox.java:568)
	at javafx.graphics@25/javafx.scene.Parent.requestParentLayout(Parent.java:1069)
	at javafx.graphics@25/javafx.scene.Parent.markDirtyLayout(Parent.java:1015)
	at javafx.graphics@25/javafx.scene.Parent.requestLayout(Parent.java:1031)
	at javafx.graphics@25/javafx.scene.Parent$2.onChanged(Parent.java:460)
	at javafx.base@25/com.sun.javafx.collections.TrackableObservableList.lambda$new$0(TrackableObservableList.java:44)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper$Generic.fireValueChangedEvent(ListListenerHelper.java:327)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:71)
	at javafx.base@25/javafx.collections.ObservableListBase.fireChange(ObservableListBase.java:246)
	at javafx.base@25/javafx.collections.ListChangeBuilder.commit(ListChangeBuilder.java:482)
	at javafx.base@25/javafx.collections.ListChangeBuilder.endChange(ListChangeBuilder.java:541)
	at javafx.base@25/javafx.collections.ObservableListBase.endChange(ObservableListBase.java:210)
	at javafx.base@25/javafx.collections.ModifiableObservableListBase.setAll(ModifiableObservableListBase.java:102)
	at javafx.base@25/com.sun.javafx.collections.VetoableListDecorator.setAllImpl(VetoableListDecorator.java:131)
	at javafx.base@25/com.sun.javafx.collections.VetoableListDecorator.setAll(VetoableListDecorator.java:118)
	at javafx.controls@25/javafx.scene.control.skin.LabeledSkinBase.updateChildren(LabeledSkinBase.java:285)
	at javafx.controls@25/javafx.scene.control.skin.LabeledSkinBase.lambda$new$11(LabeledSkinBase.java:222)
	at javafx.controls@25/com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler.lambda$new$0(LambdaMultiplePropertyChangeListenerHandler.java:88)
	at javafx.base@25/javafx.beans.value.WeakChangeListener.changed(WeakChangeListener.java:86)
	at javafx.base@25/com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:192)
	at javafx.base@25/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:91)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.fireValueChangedEvent(StringPropertyBase.java:104)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.markInvalid(StringPropertyBase.java:111)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.set(StringPropertyBase.java:145)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.set(StringPropertyBase.java:50)
	at javafx.base@25/javafx.beans.property.StringProperty.setValue(StringProperty.java:71)
	at javafx.controls@25/javafx.scene.control.Labeled.setText(Labeled.java:157)
	at devtoolsfx.gui.eventlog.EventLogTab.updateStatusLabel(EventLogTab.java:211)
	at devtoolsfx.gui.eventlog.EventLogTab.offer(EventLogTab.java:67)
	at devtoolsfx.gui.ToolPane.dispatchEvent(ToolPane.java:362)
	at devtoolsfx.gui.ToolPane.lambda$startListenToEvents$7(ToolPane.java:356)
	at devtoolsfx.event.EventBus.fire(EventBus.java:72)
	at devtoolsfx.event.EventBus.lambda$fire$3(EventBus.java:60)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:186)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:807)
	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:294)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.concurrent.ConcurrentHashMap$KeySpliterator.forEachRemaining(ConcurrentHashMap.java:3589)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:153)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:176)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:636)
	at devtoolsfx.event.EventBus.fire(EventBus.java:60)
	at devtoolsfx.connector.WindowMonitor.fire(WindowMonitor.java:593)
	at devtoolsfx.connector.WindowMonitor.removeNodeBranchListenersAndNotify(WindowMonitor.java:530)
	at devtoolsfx.connector.WindowMonitor.onNodeChildrenChanged(WindowMonitor.java:327)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper$SingleChange.fireValueChangedEvent(ListListenerHelper.java:162)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:71)
	at javafx.base@25/javafx.collections.ObservableListBase.fireChange(ObservableListBase.java:246)
	at javafx.base@25/javafx.collections.FXCollections$UnmodifiableObservableListImpl.lambda$new$0(FXCollections.java:947)
	at javafx.base@25/javafx.collections.WeakListChangeListener.onChanged(WeakListChangeListener.java:88)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper$SingleChange.fireValueChangedEvent(ListListenerHelper.java:162)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:71)
	at javafx.base@25/com.sun.javafx.collections.VetoableListDecorator.lambda$new$0(VetoableListDecorator.java:79)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper$Generic.fireValueChangedEvent(ListListenerHelper.java:327)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:71)
	at javafx.base@25/javafx.collections.ObservableListBase.fireChange(ObservableListBase.java:246)
	at javafx.base@25/javafx.collections.ListChangeBuilder.commit(ListChangeBuilder.java:482)
	at javafx.base@25/javafx.collections.ListChangeBuilder.endChange(ListChangeBuilder.java:541)
	at javafx.base@25/javafx.collections.ObservableListBase.endChange(ObservableListBase.java:210)
	at javafx.base@25/javafx.collections.ModifiableObservableListBase.setAll(ModifiableObservableListBase.java:102)
	at javafx.base@25/com.sun.javafx.collections.VetoableListDecorator.setAllImpl(VetoableListDecorator.java:131)
	at javafx.base@25/com.sun.javafx.collections.VetoableListDecorator.setAll(VetoableListDecorator.java:118)
	at javafx.controls@25/javafx.scene.control.skin.LabeledSkinBase.updateChildren(LabeledSkinBase.java:285)
	at javafx.controls@25/javafx.scene.control.skin.LabeledSkinBase.lambda$new$11(LabeledSkinBase.java:222)
	at javafx.controls@25/com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler.lambda$new$0(LambdaMultiplePropertyChangeListenerHandler.java:88)
	at javafx.base@25/javafx.beans.value.WeakChangeListener.changed(WeakChangeListener.java:86)
	at javafx.base@25/com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:192)
	at javafx.base@25/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:91)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.fireValueChangedEvent(StringPropertyBase.java:104)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.markInvalid(StringPropertyBase.java:111)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.set(StringPropertyBase.java:145)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.set(StringPropertyBase.java:50)
	at javafx.base@25/javafx.beans.property.StringProperty.setValue(StringProperty.java:71)
	at javafx.controls@25/javafx.scene.control.Labeled.setText(Labeled.java:157)
	at devtoolsfx.gui.eventlog.EventLogTab.updateStatusLabel(EventLogTab.java:211)
	at devtoolsfx.gui.eventlog.EventLogTab.offer(EventLogTab.java:67)
	at devtoolsfx.gui.ToolPane.dispatchEvent(ToolPane.java:362)
	at devtoolsfx.gui.ToolPane.lambda$startListenToEvents$7(ToolPane.java:356)
	at devtoolsfx.event.EventBus.fire(EventBus.java:72)
	at devtoolsfx.event.EventBus.lambda$fire$3(EventBus.java:60)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:186)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:807)
	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:294)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.concurrent.ConcurrentHashMap$KeySpliterator.forEachRemaining(ConcurrentHashMap.java:3589)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:153)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:176)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:636)
	at devtoolsfx.event.EventBus.fire(EventBus.java:60)
	at devtoolsfx.connector.WindowMonitor.fire(WindowMonitor.java:593)
	at devtoolsfx.connector.WindowMonitor.removeNodeBranchListenersAndNotify(WindowMonitor.java:530)
	at devtoolsfx.connector.WindowMonitor.onNodeChildrenChanged(WindowMonitor.java:327)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper$SingleChange.fireValueChangedEvent(ListListenerHelper.java:162)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:71)
	at javafx.base@25/javafx.collections.ObservableListBase.fireChange(ObservableListBase.java:246)
	at javafx.base@25/javafx.collections.FXCollections$UnmodifiableObservableListImpl.lambda$new$0(FXCollections.java:947)
	at javafx.base@25/javafx.collections.WeakListChangeListener.onChanged(WeakListChangeListener.java:88)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper$SingleChange.fireValueChangedEvent(ListListenerHelper.java:162)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:71)
	at javafx.base@25/com.sun.javafx.collections.VetoableListDecorator.lambda$new$0(VetoableListDecorator.java:79)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper$Generic.fireValueChangedEvent(ListListenerHelper.java:327)
	at javafx.base@25/com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(ListListenerHelper.java:71)
	at javafx.base@25/javafx.collections.ObservableListBase.fireChange(ObservableListBase.java:246)
	at javafx.base@25/javafx.collections.ListChangeBuilder.commit(ListChangeBuilder.java:482)
	at javafx.base@25/javafx.collections.ListChangeBuilder.endChange(ListChangeBuilder.java:541)
	at javafx.base@25/javafx.collections.ObservableListBase.endChange(ObservableListBase.java:210)
	at javafx.base@25/javafx.collections.ModifiableObservableListBase.setAll(ModifiableObservableListBase.java:102)
	at javafx.base@25/com.sun.javafx.collections.VetoableListDecorator.setAllImpl(VetoableListDecorator.java:131)
	at javafx.base@25/com.sun.javafx.collections.VetoableListDecorator.setAll(VetoableListDecorator.java:118)
	at javafx.controls@25/javafx.scene.control.skin.LabeledSkinBase.updateChildren(LabeledSkinBase.java:285)
	at javafx.controls@25/javafx.scene.control.skin.LabeledSkinBase.lambda$new$11(LabeledSkinBase.java:222)
	at javafx.controls@25/com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler.lambda$new$0(LambdaMultiplePropertyChangeListenerHandler.java:88)
	at javafx.base@25/javafx.beans.value.WeakChangeListener.changed(WeakChangeListener.java:86)
	at javafx.base@25/com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:192)
	at javafx.base@25/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:91)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.fireValueChangedEvent(StringPropertyBase.java:104)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.markInvalid(StringPropertyBase.java:111)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.set(StringPropertyBase.java:145)
	at javafx.base@25/javafx.beans.property.StringPropertyBase.set(StringPropertyBase.java:50)
	at javafx.base@25/javafx.beans.property.StringProperty.setValue(StringProperty.java:71)
	at javafx.controls@25/javafx.scene.control.Labeled.setText(Labeled.java:157)
	at devtoolsfx.gui.eventlog.EventLogTab.updateStatusLabel(EventLogTab.java:211)
	at devtoolsfx.gui.eventlog.EventLogTab.offer(EventLogTab.java:67)
	at devtoolsfx.gui.ToolPane.dispatchEvent(ToolPane.java:362)
	at devtoolsfx.gui.ToolPane.lambda$startListenToEvents$7(ToolPane.java:356)
	at devtoolsfx.event.EventBus.fire(EventBus.java:72)
	at devtoolsfx.event.EventBus.lambda$fire$3(EventBus.java:60)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:186)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:807)
	at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:294)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.concurrent.ConcurrentHashMap$KeySpliterator.forEachRemaining(ConcurrentHashMap.java:3589)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:153)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:176)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:636)

....

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions