MovingBlocks / Terasology

Terasology - open source voxel world
http://terasology.org
Apache License 2.0
3.67k stars 1.33k forks source link

Game crash during chunk loading when switching windows with Alt+Tab #4575

Open ahv15 opened 3 years ago

ahv15 commented 3 years ago

What you were trying to do

Shifted to another application while the world was being generated.

What actually happened

While I was in another application the game crashed and threw an ArithmeticException error.

How to reproduce

Might not be possible to replicate this every single time.

Log details and game version

15:10:23.813 [main] WARN  o.t.physics.bullet.BulletPhysics - RigidBodyComponent.mass is set to less than 1.0, this can lead to strange behaviour, such as the objects moving through walls. Entity: EntityRef{id = 223, netId = 178, prefab = 'LightAndShadow:MagicFool'}
15:10:23.819 [main] ERROR o.t.e.e.internal.PojoEntityManager - Adding a component (class org.terasology.logic.location.LocationComponent) over an existing component for entity 246
15:10:28.804 [main] ERROR o.terasology.engine.TerasologyEngine - Uncaught exception, attempting clean game shutdown
java.lang.ArithmeticException: / by zero
    at org.terasology.nui.widgets.UIIconBar.getPreferredContentSize(UIIconBar.java:110)
    at org.terasology.nui.canvas.CanvasImpl.calculateRestrictedSize(CanvasImpl.java:383)
    at org.terasology.nui.layouts.relative.RelativeLayout.getRegion(RelativeLayout.java:143)
    at org.terasology.nui.layouts.relative.RelativeLayout.onDraw(RelativeLayout.java:85)
    at org.terasology.nui.canvas.CanvasImpl.drawStyledWidget(CanvasImpl.java:442)
    at org.terasology.nui.canvas.CanvasImpl.drawWidget(CanvasImpl.java:428)
    at org.terasology.rendering.nui.layers.hud.CoreHudWidget.onDraw(CoreHudWidget.java:60)
    at org.terasology.nui.canvas.CanvasImpl.drawStyledWidget(CanvasImpl.java:442)
    at org.terasology.nui.canvas.CanvasImpl.drawWidget(CanvasImpl.java:428)
    at org.terasology.rendering.nui.layers.hud.HUDScreenLayer.onDraw(HUDScreenLayer.java:151)
    at org.terasology.nui.canvas.CanvasImpl.drawStyledWidget(CanvasImpl.java:442)
    at org.terasology.nui.canvas.CanvasImpl.drawWidget(CanvasImpl.java:428)
    at org.terasology.rendering.nui.internal.NUIManagerInternal.render(NUIManagerInternal.java:570)
    at org.terasology.engine.modes.StateLoading.render(StateLoading.java:278)
    at org.terasology.engine.subsystem.lwjgl.LwjglGraphics.postUpdate(LwjglGraphics.java:92)
    at org.terasology.engine.TerasologyEngine.tick(TerasologyEngine.java:504)
    at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:458)
    at org.terasology.engine.TerasologyEngine.runMain(TerasologyEngine.java:434)
    at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:400)
    at org.terasology.engine.Terasology.main(Terasology.java:174)
15:10:28.806 [main] INFO  o.terasology.engine.TerasologyEngine - Shutting down Terasology...

Computer details

Windows 10 , i7-9th Gen , Nvidia GeForce GTX 1650

keturn commented 3 years ago

was either Terasology or the other application in full-screen mode?

ahv15 commented 3 years ago

was either Terasology or the other application in full-screen mode?

Terasology wasn't in full-screen mode when I shifted, and the other application I was using was chrome so that was in full-screen mode.

ggg146 commented 2 years ago

Was advised to leave this here: When moving around in the world very rapidly and chunks are still loading, Alt+Tab leads to a 'ChunkProcessingPipeline' crash, which triggers a div/0 error. (This occurs in the October 5 alpha release) Reproduction steps:

  1. Start the game from the launcher, enter the world.
  2. Move around very fast (I run or fly)
  3. While chunks are still loading, do an alt+tab, at this point the game should crash.

What it looks like: 21:37:59.416 [Chunk-Processing-Reactor] ERROR o.t.e.w.c.p.ChunkProcessingPipeline - Reactor thread was interrupted java.lang.InterruptedException: null at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(Unknown Source) at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) at java.base/java.util.concurrent.PriorityBlockingQueue.take(Unknown Source) at java.base/java.util.concurrent.ExecutorCompletionService.take(Unknown Source) at org.terasology.engine.world.chunks.pipeline.ChunkProcessingPipeline.chunkTaskHandler(ChunkProcessingPipeline.java:100) at java.base/java.lang.Thread.run(Unknown Source)