sgerrand / alpine-pkg-glibc

A glibc compatibility layer package for Alpine Linux
2.05k stars 280 forks source link

Error running OpenJDK16-OpenJ9 JVM / aarch64 / killed by SIGSERV #155

Closed salakis closed 3 years ago

salakis commented 3 years ago

Unfortunately I am running into some issues while trying to run a glibc version of JVM, in my case OpenJDK16-jre_aarch64_linux_openj9_16_36_openj9-0.25.0.

I have used the 2.30-r0 arm64 by @Rjerk but I hope that it's okay to post here since it's just a mirror of your code with the sole commit of building for arm64.

I am using a rather obscure setup, running postmarketOS on a Xiaomi Mi A1 (aarch64 - kernel 4.9.188).

Running simply java --version yields the expected result:

openjdk 16-ea 2021-03-16 OpenJDK Runtime Environment AdoptOpenJDK (build 16-ea+36) Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.25.0, JRE 16 Linux aarch64-64-Bit Compressed References 20210311_79 (JIT enabled, AOT enabled) OpenJ9 - 022d65424 OMR - 09514431e JCL - 0c11227a21 based on jdk-16+36)

However, when I try to run a jar, I get the following error: fish: Job 1, 'java -Xmx2048M -Xms2048M -jar...' terminated by signal SIGSEGV (Address boundary error)

Here is the strace output:

execve("/usr/bin/java", ["java", "-jar", "paper.jar"], 0x7fd486bb40 / 15 vars /) = 0 brk(NULL) = 0x55a9aa3000 readlinkat(AT_FDCWD, "/proc/self/exe", "/usr/lib/jvm/jdk-16+36-jre/bin/j"..., 4096) = 35 faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/tls/aarch64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/tls/aarch64", 0x7fc3da7350, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/tls/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/tls", 0x7fc3da7350, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/aarch64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/aarch64", 0x7fc3da7350, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin", {st_mode=S_IFDIR|0755, st_size=1024, ...}, 0) = 0 openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/tls/aarch64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/tls/aarch64", 0x7fc3da7350, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/tls/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/tls", 0x7fc3da7350, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/aarch64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/aarch64", 0x7fc3da7350, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib", {st_mode=S_IFDIR|0755, st_size=3072, ...}, 0) = 0 openat(AT_FDCWD, "/usr/glibc-compat/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=20060, ...}) = 0 mmap(NULL, 20060, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fad64f000 close(3) = 0 openat(AT_FDCWD, "/usr/glibc-compat/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\260\"\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=92048, ...}) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fad64d000 mmap(NULL, 155664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fad600000 mprotect(0x7fad616000, 61440, PROT_NONE) = 0 mmap(0x7fad625000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7fad625000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/libjli.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/libjli.so", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\260'\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=78984, ...}) = 0 mmap(NULL, 131368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fad5df000 mprotect(0x7fad5ed000, 69632, PROT_NONE) = 0 mmap(0x7fad5fe000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf000) = 0x7fad5fe000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/glibc-compat/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0Xu\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=113960, ...}) = 0 mmap(NULL, 193544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fad5af000 mprotect(0x7fad5ca000, 61440, PROT_NONE) = 0 mmap(0x7fad5d9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7fad5d9000 mmap(0x7fad5db000, 13320, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fad5db000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/glibc-compat/lib/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\21\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=14544, ...}) = 0 mmap(NULL, 78080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fad59b000 mprotect(0x7fad59e000, 61440, PROT_NONE) = 0 mmap(0x7fad5ad000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fad5ad000 close(3) = 0 openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/bin/../lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/usr/glibc-compat/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0000E\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1442032, ...}) = 0 mmap(NULL, 1514704, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fad429000 mprotect(0x7fad583000, 61440, PROT_NONE) = 0 mmap(0x7fad592000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x159000) = 0x7fad592000 mmap(0x7fad598000, 11472, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fad598000 close(3) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fad64b000 mprotect(0x7fad592000, 12288, PROT_READ) = 0 mprotect(0x7fad5ad000, 4096, PROT_READ) = 0 mprotect(0x7fad5d9000, 4096, PROT_READ) = 0 mprotect(0x7fad625000, 4096, PROT_READ) = 0 mprotect(0x7fad5fe000, 4096, PROT_READ) = 0 mprotect(0x55799a7000, 4096, PROT_READ) = 0 mprotect(0x7fad656000, 4096, PROT_READ) = 0 munmap(0x7fad64f000, 20060) = 0 set_tid_address(0x7fad64b790) = 5392 set_robust_list(0x7fad64b7a0, 24) = 0 rt_sigaction(SIGRTMIN, {sa_handler=0x7fad5b5fd0, sa_mask=[], sa_flags=SA_SIGINFO}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {sa_handler=0x7fad5b6090, sa_mask=[], sa_flags=SA_RESTART|SA_SIGINFO}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 brk(NULL) = 0x55a9aa3000 brk(0x55a9ac4000) = 0x55a9ac4000 openat(AT_FDCWD, "paper.jar", O_RDONLY) = 3 mmap(NULL, 200704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fad3f8000 lseek(3, -22, SEEK_END) = 47701307 read(3, "PK\5\6\0\0\0\0002\0012\1\310p\0\0sl\327\2\0\0", 22) = 22 lseek(3, 47672435, SEEK_SET) = 47672435 read(3, "PK\1\2\24\3\24\0\0\10\10\0\231\272\211R\2358\276\22\237\0\0\0\0\1\0\0\24\0\0\0"..., 46) = 46 lseek(3, 0, SEEK_SET) = 0 read(3, "PK\3\4\24\0\0\10\10\0\231\272\211R\2358\276\22\237\0\0\0\0\1\0\0\24\0\0\0", 30) = 30 lseek(3, 47672435, SEEK_SET) = 47672435 read(3, "PK\1\2\24\3\24\0\0\10\10\0\231\272\211R\2358\276\22\237\0\0\0\0\1\0\0\24\0\0\0"..., 1024) = 1024 lseek(3, 0, SEEK_SET) = 0 read(3, "PK\3\4\24\0\0\10\10\0\231\272\211R\2358\276\22\237\0\0\0\0\1\0\0\24\0\0\0", 30) = 30 munmap(0x7fad3f8000, 200704) = 0 lseek(3, 50, SEEKSET) = 50 read(3, "\215\216\301\n\3020\f\206\357\205\276C\240eN\24\351m\356&\16\206\7\257\22\266\250q]V\332"..., 159) = 159 close(3) = 0 readlinkat(AT_FDCWD, "/proc/self/exe", "/usr/lib/jvm/jdk-16+36-jre/bin/j"..., 4096) = 35 faccessat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/lib/libjava.so", F_OK) = 0 openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/lib/jvm.cfg", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=29, ...}) = 0 read(3, "-server KNOWN\n-client IGNORE\n", 1024) = 29 read(3, "", 1024) = 0 close(3) = 0 newfstatat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/lib/server/libjvm.so", {st_mode=S_IFREG|0644, st_size=159560, ...}, 0) = 0 futex(0x7fad5ae0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 openat(AT_FDCWD, "/usr/lib/jvm/jdk-16+36-jre/lib/server/libjvm.so", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\260L\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0644, st_size=159560, ...}) = 0 mmap(NULL, 199280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fad3f8000 mprotect(0x7fad40b000, 114688, PROT_NONE) = 0 mmap(0x7fad427000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1f000) = 0x7fad427000 close(3) = 0 mprotect(0x7fad427000, 4096, PROT_READ) = 0 mmap(NULL, 8388608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7facbf8000 clone(child_stack=0x7fad3f6ae0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tid=[5393], tls=0x7fad3f78e0, child_tidptr=0x7fad3f72b0) = 5393 futex(0x7fad3f72b0, FUTEX_WAIT, 5393, NULL) = ? +++ killed by SIGSEGV +++ fish: Job 1, 'strace java -jar paper.jar' terminated by signal SIGSEGV (Address boundary error)

I am not quite sure how to interpret this and why it seems to rely on libraries in the lib folder within the JVM folder. Would be very happy if anyone happened to know any possible solution to this problem.

Many thanks!

sgerrand commented 3 years ago

Hi there. The OpenJDK executable which you're trying to run isn't part of the glibc package. It looks like your operating system or another process is sending the SIGSEV. I am unable to help you with this debugging process.

Sorry that I can't be of more help, but this package was created as a convenience method. It's still provided as such. The caveat is that you will need advanced knowledge of the program you're trying to run in order to do so.