Java crashes using musl-1.2.5
David Holmes
david.holmes at oracle.com
Tue Sep 23 21:42:28 UTC 2025
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 at 21/Native Method)
>>> at sun.nio.fs.UnixNativeDispatcher.stat(java.base at 21/Unknown Source)
>>> at sun.nio.fs.UnixFileAttributes.get(java.base at 21/Unknown Source)
>>> at sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(java.base at 21/Unknown Source)
>>> at sun.nio.fs.UnixFileSystemProvider.readAttributes(java.base at 21/Unknown Source)
>>> at sun.nio.fs.LinuxFileSystemProvider.readAttributes(java.base at 21/Unknown Source)
>>> at java.nio.file.Files.readAttributes(java.base at 21/Unknown Source)
>>> at java.util.zip.ZipFile$Source.get(java.base at 21/Unknown Source)
>>> at java.util.zip.ZipFile$CleanableResource.<init>(java.base at 21/Unknown Source)
>>> at java.util.zip.ZipFile.<init>(java.base at 21/Unknown Source)
>>> at java.util.zip.ZipFile.<init>(java.base at 21/Unknown Source)
>>> at java.util.jar.JarFile.<init>(java.base at 21/Unknown Source)
>>> at java.util.jar.JarFile.<init>(java.base at 21/Unknown Source)
>>> at java.util.jar.JarFile.<init>(java.base at 21/Unknown Source)
>>> at sun.launcher.LauncherHelper.getMainClassFromJar(java.base at 21/Unknown Source)
>>> at sun.launcher.LauncherHelper.loadMainClass(java.base at 21/Unknown Source)
>>> at sun.launcher.LauncherHelper.checkAndLoadMain(java.base at 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
>>>
>
More information about the core-libs-dev
mailing list