Stack Overflow with JavaFX on Android

39 views
Skip to first unread message

ando...@gmail.com

unread,
Jun 11, 2015, 7:22:14 PM6/11/15
to javafx...@googlegroups.com
Hi!

We're porting a large Swing app to JavaFX for use on Android, and I'm encountering a Stack Overflow in some situations, due to the very small default Android stack size. I've modified the app in a number of other places to spawn threads with larger stacks (for example when deserializing objects with nested components) but can't figure out how or if it's possible to increase the stack size of the JFX thread. As far as I can tell the JFX thread is not the main app thread that's launched, which it's apparently impossible to increase the stack size on, but instead somehow spawned by the JFXPorts Android Launcher, although I couldn't find where exactly that happens.

We're already looking into reducing the number of nested Regions, but it would be touch to guarantee that in all circumstances and in the future.

Anyone know if it's possible to increase the stack size of the JFX rendering thread, or how I'd go about doing that? Stack trace is below.

Thanks!

~Berj


I/dalvikvm(14117): threadid=17: stack overflow on call to Ljavafx/scene/Node;.getTransformedBounds:LLL
I/dalvikvm(14117): method requires 236+20+100=356 bytes, fp is 0x7f170370 (112 left)
I/dalvikvm(14117): expanding stack end (0x7f170300 to 0x7f170000)
I/dalvikvm(14117): Shrank stack (to 0x7f170300, curFrame is 0x7f173c14)
W/System.err(14117): Handling uncaughtException @ Thu Jun 11 20:33:53 UTC 2015
W/System.err(14117): java.lang.StackOverflowError
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.updateCachedBounds(Parent.java:1585)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1524)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1513)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.updateCachedBounds(Parent.java:1585)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1524)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1513)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1513)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.updateCachedBounds(Parent.java:1585)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1524)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.updateCachedBounds(Parent.java:1585)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1524)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1513)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.updateCachedBounds(Parent.java:1585)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1524)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.updateCachedBounds(Parent.java:1585)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1524)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.updateCachedBounds(Parent.java:1585)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1524)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.updateTxBounds(Node.java:3620)
W/System.err(14117): javafx.scene.Node.getTransformedBounds(Node.java:3403)
W/System.err(14117): javafx.scene.Parent.getChildTransformedBounds(Parent.java:1721)
W/System.err(14117): javafx.scene.Parent.updateCachedBounds(Parent.java:1585)
W/System.err(14117): javafx.scene.Parent.recomputeBounds(Parent.java:1524)
W/System.err(14117): javafx.scene.Parent.impl_computeGeomBounds(Parent.java:1377)
W/System.err(14117): javafx.scene.layout.Region.impl_computeGeomBounds(Region.java:3078)
W/System.err(14117): javafx.scene.Node.updateGeomBounds(Node.java:3556)
W/System.err(14117): javafx.scene.Node.getGeomBounds(Node.java:3509)
W/System.err(14117): javafx.scene.Node.getLocalBounds(Node.java:3457)
W/System.err(14117): javafx.scene.Node.impl_intersectsBounds(Node.java:4992)
W/System.err(14117): javafx.scene.layout.Region.impl_pickNodeLocal(Region.java:2931)
W/System.err(14117): javafx.scene.Node.impl_pickNode(Node.java:4891)
W/System.err(14117): javafx.scene.Scene$MouseHandler.pickNode(Scene.java:3899)
W/System.err(14117): javafx.scene.Scene$MouseHandler.access$1600(Scene.java:3485)
W/System.err(14117): javafx.scene.Scene.pick(Scene.java:1942)
W/System.err(14117): javafx.scene.Scene.pick(Scene.java:1917)
W/System.err(14117): javafx.scene.Scene.access$4900(Scene.java:159)
W/System.err(14117): javafx.scene.Scene$ScenePeerListener.touchEventNext(Scene.java:2724)
W/System.err(14117): com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$null$360(GlassViewEventHandler.java:1119)
W/System.err(14117): com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$21.run(Unknown Source)
W/System.err(14117): java.security.AccessController.doPrivileged(AccessController.java:52)
W/System.err(14117): com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleNextTouchEvent$361(GlassViewEventHandler.java:1100)
W/System.err(14117): com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$18.get(Unknown Source)
W/System.err(14117): com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
W/System.err(14117): com.sun.javafx.tk.quantum.GlassViewEventHandler.handleNextTouchEvent(GlassViewEventHandler.java:1099)
W/System.err(14117): com.sun.glass.ui.View.handleNextTouchEvent(View.java:579)
W/System.err(14117): com.sun.glass.ui.View.notifyNextTouchEvent(View.java:1050)
W/System.err(14117): com.sun.glass.ui.TouchInputSupport.notifyNextTouchEvent(TouchInputSupport.java:139)
W/System.err(14117): com.sun.glass.ui.monocle.TouchInput.dispatchPoint(TouchInput.java:131)
W/System.err(14117): com.sun.glass.ui.monocle.TouchInput.lambda$postPoint$83(TouchInput.java:155)
W/System.err(14117): com.sun.glass.ui.monocle.TouchInput$$Lambda$4.run(Unknown Source)
W/System.err(14117): com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92)
W/System.err(14117): com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51)
W/System.err(14117): java.lang.Thread.run(Thread.java:841)
I/System.out(14117): QuantumRenderer: shutdown

ando...@gmail.com

unread,
Jun 11, 2015, 8:08:51 PM6/11/15
to javafx...@googlegroups.com, ando...@gmail.com
Believe I found my soultion here, trying it out:

https://groups.google.com/forum/#!topic/javafxandroid/9s4b-OQzCGk

Joeri Sykora

unread,
Jun 12, 2015, 1:19:53 AM6/12/15
to Andorion, javafx...@googlegroups.com

Yes, that is the answer, we've already added this question to the FAQ, since it gets asked from time to time:

http://javafxports.org/page/FAQ

Op 12-jun.-2015 02:08 schreef <ando...@gmail.com>:
--
You received this message because you are subscribed to the Google Groups "JavaFXAndroid" group.
To unsubscribe from this group and stop receiving emails from it, send an email to javafxandroi...@googlegroups.com.
To post to this group, send email to javafx...@googlegroups.com.
Visit this group at http://groups.google.com/group/javafxandroid.
To view this discussion on the web visit https://groups.google.com/d/msgid/javafxandroid/1fd089ea-53a6-4d46-bc22-58ee9be78cfa%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages