Skip to content

The JVM hard-crashes on startup with SIGSEGV #4175

Description

@Wroud

Describe the problem

Summary

The JVM hard-crashes on startup with SIGSEGV inside the bundled netty-tcnative native library. Because the crash happens in a C constructor while the .so is being loaded, it's uncatchable and takes the whole process down instead of falling back gracefully.

Environment

  • Image / tag: latest
  • Base: Alpine Linux (musl libc)
  • Arch: aarch64 (AWS EC2 Graviton)
  • JRE: Eclipse Temurin 25.0.3+9 (LTS)
  • Server type: Paper

Crash

# SIGSEGV (0xb) at pc=0x0000000000023c30, pid=54, tid=65
# JRE version: OpenJDK Runtime Environment Temurin-25.0.3+9 (25.0.3+9) (build 25.0.3+9-LTS)
# Java VM: OpenJDK 64-Bit Server VM Temurin-25.0.3+9 (25.0.3+9-LTS, ... serial gc, linux-aarch64)
# Problematic frame:
# C  [libnetty_tcnative_linux_aarch_64....so+0x2476c]  init_have_lse_atomics+0xc

Root cause

init_have_lse_atomics is GCC's outline-atomics (-moutline-atomics) runtime probe. It calls glibc's __getauxval(AT_HWCAP) to detect ARM LSE atomic support. The netty-tcnative .so shipped in this image is compiled against glibc, but Alpine uses musl, where __getauxval isn't provided the same way — so the probe dereferences a bad pointer and segfaults during dlopen. This is a known netty-tcnative-on-musl/aarch64 failure mode (see grpc-java#12567, netty#12669, grpc-java#10930).

Container definition

Paste run command or compose file here

Container logs

INFO   Resolving type given PAPER
         INFO   #
         INFO   # A fatal error has been detected by the Java Runtime Environment:
         INFO   #
         INFO   #  SIGSEGV (0xb) at pc=0x0000000000023c30, pid=54, tid=65
         INFO   #
         INFO   # JRE version: OpenJDK Runtime Environment Temurin-25.0.3+9 (25.0.3+9) (build 25.0.3+9-LTS)
         INFO   # Java VM: OpenJDK 64-Bit Server VM Temurin-25.0.3+9 (25.0.3+9-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, serial gc, linux-aarch64)
         INFO   # Problematic frame:
         INFO   # C  [libnetty_tcnative_linux_aarch_6417342692647055256540.so+0x2476c]  init_have_lse_atomics+0xc
         INFO   #
         INFO   # Core dump will be written. Default location: Determined by the following: "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h" (alternatively, falling back to /data/core.54)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions