libgdx / libgdx/libgdx

Box2D not working on 1.10.1-SNAPSHOT with Linux

Open
#6,782 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
25.4k
Forks
6.5k
Avg merge
1d 16h
Merged PRs (30d)
5

Description

Issue details

The latest gdx snapshot (1.10.1-SNAPSHOT) is not working with Box2D on my Amazon Linux 2 EC2 instance.

Unknown if this is isolated to just Amazon distros or not.

Context: https://discord.com/channels/348229412858101762/873537733430226964/936111896023695411

Reproduction steps/code
  1. Create an Amazon Linux 2 EC2 instance
  2. Dist a libGDX jar using 1.10.1-SNAPSHOT that creates a Box2D world.
  3. Run the jar on the EC2 instance: java -jar mygame.jar
  4. See error stack trace when creating Box2D world: Caused by: com.badlogic.gdx.utils.SharedLibraryLoadRuntimeException: Couldn't load shared library 'libgdx-box2d64.so' for target: Linux, 64-bit
Version of libGDX and/or relevant dependencies
  • libGDX version: 1.10.1-SNAPSHOT
  • gradlew server:dependencies output:
|    +--- project :core
|    |    +--- com.badlogicgames.gdx:gdx:1.10.1-SNAPSHOT
|    |    |    \--- com.badlogicgames.gdx:gdx-jnigen-loader:2.2.0
|    |    +--- com.badlogicgames.gdx:gdx-box2d:1.10.1-SNAPSHOT
|    |    |    \--- com.badlogicgames.gdx:gdx:1.10.1-SNAPSHOT (*)
|    |    +--- com.github.tommyettinger.gdx-utils:libgdx-utils:0.13.7
|    |    |    \--- com.badlogicgames.gdx:gdx:1.9.12 -> 1.10.1-SNAPSHOT (*)
|    |    +--- com.github.tommyettinger.gdx-utils:libgdx-utils-box2d:0.13.7
|    |    |    +--- com.github.tommyettinger.gdx-utils:libgdx-utils:0.13.7 (*)
|    |    |    \--- com.badlogicgames.gdx:gdx-box2d:1.9.12 -> 1.10.1-SNAPSHOT (*)
|    |    +--- com.github.czyzby:gdx-websocket:1.9.1.9.6
|    |    +--- com.github.czyzby:gdx-websocket-serialization:1.9.1.9.6
|    |    |    \--- com.github.czyzby:gdx-websocket:1.9.1.9.6
|    |    +--- de.golfgl.gdxgameanalytics:gdx-gameanalytics-core:1.0.0
|    |    |    \--- com.badlogicgames.gdx:gdx:1.9.5 -> 1.10.1-SNAPSHOT (*)
|    |    +--- com.github.tommyettinger:jagd:191bdd1ceb
|    |    |    \--- com.badlogicgames.gdx:gdx:1.9.10 -> 1.10.1-SNAPSHOT (*)
|    |    +--- space.earlygrey:shapedrawer:8e2a97479fb9ba7f07b842afa5512240e8bc3d41
|    |    |    \--- com.badlogicgames.gdx:gdx:1.9.10 -> 1.10.1-SNAPSHOT (*)
|    |    +--- com.kotcrab.vis:vis-ui:1.4.2
|    |    |    \--- com.badlogicgames.gdx:gdx:1.9.9 -> 1.10.1-SNAPSHOT (*)
|    |    +--- com.github.payne911:PieMenu:5.0.0
|    |    |    +--- com.badlogicgames.gdx:gdx:1.9.10 -> 1.10.1-SNAPSHOT (*)
|    |    |    \--- space.earlygrey:shapedrawer:2.3.0 -> 8e2a97479fb9ba7f07b842afa5512240e8bc3d41 (*)
|    |    +--- com.github.tommyettinger:formic:0.1.4
|    |    |    +--- com.google.jsinterop:base:1.0.0-RC1
|    |    |    |    \--- com.google.jsinterop:jsinterop-annotations:1.0.2
|    |    |    +--- com.google.elemental2:elemental2-core:1.0.0-RC1
|    |    |    |    +--- com.google.jsinterop:jsinterop-annotations:1.0.2
|    |    |    |    \--- com.google.jsinterop:base:1.0.0-RC1 (*)
|    |    |    \--- com.google.elemental2:elemental2-dom:1.0.0-RC1
|    |    |         +--- com.google.jsinterop:jsinterop-annotations:1.0.2
|    |    |         +--- com.google.jsinterop:base:1.0.0-RC1 (*)
|    |    |         +--- com.google.elemental2:elemental2-core:1.0.0-RC1 (*)
|    |    |         \--- com.google.elemental2:elemental2-promise:1.0.0-RC1
|    |    |              +--- com.google.jsinterop:jsinterop-annotations:1.0.2
|    |    |              \--- com.google.jsinterop:base:1.0.0-RC1 (*)
|    |    +--- org.slf4j:slf4j-simple:1.7.9
|    |    |    \--- org.slf4j:slf4j-api:1.7.9 -> 1.7.25
|    |    \--- com.google.gwt:gwt-user:2.8.0
|    |         +--- com.google.jsinterop:jsinterop-annotations:1.0.1 -> 1.0.2
|    |         +--- javax.validation:validation-api:1.0.0.GA
|    |         +--- javax.servlet:javax.servlet-api:3.1.0
|    |         \--- org.w3c.css:sac:1.3
|    +--- com.badlogicgames.gdx:gdx-backend-lwjgl:1.10.1-SNAPSHOT
|    |    +--- com.badlogicgames.gdx:gdx:1.10.1-SNAPSHOT (*)
|    |    +--- org.lwjgl.lwjgl:lwjgl:2.9.3
|    |    |    +--- org.lwjgl.lwjgl:lwjgl-platform:2.9.3
|    |    |    \--- net.java.jinput:jinput:2.0.5
|    |    |         +--- net.java.jutils:jutils:1.0.0
|    |    |         \--- net.java.jinput:jinput-platform:2.0.5
|    |    +--- com.badlogicgames.jlayer:jlayer:1.0.1-gdx
|    |    \--- org.jcraft:jorbis:0.0.17
|    +--- com.badlogicgames.gdx:gdx-platform:1.10.1-SNAPSHOT
|    +--- com.badlogicgames.gdx:gdx-box2d-platform:1.10.1-SNAPSHOT
|    +--- com.badlogicgames.gdx:gdx-backend-headless:1.10.1-SNAPSHOT
|    |    \--- com.badlogicgames.gdx:gdx:1.10.1-SNAPSHOT (*)
|    +--- com.badlogicgames.gdx:gdx-tools:1.10.1-SNAPSHOT
|    |    +--- com.badlogicgames.gdx:gdx-backend-lwjgl:1.10.1-SNAPSHOT (*)
|    |    +--- com.badlogicgames.gdx:gdx-freetype:1.10.1-SNAPSHOT
|    |    |    \--- com.badlogicgames.gdx:gdx:1.10.1-SNAPSHOT (*)
|    |    \--- com.badlogicgames.gdx:gdx-backend-headless:1.10.1-SNAPSHOT (*)
|    +--- org.mockito:mockito-all:1.9.5
|    \--- com.github.Anuken:GdxGifRecorder:1.3
|         \--- com.badlogicgames.gdx:gdx:1.9.5 -> 1.10.1-SNAPSHOT (*)
+--- project :core (*)
+--- org.java-websocket:Java-WebSocket:1.4.0
|    \--- org.slf4j:slf4j-api:1.7.25
+--- org.luaj:luaj-jse:3.0.1
+--- org.spongepowered:noise:2.0.0-SNAPSHOT
\--- com.sudoplay.joise:joise:1.1.0
Stacktrace

ec2 Amazon Linux 2 instance stack trace (when calling new World()):

ec2.internal bash[25188]: Exception in thread "HeadlessApplication" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.ExceptionInInitializerError
ec2.internal bash[25188]: at com.badlogic.gdx.backends.headless.HeadlessApplication$1.run(HeadlessApplication.java:98)
ec2.internal bash[25188]: Caused by: java.lang.ExceptionInInitializerError
ec2.internal bash[25188]: at io.lurkers.game.Level.create(Level.java:82)
ec2.internal bash[25188]: at io.lurkers.game.Game.loadLevel(Game.java:128)
ec2.internal bash[25188]: at io.lurkers.server.ListenerServer.event(ListenerServer.java:46)
ec2.internal bash[25188]: at io.lurkers.game.messagequeue.MessageQueue.notifyListeners(MessageQueue.java:144)
ec2.internal bash[25188]: at io.lurkers.game.messagequeue.MessageQueue.process(MessageQueue.java:55)
ec2.internal bash[25188]: at io.lurkers.game.messagequeue.MessageQueue.process(MessageQueue.java:38)
ec2.internal bash[25188]: at io.lurkers.game.Game.create(Game.java:82)
ec2.internal bash[25188]: at io.lurkers.server.GameServerHeadless.create(GameServerHeadless.java:169)
ec2.internal bash[25188]: at com.badlogic.gdx.backends.headless.HeadlessApplication.mainLoop(HeadlessApplication.java:108)
ec2.internal bash[25188]: at com.badlogic.gdx.backends.headless.HeadlessApplication$1.run(HeadlessApplication.java:93)
ec2.internal bash[25188]: Caused by: com.badlogic.gdx.utils.SharedLibraryLoadRuntimeException: Couldn't load shared library 'libgdx-box2d64.so' for target: Linux, 64-bit
ec2.internal bash[25188]: at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:128)
ec2.internal bash[25188]: at com.badlogic.gdx.physics.box2d.World.<clinit>(World.java:188)
ec2.internal bash[25188]: ... 10 more
ec2.internal bash[25188]: Caused by: com.badlogic.gdx.utils.SharedLibraryLoadRuntimeException: java.lang.UnsatisfiedLinkError: /tmp/libgdxec2-user/443f008d/libgdx-box2d64.so: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /tmp/libgdxec2-user/443f008d/libgdx-box2d64.so)
ec2.internal bash[25188]: at com.badlogic.gdx.utils.SharedLibraryLoader.loadFile(SharedLibraryLoader.java:324)
ec2.internal bash[25188]: at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:124)
ec2.internal bash[25188]: ... 11 more
ec2.internal bash[25188]: Caused by: java.lang.UnsatisfiedLinkError: /tmp/libgdxec2-user/443f008d/libgdx-box2d64.so: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /tmp/libgdxec2-user/443f008d/libgdx-box2d64.so)
ec2.internal bash[25188]: at java.lang.ClassLoader$NativeLibrary.load(Native Method)
ec2.internal bash[25188]: at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934)
ec2.internal bash[25188]: at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1817)
ec2.internal bash[25188]: at java.lang.Runtime.load0(Runtime.java:810)
ec2.internal bash[25188]: at java.lang.System.load(System.java:1088)
ec2.internal bash[25188]: at com.badlogic.gdx.utils.SharedLibraryLoader.loadFile(SharedLibraryLoader.java:330)
ec2.internal bash[25188]: at com.badlogic.gdx.utils.SharedLibraryLoader.loadFile(SharedLibraryLoader.java:299)
ec2.internal bash[25188]: ... 12 more
Please select the affected platforms
  • Android
  • iOS
  • HTML/GWT
  • Windows
  • Linux
  • macOS

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the Box2D world creation on Amazon Linux 2 with the 1.10.1-SNAPSHOT dependencies, then inspect gdx-box2d-platform and SharedLibraryLoader around the failing libgdx-box2d64.so load. Compare the native library's GLIBC requirement with the target system. Done means Box2D loads successfully on the reported Linux environment without the GLIBC_2.27 error.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, linux
Domain
game-dev, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.