minecraft-vortex-launcher icon indicating copy to clipboard operation
minecraft-vortex-launcher copied to clipboard

Add support for Aarch64

Open liberodark opened this issue 2 years ago • 3 comments

Hi @Kron4ek ,

Can you add release for arm64 / aarch64. That would be great for use minecraft java on Linux ARM. Have build the arm64 version if you want. The only issue is hard too download files is crashing.

[1] 18169 segmentation fault (core dumped) ./VLauncher_1.1.19_arm64_Linux

After 2000 files have :

(VLauncher_1.1.19_arm64_Linux:26563): Pango-WARNING **: 17:54:11.708: Invalid UTF-8 string passed to pango_layout_set_text()

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.711: pango_layout_set_width: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.711: pango_layout_get_extents: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-WARNING **: 17:54:11.711: Invalid UTF-8 string passed to pango_layout_set_text()

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_set_width: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_get_width: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): GLib-GObject-CRITICAL **: 17:54:11.712: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_set_width: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_get_extents: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_set_width: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_get_width: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): GLib-GObject-CRITICAL **: 17:54:11.712: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_get_extents: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): GLib-GObject-CRITICAL **: 17:54:11.712: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_set_width: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_get_width: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): GLib-GObject-CRITICAL **: 17:54:11.712: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_set_width: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_get_extents_internal: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_get_extents_internal: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): GLib-GObject-CRITICAL **: 17:54:11.712: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_get_line_count: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_get_pixel_extents: assertion 'PANGO_IS_LAYOUT (layout)' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_set_attributes: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_set_alignment: assertion 'layout != NULL' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_set_ellipsize: assertion 'PANGO_IS_LAYOUT (layout)' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_set_wrap: assertion 'PANGO_IS_LAYOUT (layout)' failed

(VLauncher_1.1.19_arm64_Linux:26563): Pango-CRITICAL **: 17:54:11.712: pango_layout_set_single_paragraph_mode: assertion 'PANGO_IS_LAYOUT (layout)' failed
**
Gtk:ERROR:../gtk/gtk/gtklabel.c:3397:gtk_label_update_layout_width: assertion failed: (priv->layout)
Bail out! Gtk:ERROR:../gtk/gtk/gtklabel.c:3397:gtk_label_update_layout_width: assertion failed: (priv->layout)
[1]    26563 IOT instruction (core dumped)  ./VLauncher_1.1.19_arm64_Linux

Have change memory allocated to 3000 for download files.

Now have all files in 1.19.3 but i can run minecraft :

OpenJDK Runtime Environment (build 19.0.2+7)
OpenJDK 64-Bit Server VM (build 19.0.2+7, mixed mode)
  <log4j:Event logger="ape" timestamp="1675789935018" level="INFO" thread="main">
    <log4j:Message><![CDATA[Building optimized datafixer]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789935968" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]: [LWJGL] Platform/architecture mismatch detected for module: org.lwjgl]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789935969" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   JVM platform:]]></log4j:Message>
  </log4j:Event>
                Linux aarch64 19.0.2
                OpenJDK 64-Bit Server VM v19.0.2+7 by Oracle Corporation
        Platform available on classpath:
                linux/x64
  <log4j:Event logger="acm" timestamp="1675789935970" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]: [LWJGL] Failed to load a library. Possible solutions:
        a) Add the directory that contains the shared library to -Djava.library.path or -Dorg.lwjgl.librarypath.
        b) Add the JAR that contains the shared library to the classpath.]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789935970" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]: [LWJGL] Enable debug mode with -Dorg.lwjgl.util.Debug=true for better diagnostics.]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789935970" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]: [LWJGL] Enable the SharedLibraryLoader debug mode with -Dorg.lwjgl.util.DebugLoader=true for better diagnostics.]]></log4j:Message>
  </log4j:Event>
Exception in thread "Render thread"   <log4j:Event logger="acm" timestamp="1675789936106" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]: java.lang.NoClassDefFoundError: Could not initialize class com.mojang.blaze3d.systems.RenderSystem]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936106" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at z.a(SourceFile:66)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936106" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at ejf.a(SourceFile:2408)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936106" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at ejf.a(SourceFile:2403)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936106" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at net.minecraft.client.main.Main.a(SourceFile:214)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936107" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at net.minecraft.client.main.Main.main(SourceFile:51)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936120" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]: Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.UnsatisfiedLinkError: Failed to locate library: liblwjgl.so [in thread "Render thread"]]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at org.lwjgl.system.Library.loadSystem(Library.java:164)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at org.lwjgl.system.Library.loadSystem(Library.java:63)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at org.lwjgl.system.Library.<clinit>(Library.java:51)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at org.lwjgl.system.MemoryUtil.<clinit>(MemoryUtil.java:100)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at edb.<clinit>(SourceFile:8)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at edy.<init>(SourceFile:51)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at eef.<init>(SourceFile:19)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at eef.<init>(SourceFile:23)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at eef.<clinit>(SourceFile:11)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at com.mojang.blaze3d.systems.RenderSystem.<clinit>(SourceFile:46)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   at net.minecraft.client.main.Main.a(SourceFile:202)]]></log4j:Message>
  </log4j:Event>
  <log4j:Event logger="acm" timestamp="1675789936121" level="INFO" thread="Render thread">
    <log4j:Message><![CDATA[[STDERR]:   ... 1 more]]></log4j:Message>
  </log4j:Event>

Best Regards

liberodark avatar Feb 07 '23 15:02 liberodark

Hi,

I'll try to figure out how to emulate an arm64 environment via qemu and see if i can compile and test the launcher from there.

The problem is, however, even if the launcher works on arm64, the game itself can not run without LWJGL libraries that are compiled for arm64.

You will need to manually download LWJGL for arm64 from here (choose the same version as the game uses) and replace the existing libraries. And after that the game should work, in theory. For 1.19.3 the list is:

$ find libraries -name "*lwjgl*natives-linux*"
libraries/org/lwjgl/lwjgl-tinyfd/3.3.1/lwjgl-tinyfd-3.3.1-natives-linux.jar
libraries/org/lwjgl/lwjgl/3.3.1/lwjgl-3.3.1-natives-linux.jar
libraries/org/lwjgl/lwjgl-stb/3.3.1/lwjgl-stb-3.3.1-natives-linux.jar
libraries/org/lwjgl/lwjgl-opengl/3.3.1/lwjgl-opengl-3.3.1-natives-linux.jar
libraries/org/lwjgl/lwjgl-jemalloc/3.3.1/lwjgl-jemalloc-3.3.1-natives-linux.jar
libraries/org/lwjgl/lwjgl-openal/3.3.1/lwjgl-openal-3.3.1-natives-linux.jar
libraries/org/lwjgl/lwjgl-glfw/3.3.1/lwjgl-glfw-3.3.1-natives-linux.jar

Kron4ek avatar Feb 09 '23 08:02 Kron4ek

Hi,

Thank about your support that not work for me have try to use 3.2.3 for 1.16.5 beacause is last MC version supported on my OS actually. Have use other workaround : https://www.reddit.com/r/AsahiLinux/comments/zjpe68/how_to_run_minecraft_java_edition_on_asahi_linux/ That my log also have try v 1.19.3 too.

Sadly 3.2.2 is not for arm64 (that why have try 3.2.3) image

---- Minecraft Crash Report ----
// Don't be sad, have a hug! <3

Time: 13/02/2023 18:03
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 locate library: liblwjgl.so
	at deo.<clinit>(SourceFile:46)
	... 3 more
Caused by: java.lang.UnsatisfiedLinkError: Failed to locate library: liblwjgl.so
	at org.lwjgl.system.Library.loadSystem(Library.java:147)
	at org.lwjgl.system.Library.loadSystem(Library.java:67)
	at org.lwjgl.system.Library.<clinit>(Library.java:50)
	at org.lwjgl.system.MemoryAccessJNI.<clinit>(MemoryAccessJNI.java:13)
	at org.lwjgl.system.Pointer.<clinit>(Pointer.java:28)
	at org.lwjgl.system.Platform.mapLibraryNameBundled(Platform.java:80)
	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:1042)
	at java.base/java.lang.invoke.DirectMethodHandle$EnsureInitialized.computeValue(DirectMethodHandle.java:357)
	at java.base/java.lang.invoke.DirectMethodHandle$EnsureInitialized.computeValue(DirectMethodHandle.java:354)
	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:378)
	at java.base/java.lang.invoke.DirectMethodHandle.ensureInitialized(DirectMethodHandle.java:368)
	at java.base/java.lang.invoke.DirectMethodHandle.ensureInitialized(DirectMethodHandle.java:400)
	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.5
	Minecraft Version ID: 1.16.5
	Operating System: Linux (aarch64) version 6.1.0-asahi-2-2-edge-ARCH
	Java Version: 11.0.18, Oracle Corporation
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 1605540384 bytes (1531 MB) / 2147483648 bytes (2048 MB) up to 4294967296 bytes (4096 MB)
	CPUs: 8
	JVM Flags: 8 total; -Xmx4096M -Xss1M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
	Launched Version: 1.16.5
	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>

That the version available on prism :

libraries/org/lwjgl/lwjgl-opengl-natives-linux-arm64
libraries/org/lwjgl/lwjgl-opengl-natives-linux-arm64/3.3.1-lwjgl.1/lwjgl-opengl-natives-linux-arm64-3.3.1-lwjgl.1.jar
libraries/org/lwjgl/lwjgl-openal/3.2.2-gman64.1/lwjgl-openal-3.2.2-gman64.1-natives-linux-arm64.jar
libraries/org/lwjgl/lwjgl-stb-natives-linux-arm64
libraries/org/lwjgl/lwjgl-stb-natives-linux-arm64/3.3.1-lwjgl.1/lwjgl-stb-natives-linux-arm64-3.3.1-lwjgl.1.jar
libraries/org/lwjgl/lwjgl-glfw-natives-linux-arm64
libraries/org/lwjgl/lwjgl-glfw-natives-linux-arm64/3.3.1-lwjgl.1/lwjgl-glfw-natives-linux-arm64-3.3.1-lwjgl.1.jar
libraries/org/lwjgl/lwjgl-jemalloc/3.2.2-gman64.2/lwjgl-jemalloc-3.2.2-gman64.2-natives-linux-arm64.jar
libraries/org/lwjgl/lwjgl-jemalloc-natives-linux-arm64
libraries/org/lwjgl/lwjgl-jemalloc-natives-linux-arm64/3.3.1-gman64.1/lwjgl-jemalloc-natives-linux-arm64-3.3.1-gman64.1.jar
libraries/org/lwjgl/lwjgl-glfw/3.2.2-gman64.1/lwjgl-glfw-3.2.2-gman64.1-natives-linux-arm64.jar
libraries/org/lwjgl/lwjgl-natives-linux-arm64
libraries/org/lwjgl/lwjgl-natives-linux-arm64/3.3.1-lwjgl.1/lwjgl-natives-linux-arm64-3.3.1-lwjgl.1.jar
libraries/org/lwjgl/lwjgl-stb/3.2.2-gman64.1/lwjgl-stb-3.2.2-gman64.1-natives-linux-arm64.jar
libraries/org/lwjgl/lwjgl-tinyfd/3.2.2-gman64.1/lwjgl-tinyfd-3.2.2-gman64.1-natives-linux-arm64.jar
libraries/org/lwjgl/lwjgl-opengl/3.2.2-gman64.1/lwjgl-opengl-3.2.2-gman64.1-natives-linux-arm64.jar
libraries/org/lwjgl/lwjgl-tinyfd-natives-linux-arm64
libraries/org/lwjgl/lwjgl-tinyfd-natives-linux-arm64/3.3.1-lwjgl.1/lwjgl-tinyfd-natives-linux-arm64-3.3.1-lwjgl.1.jar
libraries/org/lwjgl/lwjgl/3.2.2-gman64.1/lwjgl-3.2.2-gman64.1-natives-linux-arm64.jar
libraries/org/lwjgl/lwjgl-openal-natives-linux-arm64
libraries/org/lwjgl/lwjgl-openal-natives-linux-arm64/3.3.1-lwjgl.1/lwjgl-openal-natives-linux-arm64-3.3.1-lwjgl.1.jar

Also that try to copy build from gman but crash too : lwjgl.zip crash-2023-02-13_18.27.03-client.txt

If you have any idea ? I remain available for tests as needed.

Best Regards

liberodark avatar Feb 13 '23 17:02 liberodark

Try this client, i adapted it for ARM64, maybe it will work.

Kron4ek avatar Feb 13 '23 19:02 Kron4ek