You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

M4架构MacBook Pro构建JDK21 Docker镜像时Java运行时SIGILL崩溃问题排查求助

M4架构MacBook Pro构建JDK21 Docker镜像时Java运行时SIGILL崩溃问题排查求助

各位大佬,我最近在M4架构的MacBook Pro上尝试构建一个包含JDK21的Debian Docker镜像,结果遇到了Java运行时崩溃的问题,实在卡壳了,来向大家求助!

我写的Dockerfile内容如下:

FROM  debian:latest

ENV DEBIAN_FRONTEND=noninteractive

WORKDIR /jdk

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y wget ca-certificates

RUN wget -O jdk-21_linux_bin.tar.gz https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.tar.gz && \
    tar -xzf jdk-21_linux_bin.tar.gz && \
    folder_name=$(find . -maxdepth 1 -type d -name "*" ! -name "." | head -n 1) && \
    mv $folder_name jdk21 && \
    rm -f jdk-21_linux_bin.tar.gz

ENV JAVA_HOME=/jdk/jdk21
ENV PATH="${JAVA_HOME}/bin:${PATH}"

CMD ["java","-version"]

使用的构建命令是:

docker build -t debian-jdk21 .

但构建过程中出现了致命错误,Java运行时直接崩溃了,错误信息如下:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGILL (0x4) at pc=0x0000ffff97f3fc5c, pid=15, tid=16
#
# JRE version:  (21.0.6+8) (build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (21.0.6+8-LTS-188, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# j  java.lang.System.registerNatives()V+0 java.base@21.0.6
#
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /jdk/hs_err_pid15.log
[0.025s][warning][os] Loading hsdis library failed
#
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Aborted

我把hs_err_pid15.log里的部分关键内容截取出来了,供大家参考:

---------------  S U M M A R Y ------------

Command Line: 

Host: AArch64, 12 cores, 7G, Debian GNU/Linux 12 (bookworm)
Time: Sun Feb 23 13:58:48 2025 UTC elapsed time: 0.020505 seconds (0d 0h 0m 0s)

---------------  T H R E A D  ---------------

Current thread (0x0000ffffa8027620):  JavaThread "Unknown thread" [_thread_in_native, id=16, stack(0x0000ffffacd62000,0x0000ffffacf60000) (2040K)]

Stack: [0x0000ffffacd62000,0x0000ffffacf60000],  sp=0x0000ffffacf5e060,  free space=2032k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
j  java.lang.System.registerNatives()V+0 java.base@21.0.6
j  java.lang.System.<clinit>()V+0 java.base@21.0.6
v  ~StubRoutines::call_stub 0x0000ffff97f37158
V  [libjvm.so+0x800db8]  JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x218
V  [libjvm.so+0x7dceb0]  InstanceKlass::call_class_initializer(JavaThread*)+0x27c
V  [libjvm.so+0x7ddb54]  InstanceKlass::initialize_impl(JavaThread*)+0x404
V  [libjvm.so+0xd104f8]  Threads::initialize_java_lang_classes(JavaThread*, JavaThread*)+0xe8
V  [libjvm.so+0xd1264c]  Threads::create_vm(JavaVMInitArgs*, bool*)+0x3ec
V  [libjvm.so+0x88fe1c]  JNI_CreateJavaVM+0x7c
C  [libjli.so+0x438c]  JavaMain+0x7c
C  [libjli.so+0x79ec]  ThreadJavaMain+0xc
C  [libc.so.6+0x7ee90]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  java.lang.System.registerNatives()V+0 java.base@21.0.6
j  java.lang.System.<clinit>()V+0 java.base@21.0.6
v  ~StubRoutines::call_stub 0x0000ffff97f37158


VM Arguments:
java_command: <unknown>
java_class_path (initial): <not set>
Launcher Type: SUN_STANDARD

[Global flags]
     intx CICompilerCount                          = 4                                         {product} {ergonomic}
     uint ConcGCThreads                            = 3                                         {product} {ergonomic}
     uint G1ConcRefinementThreads                  = 10                                        {product} {ergonomic}
   size_t G1HeapRegionSize                         = 1048576                                   {product} {ergonomic}
    uintx GCDrainStackTargetSize                   = 64                                        {product} {ergonomic}
   size_t InitialHeapSize                          = 130023424                                 {product} {ergonomic}
   size_t MarkStackSize                            = 4194304                                   {product} {ergonomic}
   size_t MaxHeapSize                              = 2055208960                                {product} {ergonomic}
   size_t MaxNewSize                               = 1233125376                                {product} {ergonomic}
   size_t MinHeapDeltaBytes                        = 1048576                                   {product} {ergonomic}
   size_t MinHeapSize                              = 8388608                                   {product} {ergonomic}
    uintx NonNMethodCodeHeapSize                   = 5839564                                {pd product} {ergonomic}
    uintx NonProfiledCodeHeapSize                  = 122909338                              {pd product} {ergonomic}
    uintx ProfiledCodeHeapSize                     = 122909338                              {pd product} {ergonomic}
    uintx ReservedCodeCacheSize                    = 251658240                              {pd product} {ergonomic}
     bool SegmentedCodeCache                       = true                                      {product} {ergonomic}
   size_t SoftMaxHeapSize                          = 2055208960                             {manageable} {ergonomic}
     bool UseCompressedOops                        = true                           {product lp64_product} {ergonomic}
     bool UseG1GC                                  = true                                      {product} {ergonomic}

Logging:
Log output configuration:
 #0: stdout all=warning uptime,level,tags foldmultilines=false
 #1: stderr all=off uptime,level,tags foldmultilines=false

Environment Variables:
JAVA_HOME=/jdk/jdk21
PATH=/jdk/jdk21/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
TERM=xterm

Active Locale:
LC_ALL=C
LC_COLLATE=C
LC_CTYPE=C
LC_MESSAGES=C
LC_MONETARY=C
LC_NUMERIC=C
LC_TIME=C

Signal Handlers:
   SIGSEGV: crash_handler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO, unblocked
    SIGBUS: crash_handler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO, unblocked
    SIGFPE: crash_handler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO, unblocked
   SIGPIPE: javaSignalHandler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO, blocked
   SIGXFSZ: javaSignalHandler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO, blocked
    SIGILL: crash_handler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO, unblocked
   SIGUSR2: SR_handler in libjvm.so, mask=00000000000000000000000000000000, flags=SA_RESTART|SA_SIGINFO, blocked
    SIGHUP: SIG_DFL, mask=00000000000000000000000000000000, flags=none, blocked
    SIGINT: SIG_DFL, mask=00000000000000000000000000000000, flags=none, blocked
   SIGTERM: SIG_DFL, mask=00000000000000000000000000000000, flags=none, blocked
   SIGQUIT: UserHandler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO, blocked
   SIGTRAP: crash_handler in libjvm.so, mask=11100100010111111101111111111110, flags=SA_RESTART|SA_SIGINFO, unblocked


Periodic native trim disabled

---------------  S Y S T E M  ---------------

OS:
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
uname: Linux 6.12.5-linuxkit #1 SMP Tue Jan 21 10:23:32 UTC 2025 aarch64
OS uptime: 0 days 12:49 hours
libc: glibc 2.36 NPTL 2.36 
rlimit (soft/hard): STACK 8192k/infinity , CORE 0k/infinity , NPROC infinity/infinity , NOFILE 1048576/1048576 , AS infinity/infinity , CPU infinity/infinity , DATA infinity/infinity , FSIZE infinity/infinity , MEMLOCK infinity/infinity
load average: 1.79 2.09 1.98

/proc/meminfo:
MemTotal:        8024700 kB
MemFree:          137476 kB
MemAvailable:    6283572 kB
Buffers:          732112 kB
Cached:          5133836 kB
SwapCached:            0 kB
Active:          2086932 kB
Inactive:        5060412 kB
Active(anon):    1253352 kB
Inactive(anon):    28748 kB
Active(file):     833580 kB
Inactive(file):  5031664 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       1048572 kB
SwapFree:        1048572 kB
Zswap:                 0 kB
Zswapped:              0 kB
Dirty:               244 kB
Writeback:             0 kB
AnonPages:       1162264 kB
Mapped:           215872 kB
Shmem:               696 kB
KReclaimable:     483820 kB
Slab:             571456 kB
SReclaimable:     483820 kB
SUnreclaim:        87636 kB
KernelStack:        6960 kB
PageTables:         5716 kB
SecPageTables:         0 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     5060920 kB
Committed_AS:    2766672 kB
VmallocTotal:   135288315904 kB
VmallocUsed:        5600 kB
VmallocChunk:          0 kB
Percpu:             4512 kB
AnonHugePages:    888832 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB

/sys/kernel/mm/transparent_hugepage/enabled: [always] madvise never
/sys/kernel/mm/transparent_hugepage/defrag (defrag/compaction efforts parameter): always defer defer+madvise [madvise...

我现在完全摸不着头绪,有没有大佬能帮忙分析下这个问题的原因,或者给点可行的解决方向?

备注:内容来源于stack exchange,提问作者Hut Pizza

火山引擎 最新活动