StackOverflowError when opening SceneComposer

When clicking on an empty scene" Edit in SceneComposer" a warning dialog occurs:
“Error in Scene!”
“(java.lang.StackOverflowError)”

I faced the problem after adding a terrain to the scene, deleted the scene, creating a new scene and adding a new terrain again. The second time the terrain didn’t show up in the scene editor preview.

Is there a way or some best practice to let the SDK use more memory on startup?
How can I recover from this problem? Even restarting Netbeans didn’t solve this. Which Windows process should be killed?

You have some other problem with your graphics setup that causes an error message loop, no need to increase the memory. Make sure you have a compatible graphics card and driver installed: https://wiki.jmonkeyengine.org/legacy/doku.php/sdk:troubleshooting

I don’t get the sense of your argument. My graphics card is Nvidia GeForce 9600M GS, which works very well since many years…
As the card iteself works very well with all of my games, including the one that I built myself with jME 1, the problem has obiously something to do with the software that talks to the graphics card driver. You seem to know more about the problem because you assumed that it was caused by an error message loop. But the troubleshooting documentation doesn’t contain any information about that. What can I do next?

I have installed all SDK updates which have been recommended automatically by the SDK. Could this be the problem?
BTW, where to get the nightly build of the SDK?

Check the log, theres exceptions and they happen each update. When you see a train wreck in front of your window you do not know where the train came from or where it wanted to go, neither why it crashed. But you do know it wasn’t running on the tracks. Same with the error messages ^^

Ok, where can I find the crashed train? The docu didn’t help me to find it.

In the settings folder, var/log or something.

Yes, the log message is inside var/log/messages.log:

SEVERE [com.jme3.app.AppTask]: Exception
java.lang.RuntimeException: size given: 101 Terrain quad sizes may only be (2^N + 1)
at com.jme3.terrain.geomipmap.TerrainQuad.(TerrainQuad.java:194)
at com.jme3.terrain.geomipmap.TerrainQuad.(TerrainQuad.java:159)
at com.jme3.terrain.geomipmap.TerrainQuad.(TerrainQuad.java:125)
at com.jme3.gde.terraineditor.AddTerrainAction.doCreateTerrain(AddTerrainAction.java:114)
at com.jme3.gde.terraineditor.AddTerrainAction.generateTerrain(AddTerrainAction.java:100)
at com.jme3.gde.terraineditor.AddTerrainAction.doCreateSpatial(AddTerrainAction.java:69)
at com.jme3.gde.core.sceneexplorer.nodes.actions.AbstractNewSpatialWizardAction$1$1.call(AbstractNewSpatialWizardAction.java:73)
at com.jme3.gde.core.sceneexplorer.nodes.actions.AbstractNewSpatialWizardAction$1$1.call(AbstractNewSpatialWizardAction.java:70)
[catch] at com.jme3.app.AppTask.invoke(AppTask.java:142)
at com.jme3.app.Application.runQueuedTasks(Application.java:585)
at com.jme3.app.Application.update(Application.java:598)
at com.jme3.gde.core.scene.SceneApplication.update(SceneApplication.java:267)
at com.jme3.system.awt.AwtPanelsContext.updateInThread(AwtPanelsContext.java:157)
at com.jme3.system.awt.AwtPanelsContext.access$100(AwtPanelsContext.java:13)
at com.jme3.system.awt.AwtPanelsContext$AwtPanelsListener.update(AwtPanelsContext.java:37)
at com.jme3.system.lwjgl.LwjglOffscreenBuffer.runLoop(LwjglOffscreenBuffer.java:120)
at com.jme3.system.lwjgl.LwjglOffscreenBuffer.run(LwjglOffscreenBuffer.java:146)
at java.lang.Thread.run(Thread.java:722)

This size of the terrain seems to make trouble… I entered 100 total size, 64 path size and 256 texture size. Where is the problem here?

The exception message says it all :

size given: 101 Terrain quad sizes may only be (2^N + 1)
.

You are not allowed to use 100 as a size. But 129 (2^7+1) is allowed…

Its not n^2+1 ^^

Ok thx.

Now I try to add a model to the scene and, well there is a memory problem:

java.lang.OutOfMemoryError: Direct buffer memory
at java.nio.Bits.reserveMemory(Bits.java:658)
at java.nio.DirectByteBuffer.(DirectByteBuffer.java:122)
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
at com.jme3.util.BufferUtils.createByteBuffer(BufferUtils.java:956)
at com.jme3.texture.plugins.AWTLoader.load(AWTLoader.java:122)
at com.jme3.texture.plugins.AWTLoader.load(AWTLoader.java:192)
at com.jme3.texture.plugins.AWTLoader.load(AWTLoader.java:201)
at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:283)
at com.jme3.asset.DesktopAssetManager.loadTexture(DesktopAssetManager.java:341)
at com.jme3.texture.Texture.read(Texture.java:600)
at com.jme3.texture.Texture2D.read(Texture2D.java:215)
at com.jme3.export.binary.BinaryImporter.readObject(BinaryImporter.java:341)
at com.jme3.export.binary.BinaryInputCapsule.readSavable(BinaryInputCapsule.java:458)
at com.jme3.material.MatParam.read(MatParam.java:326)
at com.jme3.material.MatParamTexture.read(MatParamTexture.java:62)
at com.jme3.export.binary.BinaryImporter.readObject(BinaryImporter.java:341)
at com.jme3.export.binary.BinaryInputCapsule.resolveIDs(BinaryInputCapsule.java:484)
at com.jme3.export.binary.BinaryInputCapsule.readStringSavableMap(BinaryInputCapsule.java:668)
at com.jme3.material.Material.read(Material.java:1080)
at com.jme3.export.binary.BinaryImporter.readObject(BinaryImporter.java:341)
at com.jme3.export.binary.BinaryInputCapsule.readSavable(BinaryInputCapsule.java:458)
at com.jme3.scene.Geometry.read(Geometry.java:564)
at com.jme3.export.binary.BinaryImporter.readObject(BinaryImporter.java:341)
at com.jme3.export.binary.BinaryInputCapsule.resolveIDs(BinaryInputCapsule.java:484)
at com.jme3.export.binary.BinaryInputCapsule.readSavableArray(BinaryInputCapsule.java:472)
at com.jme3.export.binary.BinaryInputCapsule.readSavableArrayList(BinaryInputCapsule.java:588)
at com.jme3.scene.Node.read(Node.java:598)
at com.jme3.export.binary.BinaryImporter.readObject(BinaryImporter.java:341)
at com.jme3.export.binary.BinaryImporter.load(BinaryImporter.java:243)
at com.jme3.export.binary.BinaryImporter.load(BinaryImporter.java:126)
at com.jme3.export.binary.BinaryImporter.load(BinaryImporter.java:110)
at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:283)
at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:369)
at com.jme3.gde.core.assets.SpatialAssetDataObject.loadAsset(SpatialAssetDataObject.java:90)
at com.jme3.gde.scenecomposer.SceneEditorController.doAddModel(SceneEditorController.java:573)
at com.jme3.gde.scenecomposer.SceneEditorController$15.call(SceneEditorController.java:560)
at com.jme3.app.AppTask.invoke(AppTask.java:142)
at com.jme3.app.Application.runQueuedTasks(Application.java:585)
at com.jme3.app.Application.update(Application.java:598)
[catch] at com.jme3.gde.core.scene.SceneApplication.update(SceneApplication.java:267)
at com.jme3.system.awt.AwtPanelsContext.updateInThread(AwtPanelsContext.java:157)
at com.jme3.system.awt.AwtPanelsContext.access$100(AwtPanelsContext.java:13)
at com.jme3.system.awt.AwtPanelsContext$AwtPanelsListener.update(AwtPanelsContext.java:37)
at com.jme3.system.lwjgl.LwjglOffscreenBuffer.runLoop(LwjglOffscreenBuffer.java:120)
at com.jme3.system.lwjgl.LwjglOffscreenBuffer.run(LwjglOffscreenBuffer.java:146)
at java.lang.Thread.run(Thread.java:722)
INFO [com.jme3.scene.Node]: SceneComposerToolNode (Node): Child removed.

Is this a bug or a feature :slight_smile:

Its a memory exhaustion, wtf do you try to load? ^^ Don’t make the terrain larger than 4096x4096