JDK-8357166 : Many AOT tests failed with VM crash
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 25
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2025-05-16
  • Updated: 2025-05-19
  • Resolved: 2025-05-19
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 25
25 masterFixed
Related Reports
Causes :  
Description
Crash was observed on the Windows-x64 platform so far.

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (c:\...\open\src\hotspot\share\code\aotCodeCache.cpp:1683), pid=33116, tid=51412
#  fatal error: Address 0x000002224a11efc0 for <unknown>/('verify_oop: rax: broken oop rax (c:\...\open\src\hotspot\cpu\x86\sharedRuntime_x86_64.cpp:2753)') is missing in AOT Code Cache addresses table
#
# JRE version:  (25.0+24) (fastdebug build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 25-ea+24-LTS-2858, compiled mode, sharing, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# V  [jvm.dll+0x290c07]  AOTCodeAddressTable::id_for_address+0x327
#
# Core dump will be written. Default location: C:\sb\prod\1747405140\testoutput\test-support\jtreg_open_test_hotspot_jtreg_hotspot_tier2_runtime\scratch\0\hs_err_pid33116.mdmp
#
#

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

Command Line: -XX:MaxRAMPercentage=4.16667 -Dtest.boot.jdk=c:\ade\mesos\work_dir\jib-master\install\jdk\24\36\bundles\windows-x64\jdk-24_windows-x64_bin.zip\jdk-24 -Djava.io.tmpdir=c:\sb\prod\1747405140\testoutput\test-support\jtreg_open_test_hotspot_jtreg_hotspot_tier2_runtime\tmp -XX:+CreateCoredumpOnCrash -Xcomp -ea -esa -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -XX:-TieredCompilation -XX:+VerifyOops -Xlog:cds -Xlog:cds+heap=error -XX:AOTMode=create -XX:AOTConfiguration=JavacBench.aotconfig -XX:AOTCache=JavacBench.aot -Xlog:cds=debug,cds+class=debug,cds+heap=warning,cds+resolve=debug:file=JavacBench.aot.log::filesize=0 JavacBenchApp 90

Host: win2022-x64-225259, AMD EPYC 7J13 64-Core Processor                , 12 cores, 23G,  Windows Server 2022 , 64 bit Build 20348 (10.0.20348.3451)
Time: Fri May 16 15:49:50 2025 /GM elapsed time: 0.192154 seconds (0d 0h 0m 0s)

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

Current thread (0x0000022138d9c3f0):  JavaThread "Unknown thread" [_thread_in_vm, id=51412, stack(0x0000003fa1800000,0x0000003fa1900000) (1024K)]

Stack: [0x0000003fa1800000,0x0000003fa1900000],  sp=0x0000003fa18fe380,  free space=1016k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [jvm.dll+0x290c07]  AOTCodeAddressTable::id_for_address+0x327  (aotCodeCache.cpp:1683)
V  [jvm.dll+0x29451f]  AOTCodeCache::write_relocations+0x4af  (aotCodeCache.cpp:997)
V  [jvm.dll+0x293971]  AOTCodeCache::store_code_blob+0x371  (aotCodeCache.cpp:843)
V  [jvm.dll+0xed8cde]  SharedRuntime::generate_deopt_blob+0x189e  (sharedRuntime_x86_64.cpp:2963)
V  [jvm.dll+0x8a6e1d]  init_globals+0x8d  (init.cpp:160)
V  [jvm.dll+0x101dcdf]  Threads::create_vm+0x2ef  (threads.cpp:592)
V  [jvm.dll+0x9de4db]  JNI_CreateJavaVM_inner+0x7b  (jni.cpp:3587)
V  [jvm.dll+0x9e197f]  JNI_CreateJavaVM+0x1f  (jni.cpp:3678)
C  [jli.dll+0x550a]  JavaMain+0x11e  (java.c:494)
C  [ucrtbase.dll+0x26b4c]  (no source info available)
C  [KERNEL32.DLL+0x14cb0]  (no source info available)
C  [ntdll.dll+0x7edcb]  (no source info available)
-----------
VM options: -XX:+CreateCoredumpOnCrash -Xcomp -ea -esa -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -XX:-TieredCompilation -XX:+VerifyOops
Comments
Changeset: 84a98ab4 Branch: master Author: Vladimir Kozlov <kvn@openjdk.org> Date: 2025-05-19 14:53:52 +0000 URL: https://git.openjdk.org/jdk/commit/84a98ab43ff268d0b10926b35320717d691337ae
19-05-2025

ILW = Crash due to overflow in AOT C string table, at tier7 with AOT and VerifyOops, no workaround but disable AOT / VerifyOops = HLH = P2
19-05-2025

What change has caused this?
18-05-2025

A pull request was submitted for review. Branch: master URL: https://git.openjdk.org/jdk/pull/25277 Date: 2025-05-16 22:22:21 +0000
16-05-2025

We don't record C strings in verify_oop code because there are alot of them and they overflow AOT static C strings table. I suggest to disable AOT runtime blobs generation when VerifyOops flag is on. AOT adapters are not affected - they don't have oops operation. In JDK 26 we rework C strings caching for JEP JDK-8335368: AOT Code compilation.
16-05-2025