JDK-8343729 : fatal error: DEBUG MESSAGE: Initialized Assertion Predicate cannot fail
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 24
  • Priority: P4
  • Status: New
  • Resolution: Unresolved
  • OS: linux_ubuntu
  • CPU: x86_64
  • Submitted: 2024-10-28
  • Updated: 2024-11-06
Description
ADDITIONAL SYSTEM INFORMATION :
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

$ java -version
java version "17.0.12" 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)

$ jdk24u/bin/java -version
openjdk version "24-internal" 2025-03-18
OpenJDK Runtime Environment (fastdebug build 24-internal-adhoc.user.jdk24u)
OpenJDK 64-Bit Server VM (fastdebug build 24-internal-adhoc.user.jdk24u, mixed mode)

A DESCRIPTION OF THE PROBLEM :
When running the following testcase with JDK24u (compiled from the latest version of source code obtained from the JDK repository on GitHub), a "fatal error: DEBUG MESSAGE: Initialized Assertion Predicate cannot fail" error occurs. We've simplified the testcase to some extent, and there don't appear to be any obvious structural errors. After enabling the -Xint option, the JDK no longer reports this error, so we suspect it might be related to a JIT issue.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
javac  -source 17 -target 17 -Xlint:none -encoding UTF-8 -cp . Test.java
path-to-jdk24u/bin/java Test

ACTUAL -
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/data/user/jdk24u/src/hotspot/cpu/x86/macroAssembler_x86.cpp:832), pid=459454, tid=459456
#  fatal error: DEBUG MESSAGE: Initialized Assertion Predicate cannot fail
#
# JRE version: OpenJDK Runtime Environment (24.0) (fastdebug build 24-internal-adhoc.user.jdk24u)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 24-internal-adhoc.user.jdk24u, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x137af29]  MacroAssembler::debug64(char*, long, long*)+0x49
#
# 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:
# /data/user/JVM-Tesing-by-Anti-Optimization/toreport/Test4620_10_22_05_00_41/reduce/hs_err_pid459454.log
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
#


---------- BEGIN SOURCE ----------
public class Test {
    public static long a = -3625771290L;
    public static int[] iArrFld = new int[400];

    public static void test1() {
    }

    static int var0 = 0;

    public static void test() {

        int i1 = 1, i2 = -1;
        do {
            for (int i3 = 0; i3 < 20000; ++i3) {
                var0++;
            }
            Test.a -= ((i2++) * (++Test.iArrFld[i1 - 1]));
            for (int i8 = i1; i8 < 5; i8++) {
                Test.a = -64136;
                test1();
            }
        } while (++i1 < 336);
    }

    public static void main(String[] strArr) {
        for (int i = 1; i < 100; ++i) {
            Test.test();
        }
    }
}
---------- END SOURCE ----------