Skip to content

[Native Image] GraalVM 21.0.2 crashes on M4 Mac without -XX:UseSVE=0 in ARM64 ORDS image. #11057

Closed
@ujnak

Description

@ujnak

Describe the Issue

We have confirmed that disabling Scalable Vector Extension by providing the -XX:UseSVE=0 option serves as a workaround, similar to the cause described in Issue #10458. However, since this issue occurs with the officially distributed ORDS container image from Oracle, we would appreciate it if you could suggest an appropriate workaround.

Using the latest version of GraalVM can resolve many issues.

GraalVM Version

java version "21.0.2" 2024-01-16 LTS
Java(TM) SE Runtime Environment Oracle GraalVM 21.0.2+13.1 (build 21.0.2+13-LTS-jvmci-23.1-b30)
Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 21.0.2+13.1 (build 21.0.2+13-LTS-jvmci-23.1-b30, mixed mode, sharing)

Operating System and Version

Linux test 6.11.3-200.fc40.aarch64 #1 SMP PREEMPT_DYNAMIC Thu Oct 10 22:53:48 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux

Troubleshooting Confirmation

Run Command

/opt/oracle/graaljs-23.1.2-linux-aarch64/jvm/bin/java -version

Expected Behavior

java version "21.0.2" 2024-01-16 LTS
Java(TM) SE Runtime Environment Oracle GraalVM 21.0.2+13.1 (build 21.0.2+13-LTS-jvmci-23.1-b30)
Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 21.0.2+13.1 (build 21.0.2+13-LTS-jvmci-23.1-b30, mixed mode, sharing)

Actual Behavior

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGILL (0x4) at pc=0x0000ffff6fd0b79c, pid=117, tid=118
#
# JRE version:  (21.0.2+13) (build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (21.0.2+13-LTS-jvmci-23.1-b30, mixed mode, sharing, tiered, jvmci, jvmci compiler, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# j  java.lang.System.registerNatives()V+0 java.base
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h" (or dumping to /opt/oracle/ords/core.117)
#
# An error report file with more information is saved as:
# /opt/oracle/ords/hs_err_pid117.log
[0.024s][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 (core dumped)

Steps to Reproduce

On M4 Mac, macOS 15.4.1 with podman 5.4.2

create test.yaml, JAVA_TOOL_OPTIONS is assigned because the container can not be created without the option.

apiVersion: v1
kind: Pod
metadata:
  labels:
    app: test
  name: test
spec:
  containers:
  - image: container-registry.oracle.com/database/free:23.7.0.0
    name: db
    ports:
    - containerPort: 1521
      hostPort: 1521
    securityContext: {}
    volumeMounts:
    - mountPath: /opt/oracle/oradata
      name: oradata-pvc
  - args:
    - serve
    env:
    - name: JAVA_TOOL_OPTIONS
      value: -XX:UseSVE=0
    image: container-registry.oracle.com/database/ords:25.1.0
    name: ords
    securityContext: {}
    volumeMounts:
    - mountPath: /etc/ords/config
      name: ords_config-pvc
  restartPolicy: Always
  volumes:
  - name: ords_config-pvc
    persistentVolumeClaim:
      claimName: test_config
  - name: oradata-pvc
    persistentVolumeClaim:
      claimName: test_data

create 2 volumes

podman volume create test_config
podman volume create test_data

create the pod named test that contains the container created from ORDS image.
podman kube play test.yaml

Once the ORDS container test-ords is created, connect to it and invoke Java.

ynakakoshi@Ns-Macbook ords-test % podman exec -it test-ords bash
[oracle@test ords]$ /opt/oracle/graaljs-23.1.2-linux-aarch64/jvm/bin/java -version
Picked up JAVA_TOOL_OPTIONS: -XX:UseSVE=0
java version "21.0.2" 2024-01-16 LTS
Java(TM) SE Runtime Environment Oracle GraalVM 21.0.2+13.1 (build 21.0.2+13-LTS-jvmci-23.1-b30)
Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 21.0.2+13.1 (build 21.0.2+13-LTS-jvmci-23.1-b30, mixed mode, sharing)
[oracle@test ords]$ export JAVA_TOOL_OPTIONS=
[oracle@test ords]$ /opt/oracle/graaljs-23.1.2-linux-aarch64/jvm/bin/java -version
Picked up JAVA_TOOL_OPTIONS: 
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGILL (0x4) at pc=0x0000ffff93d0b79c, pid=120, tid=121
#
# JRE version:  (21.0.2+13) (build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (21.0.2+13-LTS-jvmci-23.1-b30, mixed mode, sharing, tiered, jvmci, jvmci compiler, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# j  java.lang.System.registerNatives()V+0 java.base
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h" (or dumping to /opt/oracle/ords/core.120)
#
# An error report file with more information is saved as:
# /opt/oracle/ords/hs_err_pid120.log
[0.022s][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 (core dumped)
[oracle@test ords]$ ``

Additional Context

No response

Run-Time Log Output and Error Messages

No response

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions