DestinationSol icon indicating copy to clipboard operation
DestinationSol copied to clipboard

Game crashes by fatal error: SIGSEGV (0xb) when the hero is fighting on a planet

Open jozefcifre opened this issue 1 year ago • 2 comments

What you were trying to do

To play the game.

What actually happened

A fatal error has been detected by the Java Runtime Environment: SIGSEGV (0xb) at pc=0x00007f0911021679, pid=20165, tid=20176

It has happened about 3 times, when the ship is about to die by gunfire from around 20 ships at the same time.

How to reproduce

  • Step 1: Set Systems to 9.
  • Step 2: Select an Imperial Loaded ship.
  • Step 3: Start the game
  • Step 4: Land in a planet marked as dangerous, where other Imperial ships are heading to.
  • Step 5: Try to kill the ground turrets while getting shoot by the pirate ships.

Game version

2.1.0 (develop)

Log details

ds-coredump-nov9.txt

hs_err_pid20165.log

ds-coredump-nov8.txt

hs_err_pid43915.log

Operating System

Linux

Additional Info

Distro: NixOS

jozefcifre avatar Nov 09 '23 01:11 jozefcifre

I have clearly not tested 9 systems in a while. Going to a hard planet renders the game unplayable (roughly 1 frame every 20 seconds) but it doesn't crash for me.

Current thread (0x00007f093c019000):  JavaThread "main" [_thread_in_native, id=20176, stack(0x00007f0968300000,0x00007f0968400000)]

Stack: [0x00007f0968300000,0x00007f0968400000],  sp=0x00007f09683fd8e0,  free space=1014k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libgdx-box2d64.so+0x21679]  b2BlockAllocator::Allocate(int)+0x49

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J 7147  com.badlogic.gdx.physics.box2d.World.jniCreateBody(JIFFFFFFFFZZZZZF)J (0 bytes) @ 0x00007f092c827299 [0x00007f092c827240+0x0000000000000059]
J 7146 c1 com.badlogic.gdx.physics.box2d.World.createBody(Lcom/badlogic/gdx/physics/box2d/BodyDef;)Lcom/badlogic/gdx/physics/box2d/Body; (120 bytes) @ 0x00007f0925bb13d4 [0x00007f0925bb12c0+0x0000000000000114]
J 8336 c1 org.destinationsol.game.item.LootBuilder.buildBody(Lorg/destinationsol/game/SolGame;Lcom/badlogic/gdx/math/Vector2;F)Lcom/badlogic/gdx/physics/box2d/Body; (97 bytes) @ 0x00007f092517eacc [0x00007f092517e8a0+0x000000000000022c]
J 8335 c1 org.destinationsol.game.item.LootBuilder.build(Lorg/destinationsol/game/SolGame;Lcom/badlogic/gdx/math/Vector2;Lorg/destinationsol/game/item/SolItem;Lcom/badlogic/gdx/math/Vector2;IFLorg/destinationsol/game/ship/SolShip;)Lorg/destinationsol/game/item/Loot; (164 bytes) @ 0x00007f09251d3664 [0x00007f09251d2d40+0x0000000000000924]
J 8339 c1 org.destinationsol.game.ship.SolShip.throwLoot(Lorg/destinationsol/game/SolGame;Lorg/destinationsol/game/item/SolItem;Z)V (186 bytes) @ 0x00007f09251caffc [0x00007f09251ca520+0x0000000000000adc]
j  org.destinationsol.game.ship.SolShip.throwAllLoot(Lorg/destinationsol/game/SolGame;)V+262
J 8119 c1 org.destinationsol.game.ship.SolShip.onRemove(Lorg/destinationsol/game/SolGame;)V (96 bytes) @ 0x00007f0925e00ed4 [0x00007f0925e00cc0+0x0000000000000214]
J 7934 c2 org.destinationsol.game.ObjectManager.removeObjNow(Lorg/destinationsol/game/SolGame;Lorg/destinationsol/game/SolObject;)V (36 bytes) @ 0x00007f092ca398a4 [0x00007f092ca39560+0x0000000000000344]
J 6693 c2 org.destinationsol.game.ObjectManager.update(Lorg/destinationsol/game/SolGame;F)V (459 bytes) @ 0x00007f092c707994 [0x00007f092c706a60+0x0000000000000f34]
J 6898 c2 org.destinationsol.SolApplication.render()V (140 bytes) @ 0x00007f092c7ab53c [0x00007f092c7aa520+0x000000000000101c]
J 6903 c2 com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update()Z (217 bytes) @ 0x00007f092c7b27b0 [0x00007f092c7b2300+0x00000000000004b0]
J 8304% c1 com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop()V (468 bytes) @ 0x00007f09254135d4 [0x00007f0925412cc0+0x0000000000000914]
j  com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lcom/badlogic/gdx/ApplicationListener;Lcom/badlogic/gdx/backends/lwjgl3/Lwjgl3ApplicationConfiguration;)V+243
j  org.destinationsol.desktop.SolDesktop.main([Ljava/lang/String;)V+258
v  ~StubRoutines::call_stub

What is happening here is that the application crashes somewhere in the b2BlockAllocator::Allocate(int) method, which is a part of the native Box2D library. We use Box2D for physics via libGDX's gdx-box2d wrapper. On our side, the game crashes from somewhere within the method LootBuilder.buildBody(SolGame, Vector2, float). Strictly speaking, the crash occurs in native code (meaning, outside of the JVM's control), which is invoked from the com.badlogic.gdx.physics.box2d.World.jniCreateBody method.

My guess is that either your machine is running out of memory because of the extreme quantities of ships, projectiles and "loot" present, or a bug caused an absurd quantity of memory to be requested in one go (which would call malloc instead). Either way, diagnosing a native crash could take some time. The java crash logs you provided are proving very useful.

BenjaminAmos avatar Nov 09 '23 21:11 BenjaminAmos

My guess is that either your machine is running out of memory because of the extreme quantities of ships, projectiles and "loot" present, or a bug caused an absurd quantity of memory to be requested in one go (which would call malloc instead). Either way, diagnosing a native crash could take some time. The java crash logs you provided are proving very useful.

I think so. Here are the console logs:

logs-ds-core-dumped-nov8.txt

logs-ds-core-dumped-nov9.txt

jozefcifre avatar Nov 10 '23 01:11 jozefcifre