mojira.dev
MC-210887

Game launch crashes on Linux with Unicode home folder/username

On Linux if I have home directory such as `/home/Dāvis` then it crashes with
 

---- Minecraft Crash Report ----
// This is a token for 1 free hug. Redeem at your nearest Mojangsta: [~~HUG~~]

Time: 21.8.1 08:22
Description: Initializing game
java.lang.ExceptionInInitializerError
	at dkd.<init>(SourceFile:146)
	at djz.<init>(SourceFile:440)
	at net.minecraft.client.main.Main.main(SourceFile:177)
Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Failed to dynamically load library: /home/Dāvis/.minecraft/bin/cf8c-d22e-2f44-334a/libglfw.so(error = null)
	at deo.<clinit>(SourceFile:46)
	... 3 more
Caused by: java.lang.UnsatisfiedLinkError: Failed to dynamically load library: /home/Dāvis/.minecraft/bin/cf8c-d22e-2f44-334a/libglfw.so(error = null)
	at org.lwjgl.system.linux.LinuxLibrary.loadLibrary(LinuxLibrary.java:32)
	at org.lwjgl.system.linux.LinuxLibrary.<init>(LinuxLibrary.java:19)
	at org.lwjgl.system.APIUtil.apiCreateLibrary(APIUtil.java:123)
	at org.lwjgl.system.Library.loadNative(Library.java:335)
	at org.lwjgl.system.Library.loadNative(Library.java:281)
	at org.lwjgl.system.Library.loadNative(Library.java:205)
	at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:674)
	at sun.misc.Unsafe.ensureClassInitialized(Native Method)
	at java.lang.invoke.DirectMethodHandle$EnsureInitialized.computeValue(DirectMethodHandle.java:330)
	at java.lang.invoke.DirectMethodHandle$EnsureInitialized.computeValue(DirectMethodHandle.java:327)
	at java.lang.ClassValue.getFromHashMap(ClassValue.java:227)
	at java.lang.ClassValue.getFromBackup(ClassValue.java:209)
	at java.lang.ClassValue.get(ClassValue.java:115)
	at java.lang.invoke.DirectMethodHandle.checkInitialized(DirectMethodHandle.java:351)
	at java.lang.invoke.DirectMethodHandle.ensureInitialized(DirectMethodHandle.java:341)
	at java.lang.invoke.DirectMethodHandle.ensureInitialized(DirectMethodHandle.java:373)
	at deo.<clinit>(SourceFile:43)
	... 3 more
A detailed walkthrough of the error, its code path and all known details is as follows:
----------------------------------------------------------------------------------------- Head --
Thread: Render thread
Stacktrace:
	at dkd.<init>(SourceFile:146)
	at djz.<init>(SourceFile:440)-- Initialization --
Details:
Stacktrace:
	at net.minecraft.client.main.Main.main(SourceFile:177)-- System Details --
Details:
	Minecraft Version: 1.16.4
	Minecraft Version ID: 1.16.4
	Operating System: Linux (amd64) version 5.10.5-arch1-1
	Java Version: 1.8.0_265, Oracle Corporation
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 1075552088 bytes (1025 MB) / 2147483648 bytes (2048 MB) up to 2147483648 bytes (2048 MB)
	CPUs: 8
	JVM Flags: 8 total; -Xss1M -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
	Launched Version: 1.16.4
	Backend library: LWJGL version 3.2.2 build 10
	Backend API: ~~ERROR~~ NoClassDefFoundError: Could not initialize class org.lwjgl.glfw.GLFW
	GL Caps: 
	Using VBOs: Yes
	Is Modded: Probably not. Jar signature remains and client brand is untouched.
	Type: Client (map_client.txt)
	CPU: <unknown>

 

Found that it can be workarounded by specifying non-Unicode `--workDir`
 

Also note that there's another/related bug if I try to use different non-official launcher then it crashes similar error because it copies `libglfw.so` to path like `/tmp/lwjglDāvis/3.2.2-build-10/}` with fails to load aswell.

This can be workarouned by passing `-Duser.name=ascii_name` JVM argument.

 
This bug exists since 1.13+ as 1.12 works fine.
 

Linked issues

Comments

violine1101

Moved to MCL since this probably needs to be fixed on the launcher's end.

There exists MCL-774 as well.

Ined

@unknown please don't undo Thommy's move 😃
It's on the game team to add support for unicode character paths - based on the reporter the Minecraft Launcher seems to work fine

violine1101

Sorry, I didn't realize the ticket was moved!

MMK21

Affects 1.18 pre1 (I used a non-ASCII installation folder to reproduce this, with the same error)

Dāvis Mosāns

The issue is that it can't find GLFW library. For some reason it messes up Unicode path.

Tested that it still crashes with latest available snapshot  1.18-pre1

 

java.lang.ExceptionInInitializerError
    at dxf.<init>(SourceFile:163)
    at dxb.<init>(SourceFile:456)
    at net.minecraft.client.main.Main.main(SourceFile:197)
Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Failed to dynamically load library: /home/Dāvis/.minecraft/bin/eb1d-162c-8209-f124/libglfw.so(error = /home/Dvis/.minecraft/bin/eb1d-162c-8209-f124/libglfw.so: cannot open shared object file: No such file or directory)
    at dqs.<clinit>(SourceFile:46)
    ... 3 more
Caused by: java.lang.UnsatisfiedLinkError: Failed to dynamically load library: /home/Dāvis/.minecraft/bin/eb1d-162c-8209-f124/libglfw.so(error = /home/Dvis/.minecraft/bin/eb1d-162c-8209-f124/libglfw.so: cannot open shared object file: No such file or directory)
    at org.lwjgl.system.linux.LinuxLibrary.loadLibrary(LinuxLibrary.java:32)
    at org.lwjgl.system.linux.LinuxLibrary.<init>(LinuxLibrary.java:19)
    at org.lwjgl.system.APIUtil.apiCreateLibrary(APIUtil.java:123)
    at org.lwjgl.system.Library.loadNative(Library.java:335)
    at org.lwjgl.system.Library.loadNative(Library.java:281)
    at org.lwjgl.system.Library.loadNative(Library.java:205)
    at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:674)
    at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method)
    at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1155)
    at java.base/java.lang.invoke.DirectMethodHandle$EnsureInitialized.computeValue(DirectMethodHandle.java:378)
    at java.base/java.lang.invoke.DirectMethodHandle$EnsureInitialized.computeValue(DirectMethodHandle.java:375)
    at java.base/java.lang.ClassValue.getFromHashMap(ClassValue.java:228)
    at java.base/java.lang.ClassValue.getFromBackup(ClassValue.java:210)
    at java.base/java.lang.ClassValue.get(ClassValue.java:116)
    at java.base/java.lang.invoke.DirectMethodHandle.checkInitialized(DirectMethodHandle.java:401)
    at java.base/java.lang.invoke.DirectMethodHandle.ensureInitialized(DirectMethodHandle.java:389)
    at java.base/java.lang.invoke.DirectMethodHandle.ensureInitialized(DirectMethodHandle.java:423)
    at dqs.<clinit>(SourceFile:43)
    ... 3 more

 

 

When using different launcher with 1.17.1

 

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.lwjgl.glfw.GLFW
    at com.mojang.blaze3d.platform.GLX.getOpenGLVersionString(SourceFile:35)
    at com.mojang.blaze3d.systems.RenderSystem.getApiDescription(SourceFile:770)
    at ac.a(SourceFile:65)
    at dvp.a(SourceFile:2418)
    at dvp.a(SourceFile:2412)
    at net.minecraft.client.main.Main.main(SourceFile:187)

 

 

There is a workaround. MultiMC launcher allows to use system's GLFW library instead of bundled one. Enabling that option /usr/lib/libglfw.so will be used instead which will load fine and everything will work 🙂

 

MMK21

Affects 1.18.1

Dāvis Mosāns

(Unassigned)

Community Consensus

Platform

Important

Crash

crash, unicode

1.16.4, 1.18 Pre-release 1, 1.18.1

22w16a

Retrieved