Box2D not working on 1.10.1-SNAPSHOT with Linux
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
- Create an Amazon Linux 2 EC2 instance
- Dist a libGDX jar using
1.10.1-SNAPSHOTthat creates a Box2D world. - Run the jar on the EC2 instance:
java -jar mygame.jar - 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:dependenciesoutput:
| +--- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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