On 23/09/2025 7:02 pm, Severin Gehwolf wrote:
Hi,

On Thu, 2025-09-11 at 10:59 +1000, David Holmes wrote:
Hi,

At present we don't really expect statx to work on Musl-C IIUC the code
correctly, but Musl-C 1.2.5 has added it:

  > This release adds extension functions statx

so likely our code needs adjusting to match what is now provided.

This is likely an incompatibility of the statx support that was added
for Linux with https://bugs.openjdk.org/browse/JDK-8316304 and musl
1.2.5. Is there a bug for this? If not I can open one.

I am not aware of any bug filed.

David

Thanks,
Severin

On 10/09/2025 10:54 pm, Konstantin Kletschke wrote:
Hello,

I am used to crosscompile openjdk for cortex-a[7|8|9] manually or using
buildroot framework without severe Problems.
ARM EABIhf 32Bit.

However recently I got in contact with a customer's rootfs using
musl-1.2.5 instead of musl-1.2.4 which I was used to and had no problems with.

Severe debugging resulted in the crash whenever musl-1.2.5 was used in
the target (regardeless what musl version was used to crosscompile and
regardeless with java I tried, correto-24, openjdk-21, openjdk-24).

I tested with a helloworld downloaded from github somewhere.
"java -jar helloworld.jar" crashes. Unzippping the jar and using
"java -cp . HelloWorld" works!

Crashes looks something like those:

#  SIGSEGV (0xb) at pc=0x7693e018, pid=8026, tid=8027
#
# JRE version: OpenJDK Runtime Environment (21.0+21) (build 21+21)
# Java VM: OpenJDK Server VM (21+21, mixed mode, serial gc, linux-arm)
# Problematic frame:
# V  [libjvm.so+0x61e018]

FATAL ERROR in native method: Null object passed to JNI
    at sun.nio.fs.UnixNativeDispatcher.stat0(java.base@21/Native Method)
    at sun.nio.fs.UnixNativeDispatcher.stat(java.base@21/Unknown Source)
    at sun.nio.fs.UnixFileAttributes.get(java.base@21/Unknown Source)
    at 
sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(java.base@21/Unknown 
Source)
    at sun.nio.fs.UnixFileSystemProvider.readAttributes(java.base@21/Unknown 
Source)
    at sun.nio.fs.LinuxFileSystemProvider.readAttributes(java.base@21/Unknown 
Source)
    at java.nio.file.Files.readAttributes(java.base@21/Unknown Source)
    at java.util.zip.ZipFile$Source.get(java.base@21/Unknown Source)
    at java.util.zip.ZipFile$CleanableResource.<init>(java.base@21/Unknown 
Source)
    at java.util.zip.ZipFile.<init>(java.base@21/Unknown Source)
    at java.util.zip.ZipFile.<init>(java.base@21/Unknown Source)
    at java.util.jar.JarFile.<init>(java.base@21/Unknown Source)
    at java.util.jar.JarFile.<init>(java.base@21/Unknown Source)
    at java.util.jar.JarFile.<init>(java.base@21/Unknown Source)
    at sun.launcher.LauncherHelper.getMainClassFromJar(java.base@21/Unknown 
Source)
    at sun.launcher.LauncherHelper.loadMainClass(java.base@21/Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(java.base@21/Unknown Source)
Aborted


With 1.2.4 everything works fine.


Farther debugging revealed that following fix in Java allowed to run it
with 1.2.5:

Index: 
openjdk-21.0.9+6/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c
===================================================================
--- 
openjdk-21.0.9+6.orig/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c
+++ openjdk-21.0.9+6/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c
@@ -430,7 +430,7 @@ Java_sun_nio_fs_UnixNativeDispatcher_ini
       capabilities |= sun_nio_fs_UnixNativeDispatcher_SUPPORTS_BIRTHTIME;
#endif
#if defined(__linux__)
-    my_statx_func = (statx_func*) dlsym(RTLD_DEFAULT, "statx");
+    my_statx_func = NULL;
       if (my_statx_func != NULL) {
           capabilities |= sun_nio_fs_UnixNativeDispatcher_SUPPORTS_BIRTHTIME;
       }


May be this has something to do with the stat ./. stat64 stuff changed
in musl from 1.2.4 to 1.2.5 or so.
I already headed to the musl people but I am not shure if its placed
better over there or here. I also already showed up at client-libs-dev
but was told to be come over here.

Kind Regards
Konstantin



Reply via email to