Description
Repetitively enable the vm option "-XX:+EnableJVMCIProduct" in a command line makes JVM crash in debug mode:
~/code/build-fastdebug/images/jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCIProduct -XX:-UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+EnableJVMCIProduct -version # To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc: SuppressErrorAt=/jvmFlag.cpp:226
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/xiagon01/code/jdk_src/src/hotspot/share/runtime/flags/jvmFlag.cpp:226), pid=32618, tid=32619
# assert(is_experimental()) failed: sanity
#
# JRE version: (15.0) (fastdebug build )
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 15-internal+0-git-259a0bcde, mixed mode, sharing, tiered, unknown gc, linux-aarch64)
# Core dump will be written. Default location: /tmp/core
#
# An error report file with more information is saved as:
# /home/xiagon01/code/ci-scripts/projects/jdk/jcstress/hs_err_pid32618.log
#
#
Aborted (core dumped)
Every time parsing this vm option will call function "enable_jvmci_product_mode", which converts several experimental JVMCI flags to product mode. So if all the flags have been converted to "product mode" at the first time parsing "-XX:+EnableJVMCIProduct", the assertion "assert(is_experimental())" will fail at the second time when parsing "-XX:+EnableJVMCIProduct".
~/code/build-fastdebug/images/jdk/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCIProduct -XX:-UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+EnableJVMCIProduct -version # To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc: SuppressErrorAt=/jvmFlag.cpp:226
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/xiagon01/code/jdk_src/src/hotspot/share/runtime/flags/jvmFlag.cpp:226), pid=32618, tid=32619
# assert(is_experimental()) failed: sanity
#
# JRE version: (15.0) (fastdebug build )
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 15-internal+0-git-259a0bcde, mixed mode, sharing, tiered, unknown gc, linux-aarch64)
# Core dump will be written. Default location: /tmp/core
#
# An error report file with more information is saved as:
# /home/xiagon01/code/ci-scripts/projects/jdk/jcstress/hs_err_pid32618.log
#
#
Aborted (core dumped)
Every time parsing this vm option will call function "enable_jvmci_product_mode", which converts several experimental JVMCI flags to product mode. So if all the flags have been converted to "product mode" at the first time parsing "-XX:+EnableJVMCIProduct", the assertion "assert(is_experimental())" will fail at the second time when parsing "-XX:+EnableJVMCIProduct".