Problem summary:
1. On asserts or guarantees, Windows debug builds do not print registers and context in the hs_err_pid<pid>.log.
2. The associated hs_err_pid<pid>.mdmp has no exception record associated with the assert.
A lot of manual labor and backtracking is required to locate the assert context in a debugger.
Problem details:
1. Here is an example hs_err_pid12856.log:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (<path>\share\jfr\recorder\checkpoint\jfrCheckpointManager.cpp:660), pid=12856, tid=35792
# assert(_global_mspace->live_list_is_empty()) failed: invariant
#
# JRE version: Java(TM) SE Runtime Environment (24.0) (slowdebug build 24-internal-2024-10-08-1448147.mgronlun...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (slowdebug 24-internal-2024-10-08-1448147.mgronlun..., mixed mode, tiered, g1 gc, windows-amd64)
# Core dump will be written. Default location:<path>\hs_err_pid11692.mdmp
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
--------------- T H R E A D ---------------
Current thread (0x000002bd966cd410): JavaThread "JFR Recorder Thread" daemon [_thread_in_native, id=35792, stack(0x000000ee54d00000,0x000000ee54e00000) (1024K)]
Stack: [0x000000ee54d00000,0x000000ee54e00000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0xfc5973] os::win32::platform_print_native_stack+0x63 (os_windows_x86.cpp:235)
V [jvm.dll+0x6df0bb] os::platform_print_native_stack+0x3b (os_windows_x86.inline.hpp:36)
V [jvm.dll+0x12a96b4] VMError::report+0x18f4 (vmError.cpp:1015)
V [jvm.dll+0x12ace0e] VMError::report_and_die+0x7ae (vmError.cpp:1846)
V [jvm.dll+0x6dd139] report_vm_error+0xc9 (debug.cpp:201)
V [jvm.dll+0xad67f8] JfrCheckpointManager::flush_type_set+0x188 (jfrCheckpointManager.cpp:660)
V [jvm.dll+0xb3f3f6] Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set>::process+0x16 (jfrRecorderService.cpp:158)
V [jvm.dll+0xb3f967] WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> >::process+0x17 (jfrRecorderService.cpp:186)
V [jvm.dll+0xb3d6c3] invoke<WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> > >+0x13 (jfrRecorderService.cpp:277)
V [jvm.dll+0xb3d69b] flush_typeset+0x3b (jfrRecorderService.cpp:366)
V [jvm.dll+0xb3ce63] JfrRecorderService::flush+0xc3 (jfrRecorderService.cpp:657)
V [jvm.dll+0xb3f426] Content<JfrRecorderService,&JfrRecorderService::flush>::process+0x16 (jfrRecorderService.cpp:158)
V [jvm.dll+0xb3f9c7] WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> >::process+0x17 (jfrRecorderService.cpp:186)
V [jvm.dll+0xb3de43] invoke<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x13 (jfrRecorderService.cpp:277)
V [jvm.dll+0xb3dd5b] invoke_with_flush_event<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x2b (jfrRecorderService.cpp:282)
V [jvm.dll+0xb3c762] JfrRecorderService::invoke_flush+0x102 (jfrRecorderService.cpp:672)
V [jvm.dll+0xb3cf6f] JfrRecorderService::flushpoint+0x3f (jfrRecorderService.cpp:682)
V [jvm.dll+0xb409c7] recorderthread_entry+0x187 (jfrRecorderThreadLoop.cpp:85)
V [jvm.dll+0xacafc6] JavaThread::thread_main_inner+0x146 (javaThread.cpp:759)
V [jvm.dll+0xacae71] JavaThread::run+0x181 (javaThread.cpp:744)
V [jvm.dll+0x11f9a3a] Thread::call_run+0x18a (thread.cpp:237)
V [jvm.dll+0xfc06e9] thread_native_entry+0x129 (os_windows.cpp:554)
C [ucrtbase.dll+0x21bb2] (no source info available)
C [KERNEL32.DLL+0x17344] (no source info available)
C [ntdll.dll+0x526b1] (no source info available)
[ NO REGISTER INFORMATION ] <<---
2. Here is the associated hs_err_pid12856.mdmp file loaded into Windbg:
Microsoft (R) Windows Debugger Version 10.0.22000.194 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [<path>\hs_err_pid12856.mdmp]
User Mini Dump File with Full Memory: Only application data is available
Executable search path is:
Windows 10 Version 19045 MP (16 procs) Free x64
Product: WinNt, suite: SingleUserTS
Edition build lab: 19041.1.amd64fre.vb_release.191206-1406
.................................................
For analysis of this file, run !analyze -v
ntdll!NtWaitForSingleObject+0x14:
00007ff9`659ad064 c3 ret
2.1. Try to get the exception context:
0:000> .excr
Minidump doesn't have an exception context
Unable to get exception context, HRESULT 0x80004002
2.2. The .mdmp file does not contain an exception context (EXCEPTION_RECORD).
2.3. To get something meaningful from the .mdmp file,
you will have to do manual work to locate something that looks associated with the assert; a process similar to what follows.
2.3.1. Take the thread id (tid) from the hs_err_pid12856.log:
# Internal Error (<path>\share\jfr\recorder\checkpoint\jfrCheckpointManager.cpp:660), pid=12856, tid=35792
2.3.2. The tid listed in the hs_err_pid12856.log is in decimal, convert to hex;
.formats 0n35792
Evaluate expression:
Hex: 00000000`00008bd0
Decimal: 35792
Octal: 0000000000000000105720
Binary: 00000000 00000000 00000000 00000000 00000000 00000000 10001011 11010000
Chars: ........
Time: Thu Jan 1 10:56:32 1970
Float: low 5.01553e-041 high 0
Double: 1.76836e-319
2.3.3. List all threads.
0:000> ~
. 0 Id: 2dac.953c Suspend: 0 Teb: 000000ee`5352d000 Unfrozen
1 Id: 2dac.1388 Suspend: 0 Teb: 000000ee`5352f000 Unfrozen
2 Id: 2dac.8cd0 Suspend: 0 Teb: 000000ee`53531000 Unfrozen
3 Id: 2dac.ba4c Suspend: 0 Teb: 000000ee`53533000 Unfrozen
4 Id: 2dac.5258 Suspend: 0 Teb: 000000ee`53535000 Unfrozen
5 Id: 2dac.a394 Suspend: 0 Teb: 000000ee`53537000 Unfrozen ""
6 Id: 2dac.8f4 Suspend: 0 Teb: 000000ee`53539000 Unfrozen ""
7 Id: 2dac.7480 Suspend: 0 Teb: 000000ee`5353b000 Unfrozen ""
8 Id: 2dac.b704 Suspend: 0 Teb: 000000ee`5353d000 Unfrozen ""
9 Id: 2dac.6a6c Suspend: 0 Teb: 000000ee`5353f000 Unfrozen ""
10 Id: 2dac.a1c0 Suspend: 0 Teb: 000000ee`53541000 Unfrozen ""
11 Id: 2dac.82f8 Suspend: 0 Teb: 000000ee`53543000 Unfrozen ""
12 Id: 2dac.97fc Suspend: 0 Teb: 000000ee`53545000 Unfrozen ""
13 Id: 2dac.a260 Suspend: 0 Teb: 000000ee`53547000 Unfrozen ""
14 Id: 2dac.6b00 Suspend: 0 Teb: 000000ee`53549000 Unfrozen ""
15 Id: 2dac.70cc Suspend: 1 Teb: 000000ee`5354b000 Unfrozen ""
16 Id: 2dac.5be0 Suspend: 0 Teb: 000000ee`5354d000 Unfrozen ""
17 Id: 2dac.97b8 Suspend: 0 Teb: 000000ee`5354f000 Unfrozen ""
18 Id: 2dac.16dc Suspend: 0 Teb: 000000ee`53551000 Unfrozen ""
19 Id: 2dac.5324 Suspend: 0 Teb: 000000ee`53553000 Unfrozen ""
20 Id: 2dac.4c48 Suspend: 0 Teb: 000000ee`53555000 Unfrozen ""
21 Id: 2dac.3a84 Suspend: 0 Teb: 000000ee`53557000 Unfrozen ""
22 Id: 2dac.46dc Suspend: 0 Teb: 000000ee`53559000 Unfrozen ""
23 Id: 2dac.8bd0 Suspend: 0 Teb: 000000ee`5356f000 Unfrozen "" <<-- 0x8bd0
24 Id: 2dac.1ee4 Suspend: 0 Teb: 000000ee`53581000 Unfrozen ""
25 Id: 2dac.287c Suspend: 0 Teb: 000000ee`53583000 Unfrozen ""
26 Id: 2dac.2290 Suspend: 0 Teb: 000000ee`53585000 Unfrozen ""
27 Id: 2dac.9dc4 Suspend: 0 Teb: 000000ee`53587000 Unfrozen ""
28 Id: 2dac.57fc Suspend: 0 Teb: 000000ee`53589000 Unfrozen ""
29 Id: 2dac.85dc Suspend: 0 Teb: 000000ee`5358b000 Unfrozen ""
30 Id: 2dac.4280 Suspend: 0 Teb: 000000ee`5358d000 Unfrozen ""
31 Id: 2dac.73e8 Suspend: 0 Teb: 000000ee`5358f000 Unfrozen ""
32 Id: 2dac.a518 Suspend: 0 Teb: 000000ee`53591000 Unfrozen ""
33 Id: 2dac.56d8 Suspend: 0 Teb: 000000ee`53593000 Unfrozen ""
34 Id: 2dac.90dc Suspend: 0 Teb: 000000ee`53595000 Unfrozen ""
35 Id: 2dac.7444 Suspend: 0 Teb: 000000ee`53597000 Unfrozen ""
36 Id: 2dac.a64c Suspend: 0 Teb: 000000ee`5359d000 Unfrozen ""
37 Id: 2dac.8858 Suspend: 0 Teb: 000000ee`535a1000 Unfrozen ""
2.3.4. Switch to thread 23.
~23s
ntdll!NtGetContextThread+0x14:
00007ff9`659aee34 c3 ret
2.3.5. Manually inspect the stack to find something
that looks somewhat related to the assert:
Manually searching the stack for something interesting...
0:023> dps @rsp
000000ee`54dfd2e8 000002bd`f3001c18
000000ee`54dfd2f0 00000000`50280163
000000ee`54dfd2f8 00000000`00000000
000000ee`54dfd300 00000000`00000030
000000ee`54dfd308 00000000`00000000
000000ee`54dfd310 00000000`00000001
000000ee`54dfd318 000002bd`f3100000
000000ee`54dfd320 000002bd`99d20000
000000ee`54dfd328 00007ff9`65a0a386 ntdll!RtlpValidateHeap+0x32
000000ee`54dfd330 000002bd`99d20000
000000ee`54dfd338 00000000`00000000
000000ee`54dfd340 00000000`00000020
000000ee`54dfd348 00000000`00000050
000000ee`54dfd350 00000000`00000000
000000ee`54dfd358 000000ee`54dfd364
000000ee`54dfd360 00000004`54dfd3b1
000000ee`54dfd368 000000ee`54dfd490
000000ee`54dfd370 000000ee`54dfd3cc
000000ee`54dfd378 000002bd`99d20000
000000ee`54dfd380 00000000`00000100
000000ee`54dfd388 00000000`00000000
000000ee`54dfd390 00000000`00000110
000000ee`54dfd398 00000000`00000001
000000ee`54dfd3a0 000002bd`99d20000
000000ee`54dfd3a8 00000000`00000000
000000ee`54dfd3b0 000002bd`99d20000
000000ee`54dfd3b8 00007ff9`65a08a86 ntdll!RtlDebugAllocateHeap+0x366
000000ee`54dfd3c0 000002bd`99d20750
000000ee`54dfd3c8 00000000`00000000
000000ee`54dfd3d0 000002bd`99d20750
000000ee`54dfd3d8 00000000`00000000
000000ee`54dfd3e0 000000ee`54dfd601
...
2.3.6. At a suspected point, backtracking is necessary to understand the assert context.
dps 000000ee`54dff0e8
000000ee`54dff0e8 00007ff9`18aa8af2 jvm!os::abort+0x102 [<path>\src\hotspot\os\windows\os_windows.cpp @ 1369]
000000ee`54dff0f0 ffffffff`ffffffff
000000ee`54dff0f8 00007ff9`00002dac
000000ee`54dff100 00000000`000004d8
000000ee`54dff108 00007ff9`00001826
000000ee`54dff110 00000000`00000000
000000ee`54dff118 00000000`00000000
000000ee`54dff120 00000000`00000000
000000ee`54dff128 00007ff9`197fb104 jvm!ZPointerLoadShiftTable+0x7e4
000000ee`54dff130 00001826`00002dac
000000ee`54dff138 00007ff9`18d9dfb7 jvm!print_bug_submit_message+0xf7 [<path>\src\hotspot\share\utilities\vmError.cpp @ 180]
000000ee`54dff140 00000000`00000000
000000ee`54dff148 ffffffff`ffffffff
000000ee`54dff150 00000000`00000001
000000ee`54dff158 000000ee`54dff020
000000ee`54dff160 000002bd`00000001
0:023>
000000ee`54dff168 00000000`00000000
000000ee`54dff170 00000000`00000000
000000ee`54dff178 00007ff9`18d9d39a jvm!VMError::report_and_die+0xd3a [<path>\src\hotspot\share\utilities\vmError.cpp @ 1953]
000000ee`54dff180 000000ee`e0000001
000000ee`54dff188 00000000`00000000
000000ee`54dff190 00000000`00000000
000000ee`54dff198 00000000`00000000
000000ee`54dff1a0 00000000`000007d0
000000ee`54dff1a8 00007ff9`1837c887
000000ee`54dff1b0 000000ee`54dff1d0
000000ee`54dff1b8 000002bf`ffb46aa0
000000ee`54dff1c0 00000000`00000001
000000ee`54dff1c8 00007ff9`17b0f463 jvm!ScopedFence<0>::prefix+0x13 [<path>\src\hotspot\share\runtime\atomic.hpp @ 855]
000000ee`54dff1d0 000000ee`54dff201
000000ee`54dff1d8 00000000`00000000
000000ee`54dff1e0 00000000`0000000a
0:023>
000000ee`54dff1e8 00000000`00008bd0
000000ee`54dff1f0 000000ee`54dff210
000000ee`54dff1f8 000002bf`ffb46aa0
000000ee`54dff200 00007ff9`19638b50 jvm!fdStream::`vftable'
000000ee`54dff208 00000200`00000000
000000ee`54dff210 000002bf`00000000
000000ee`54dff218 00000000`000003ce
000000ee`54dff220 00000000`00000001
000000ee`54dff228 00007ff9`19cb21b0 jvm!buffer
000000ee`54dff230 00000000`000007d0
000000ee`54dff238 00000000`00000001
000000ee`54dff240 000000ee`00000000
000000ee`54dff248 00000000`00000000
000000ee`54dff250 000002bf`ffb4652a
000000ee`54dff258 00007ff9`185d3efb jvm!JfrVersionSystem::Node::remove_ref+0x7b [<path>\src\hotspot\share\jfr\utilities\jfrVersionSystem.inline.hpp @ 110]
000000ee`54dff260 000002bf`ffb46a90
0:023>
000000ee`54dff268 00000000`00000000
000000ee`54dff270 000002bf`ffb46528
000000ee`54dff278 00007ff9`17b0ecc8 jvm!Atomic::load_acquire<Method *>+0x18 [<path>\src\hotspot\share\runtime\atomic.hpp @ 888]
000000ee`54dff280 000000ee`54dff2a0
000000ee`54dff288 00007ff9`17e09c67
000000ee`54dff290 00007ff9`19638b50 jvm!fdStream::`vftable'
000000ee`54dff298 00000000`00000000
000000ee`54dff2a0 000002bf`00000000
000000ee`54dff2a8 00000000`0001107b
000000ee`54dff2b0 00000000`00000001
000000ee`54dff2b8 00007ff9`19cb21b0 jvm!buffer
000000ee`54dff2c0 00000000`000007d0
000000ee`54dff2c8 000002bf`ffffffff
000000ee`54dff2d0 00000000`00000001
000000ee`54dff2d8 000000ee`00000008
000000ee`54dff2e0 000000ee`54dff2f0
0:023>
000000ee`54dff2e8 00000000`00000001
000000ee`54dff2f0 00000000`00000000
000000ee`54dff2f8 00000000`00000000
000000ee`54dff300 00000000`00000000
000000ee`54dff308 00000000`00000000
000000ee`54dff310 00000710`fffffb30
000000ee`54dff318 000004d0`fffffb30
000000ee`54dff320 00000150`000000f0
000000ee`54dff328 00007ff9`180fbb41 jvm!Atomic::inc<unsigned __int64>+0x21 [<path>\src\hotspot\share\runtime\atomic.hpp @ 632]
000000ee`54dff330 00000000`c0000005
000000ee`54dff338 00000000`00000000
000000ee`54dff340 00007ff9`185c67d6 jvm!JfrCheckpointManager::flush_type_set+0x166 [<path>src\hotspot\share\jfr\recorder\checkpoint\jfrCheckpointManager.cpp @ 660]
000000ee`54dff348 00000000`00000002
000000ee`54dff350 00000000`00000001
000000ee`54dff358 000002bd`f3250000
000000ee`54dff360 00000000`00000000
To say this is tedious and time-consuming is an understatement,
and is especially irritating since this is a debug build, meaning all
details are available; it's just that they are not provided.
Proposal:
Build CAN_SHOW_REGISTERS_ON_ASSERT support also for Windows and ensure a proper EXCEPTION_RECORD is provided in the .mdmp file.
Results:
1. Here is an example for the new hs_err_pid12016.log:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (<path>\open\src\hotspot\share\jfr\recorder\checkpoint\jfrCheckpointManager.cpp:660), pid=12016, tid=20240
# guarantee(_global_mspace->live_list_is_empty()) failed: invariant
#
# JRE version: Java(TM) SE Runtime Environment (24.0) (slowdebug build 24-internal-2024-10-28-1355460.mgronlun...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (slowdebug 24-internal-2024-10-28-1355460.mgronlun..., interpreted mode, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# V [jvm.dll+0xad5a94] JfrCheckpointManager::flush_type_set+0x154
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
--------------- T H R E A D ---------------
Current thread (0x000001a2457d3200): JavaThread "JFR Recorder Thread" daemon [_thread_in_native, id=20240, stack(0x0000001690700000,0x0000001690800000) (1024K)]
Stack: [0x0000001690700000,0x0000001690800000], sp=0x00000016907ff7c0, free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0xad5a94] JfrCheckpointManager::flush_type_set+0x154 (jfrCheckpointManager.cpp:660)
V [jvm.dll+0xb40c06] Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set>::process+0x16 (jfrRecorderService.cpp:158)
V [jvm.dll+0xb41177] WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> >::process+0x17 (jfrRecorderService.cpp:186)
V [jvm.dll+0xb3eed3] invoke<WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> > >+0x13 (jfrRecorderService.cpp:277)
V [jvm.dll+0xb3eeab] flush_typeset+0x3b (jfrRecorderService.cpp:366)
V [jvm.dll+0xb3e673] JfrRecorderService::flush+0xc3 (jfrRecorderService.cpp:657)
V [jvm.dll+0xb40c36] Content<JfrRecorderService,&JfrRecorderService::flush>::process+0x16 (jfrRecorderService.cpp:158)
V [jvm.dll+0xb411d7] WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> >::process+0x17 (jfrRecorderService.cpp:186)
V [jvm.dll+0xb3f653] invoke<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x13 (jfrRecorderService.cpp:277)
V [jvm.dll+0xb3f56b] invoke_with_flush_event<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x2b (jfrRecorderService.cpp:282)
V [jvm.dll+0xb3df72] JfrRecorderService::invoke_flush+0x102 (jfrRecorderService.cpp:672)
V [jvm.dll+0xb3e77f] JfrRecorderService::flushpoint+0x3f (jfrRecorderService.cpp:682)
V [jvm.dll+0xb42107] recorderthread_entry+0x187 (jfrRecorderThreadLoop.cpp:85)
V [jvm.dll+0xacc2b6] JavaThread::thread_main_inner+0x146 (javaThread.cpp:759)
V [jvm.dll+0xacc161] JavaThread::run+0x181 (javaThread.cpp:744)
V [jvm.dll+0x11f7e4a] Thread::call_run+0x18a (thread.cpp:237)
V [jvm.dll+0xfbeb09] thread_native_entry+0x129 (os_windows.cpp:555)
C [ucrtbase.dll+0x21bb2] (no source info available)
C [KERNEL32.DLL+0x17344] (no source info available)
C [ntdll.dll+0x526b1] (no source info available)
Registers:
RAX=0x000001a22d1d0000, RBX=0x000001a245211320, RCX=0x00000016907ff680, RDX=0x000001a240550ee0
RSP=0x00000016907ff7c0, RBP=0x0000000000000000, RSI=0x0000000000000000, RDI=0x0000000000000000
R8 =0x0000000000000001, R9 =0x0000000000000008, R10=0x0000000000000000, R11=0x00000016907ff3b0
R12=0x0000000000000000, R13=0x0000000000000000, R14=0x0000000000000000, R15=0x0000000000000000
RIP=0x00007ff8b94b5a94, EFLAGS=0x0000000000010246
XMM[0]=0x0000000000000000 0x0000001f00000000
XMM[1]=0x0000000000000000 0x0000000000000000
XMM[2]=0x0000000000000000 0x0000000000000000
XMM[3]=0x0000000000000000 0x0000000000000000
XMM[4]=0x0000000000000000 0x0000000000000000
XMM[5]=0x0000000000000000 0x0000000000000000
XMM[6]=0x0000000000000000 0x0000000000000000
XMM[7]=0x0000000000000000 0x0000000000000000
XMM[8]=0x0000000000000000 0x0000000000000000
XMM[9]=0x0000000000000000 0x0000000000000000
XMM[10]=0x0000000000000000 0x0000000000000000
XMM[11]=0x0000000000000000 0x0000000000000000
XMM[12]=0x0000000000000000 0x0000000000000000
XMM[13]=0x0000000000000000 0x0000000000000000
XMM[14]=0x0000000000000000 0x0000000000000000
XMM[15]=0x0000000000000000 0x0000000000000000
MXCSR=0x00001fa0
Register to memory mapping:
RAX=0x000001a22d1d0000 in mmap'd memory region [0x000001a22d1d0000 - 0x000001a22d1d1000], tag mtInternal
[0x00007ff8b90be146]initialize_assert_poison+0x16 (debug.cpp:718)
[0x00007ff8b9be7c4b]Threads::create_vm+0x20b (threads.cpp:498)
[0x00007ff8b95787fc]JNI_CreateJavaVM_inner+0x7c (jni.cpp:3596)
[0x00007ff8b955bd9f]JNI_CreateJavaVM+0x2f (jni.cpp:3687)
RBX=0x000001a245211320 points into unknown readable memory: 0x00007ff8b999e9e0 | e0 e9 99 b9 f8 7f 00 00
RCX=0x00000016907ff680 is pointing into the stack for thread: 0x000001a2457d3200
RDX=0x000001a240550ee0 into live malloced block starting at 0x000001a240550ed0, size 56, tag mtTracing
[0x00007ff8b94b139a]JfrCHeapObj::operator new+0x1a (jfrAllocation.cpp:96)[0x00007ff8b94b5c62]create_mspace<JfrMemorySpace<JfrCheckpointManager,JfrMspaceRetrieval,JfrLinkedList<JfrBuffer,JfrCHeapObj>,JfrLinkedList<JfrBuffer,JfrCHeapObj>,1>,JfrCheckpointManager>+0x22 (jfrMemorySpace.inline.hpp:310)[0x00007ff8b94b3f17]JfrCheckpointManager::initialize_early+0x77 (jfrCheckpointManager.cpp:104)[0x00007ff8b951bd01]JfrRecorder::create_checkpoint_manager+0x71 (jfrRecorder.cpp:361)
RSP=0x00000016907ff7c0 is pointing into the stack for thread: 0x000001a2457d3200
RBP=0x0 is null
RSI=0x0 is null
RDI=0x0 is null
R8 =0x0000000000000001 is an unknown value
R9 =0x0000000000000008 is an unknown value
R10=0x0 is null
R11=0x00000016907ff3b0 is pointing into the stack for thread: 0x000001a2457d3200
R12=0x0 is null
R13=0x0 is null
R14=0x0 is null
R15=0x0 is null
Top of Stack: (sp=0x00000016907ff7c0)
0x00000016907ff7c0: 00007ff8ba3ec4c0 0000001600000294 ..>.............
0x00000016907ff7d0: 00007ff8ba3ebbc8 00007ff8ba3ec4b0 ..>.......>.....
0x00000016907ff7e0: 000001a2457d3200 00000000000000f8 .2}E............
0x00000016907ff7f0: 00000016907ff810 00007ff8b95200d0 ..........R.....
0x00000016907ff800: 000001a2457d3200 00007ff800000001 .2}E............
0x00000016907ff810: 000001a245033110 00000000000000f0 .1.E............
0x00000016907ff820: 000001a245232320 000000000002c793 ##E............
0x00000016907ff830: 000000000002c8c3 00007ff8b9beb415 ................
0x00000016907ff840: 00000016907ff930 00007ff8b95214d4 0.........R.....
0x00000016907ff850: 000001a245033110 00007ff8b9520c06 .1.E......R.....
0x00000016907ff860: 000001a2405580d0 00007ff8b94bf943 ..U@....C.K.....
0x00000016907ff870: 000001a245033110 00007ff8b952114f .1.E....O.R.....
0x00000016907ff880: 0000001600000001 00007ff8b9521177 ........w.R.....
0x00000016907ff890: 00000016907ff920 00007ff8b94c1543 .......C.L.....
0x00000016907ff8a0: 000001a245033110 00007ff8bab54a30 .1.E....0J......
0x00000016907ff8b0: 0000000000000000 00007ff8b951eb7d ........}.Q.....
0x00000016907ff8c0: 00000016907ff930 00007ff8b951eed3 0.........Q.....
0x00000016907ff8d0: 00000016907ff930 000001a245033110 0........1.E....
0x00000016907ff8e0: 00000016907ff920 00007ff8b951eb52 .......R.Q.....
0x00000016907ff8f0: 00000016907ff930 00007ff8b951eeab 0.........Q.....
0x00000016907ff900: 00000016907ff930 000001a245033110 0........1.E....
0x00000016907ff910: 00000016907ff920 000001a245033110 ........1.E....
0x00000016907ff920: 000001a2405580d0 000001a200000000 ..U@............
0x00000016907ff930: 0000001183fc962a 0000000000000000 *...............
0x00000016907ff940: 000001a245033110 00000016907ff920 .1.E.... .......
0x00000016907ff950: 000000000002c8c3 00000000000000cb ................
0x00000016907ff960: 00000016907ff980 00007ff8b951e673 ........s.Q.....
0x00000016907ff970: 000001a2405580d0 000001a245033110 ..U@.....1.E....
0x00000016907ff980: 000001a2457b8c90 000001a2457d3200 ..{E.....2}E....
0x00000016907ff990: 0000000000000011 00007ff8b8ccd2bb ................
0x00000016907ff9a0: 00000016907ff9c0 00007ff8b9520c36 ........6.R.....
0x00000016907ff9b0: 00000016907ffbf8 000001a2407ef570 ........p.~@....
Instructions: (pc=0x00007ff8b94b5a94)
0x00007ff8b94b5994: e8 77 39 98 ff 48 8b 4c 24 20 e8 7d 14 00 00 48
0x00007ff8b94b59a4: 89 44 24 28 48 8d 4c 24 40 e8 ce 42 98 ff eb 0f
0x00007ff8b94b59b4: 48 8b 4c 24 20 e8 62 14 00 00 48 89 44 24 28 48
0x00007ff8b94b59c4: 8d 0d de c9 68 01 e8 31 bb 00 00 0f b6 c0 85 c0
0x00007ff8b94b59d4: 0f 84 46 01 00 00 48 8b 8c 24 a0 00 00 00 e8 a9
0x00007ff8b94b59e4: e8 ff ff 48 8b d0 48 8d 4c 24 50 e8 5c 87 00 00
0x00007ff8b94b59f4: 48 8d 54 24 50 48 8d 4c 24 30 e8 cd d5 54 ff 45
0x00007ff8b94b5a04: 33 c0 48 8d 54 24 30 48 8b 84 24 a0 00 00 00 48
0x00007ff8b94b5a14: 8b 48 08 e8 44 3e 00 00 33 c0 85 c0 75 0c e8 49
0x00007ff8b94b5a24: 5d 54 ff 0f b6 c0 85 c0 75 40 48 8b 84 24 a0 00
0x00007ff8b94b5a34: 00 00 48 8b 08 e8 a2 ab 00 00 0f b6 c0 85 c0 75
0x00007ff8b94b5a44: 29 48 8b 05 e4 09 5c 01 c6 00 58 4c 8d 0d ea 69
0x00007ff8b94b5a54: f3 00 4c 8d 05 9b 60 f3 00 ba 93 02 00 00 48 8d
0x00007ff8b94b5a64: 0d e7 69 f3 00 e8 e2 88 c0 ff 33 c0 85 c0 75 a8
0x00007ff8b94b5a74: 33 d2 48 8b 84 24 a0 00 00 00 48 8b 08 e8 ea bb
0x00007ff8b94b5a84: 00 00 0f b6 c0 85 c0 75 29 48 8b 05 9c 09 5c 01
=>0x00007ff8b94b5a94: c6 00 58 4c 8d 0d 12 6a f3 00 4c 8d 05 23 61 f3
0x00007ff8b94b5aa4: 00 ba 94 02 00 00 48 8d 0d 0f 6a f3 00 e8 9a 88
0x00007ff8b94b5ab4: c0 ff 33 c0 85 c0 75 b8 45 33 c0 48 8b 84 24 a0
0x00007ff8b94b5ac4: 00 00 00 48 8b 10 48 8d 4c 24 30 e8 1c 52 00 00
0x00007ff8b94b5ad4: 48 8b 8c 24 a0 00 00 00 e8 af e7 ff ff 48 8b d0
0x00007ff8b94b5ae4: 48 8d 4c 24 60 e8 f2 8a 00 00 48 8d 54 24 60 48
0x00007ff8b94b5af4: 8d 4c 24 38 e8 d3 d4 54 ff 45 33 c0 48 8d 54 24
0x00007ff8b94b5b04: 38 48 8b 84 24 a0 00 00 00 48 8b 48 10 e8 9a 3e
0x00007ff8b94b5b14: 00 00 48 8d 4c 24 60 e8 40 8d 00 00 48 8b 44 24
0x00007ff8b94b5b24: 28 48 81 c4 98 00 00 00 c3 cc cc cc cc cc cc cc
0x00007ff8b94b5b34: cc cc cc cc cc cc cc cc cc cc cc cc 48 89 54 24
0x00007ff8b94b5b44: 10 48 89 4c 24 08 48 83 ec 48 48 b8 00 00 00 00
0x00007ff8b94b5b54: 00 00 00 80 48 39 44 24 50 76 55 33 c0 85 c0 75
0x00007ff8b94b5b64: 0c e8 06 5c 54 ff 0f b6 c0 85 c0 75 39 33 c0 85
0x00007ff8b94b5b74: c0 75 33 48 8b 05 b2 08 5c 01 c6 00 58 48 8b 44
0x00007ff8b94b5b84: 24 50 48 89 44 24 20 4c 8d 0d 56 86 f3 00 4c 8d
Stack slot to memory mapping:
stack at sp + 0 slots: 0x00007ff8ba3ec4c0 jvm.dll::ZPointerLoadShiftTable + 0x38d8
stack at sp + 1 slots: 0x0000001600000294 is an unknown value
stack at sp + 2 slots: 0x00007ff8ba3ebbc8 jvm.dll::ZPointerLoadShiftTable + 0x2fe0
stack at sp + 3 slots: 0x00007ff8ba3ec4b0 jvm.dll::ZPointerLoadShiftTable + 0x38c8
stack at sp + 4 slots: 0x000001a2457d3200 is a thread
stack at sp + 5 slots: 0x00000000000000f8 is an unknown value
stack at sp + 6 slots: 0x00000016907ff810 is pointing into the stack for thread: 0x000001a2457d3200
stack at sp + 7 slots: 0x00007ff8b95200d0 jvm.dll::WriterHost<EncoderHost<BigEndianEncoderImpl,BigEndianEncoderImpl>,EncoderHost<Varint128EncoderImpl,BigEndianEncoderImpl>,StreamWriterHost<MallocAdapter<1048576>,JfrCHeapObj> >::write_padded_at_offset<unsigned __int64> + 0x60
Lock stack of current Java thread (top to bottom):
2. Here is the new associated hs_err_pid12016.mdmp file loaded into Windbg:
Microsoft (R) Windows Debugger Version 10.0.22000.194 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [<path>\hs_err_pid12016.mdmp]
User Mini Dump File with Full Memory: Only application data is available
Executable search path is:
Windows 10 Version 19045 MP (16 procs) Free x64
Product: WinNt, suite: SingleUserTS
Edition build lab: 19041.1.amd64fre.vb_release.191206-1406
.................................................
This dump file has an exception of interest stored in it. <<<----- HERE -------
The stored exception information can be accessed via .ecxr.
(2ef0.4f10): Access violation - code c0000005 (first/second chance not available)
For analysis of this file, run !analyze -v
ntdll!NtGetContextThread+0x14:
00007ff9`659aee34 c3 ret
2.1. Try to get the exception context (EXCEPTION_RECORD):
0:019> .ecxr
*** WARNING: Unable to verify checksum for jvm.dll
rax=000001a22d1d0000 rbx=000001a245211320 rcx=00000016907ff680
rdx=000001a240550ee0 rsi=0000000000000000 rdi=0000000000000000
rip=00007ff8b94b5a94 rsp=00000016907ff7c0 rbp=0000000000000000
r8=0000000000000001 r9=0000000000000008 r10=0000000000000000
r11=00000016907ff3b0 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up ei pl zr na po nc
cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246
jvm!JfrCheckpointManager::flush_type_set+0x154:
00007ff8`b94b5a94 c60058 mov byte ptr [rax],58h ds:000001a2`2d1d0000=58
2.2 Exception context in .mdmp located, loaded and presented.
0:019> kb
*** Stack trace for last set context - .thread/.cxr resets it
# RetAddr : Args to Child : Call Site
00 00007ff8`b9520c06 : 000001a2`405580d0 00007ff8`b94bf943 000001a2`45033110 00007ff8`b952114f : jvm!JfrCheckpointManager::flush_type_set+0x154 [<path>\open\src\hotspot\share\jfr\recorder\checkpoint\jfrCheckpointManager.cpp @ 660]
01 00007ff8`b9521177 : 00000016`907ff920 00007ff8`b94c1543 000001a2`45033110 00007ff8`bab54a30 : jvm!Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set>::process+0x16 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 158]
02 00007ff8`b951eed3 : 00000016`907ff930 000001a2`45033110 00000016`907ff920 00007ff8`b951eb52 : jvm!WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> >::process+0x17 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 186]
03 00007ff8`b951eeab : 00000016`907ff930 000001a2`45033110 00000016`907ff920 000001a2`45033110 : jvm!invoke<WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> > >+0x13 [<path>\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 277]
04 00007ff8`b951e673 : 000001a2`405580d0 000001a2`45033110 000001a2`457b8c90 000001a2`457d3200 : jvm!flush_typeset+0x3b [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 366]
05 00007ff8`b9520c36 : 00000016`907ffbf8 000001a2`407ef570 000001a2`457b8ca0 000001a2`457b8cc0 : jvm!JfrRecorderService::flush+0xc3 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 657]
06 00007ff8`b95211d7 : 00000016`907ffb18 000001a2`457b8ca0 000001a2`457b8cc0 00007ff8`b9a360c9 : jvm!Content<JfrRecorderService,&JfrRecorderService::flush>::process+0x16 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 158]
07 00007ff8`b951f653 : 00000016`907ffb28 00007ff8`b9beb415 00000016`907ffb28 00007ff8`bab44980 : jvm!WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> >::process+0x17 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 186]
08 00007ff8`b951f56b : 00000016`907ffb28 00007ff8`b94bf943 000001a2`45033110 000001a2`457b8cc0 : jvm!invoke<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x13 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 277]
09 00007ff8`b951df72 : 00000016`907ffb28 000001a2`45033110 00000016`907ffb18 00007ff8`b94e7e4a : jvm!invoke_with_flush_event<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x2b [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 282]
0a 00007ff8`b951e77f : 00000016`907ffbf8 00007ff8`b951e824 000001a2`45033110 00007ff8`bab6b4b0 : jvm!JfrRecorderService::invoke_flush+0x102 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 672]
0b 00007ff8`b9522107 : 00000016`907ffbf8 00007ff8`bab6b4b0 00000000`00000001 000001a2`4082adc0 : jvm!JfrRecorderService::flushpoint+0x3f [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 682]
0c 00007ff8`b94ac2b6 : 000001a2`457d3200 000001a2`457d3200 000001a2`00000000 00007ff8`b8fe2971 : jvm!recorderthread_entry+0x187 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderThreadLoop.cpp @ 85]
0d 00007ff8`b94ac161 : 000001a2`457d3200 000001a2`407ce3e0 00000000`00100000 00000016`90800000 : jvm!JavaThread::thread_main_inner+0x146 [<path>\open\src\hotspot\share\runtime\javaThread.cpp @ 759]
0e 00007ff8`b9bd7e4a : 000001a2`457d3200 00007ff8`00000003 000001a2`457d3708 00007ff8`b9bd7bd4 : jvm!JavaThread::run+0x181 [<path>\open\src\hotspot\share\runtime\javaThread.cpp @ 744]
0f 00007ff8`b999eb09 : 000001a2`457d3200 00000000`00000000 000056ca`b22dc1df 00000000`00000000 : jvm!Thread::call_run+0x18a [<path>\open\src\hotspot\share\runtime\thread.cpp @ 237]
10 00007ff9`636b1bb2 : 000001a2`457d3200 00000000`00000000 00000000`00000000 00000000`00000000 : jvm!thread_native_entry+0x129 [<path>\open\src\hotspot\os\windows\os_windows.cpp @ 555]
11 00007ff9`65827344 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ucrtbase!thread_start<unsigned int (__cdecl*)(void *),1>+0x42
12 00007ff9`659626b1 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0x14
13 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21
1. On asserts or guarantees, Windows debug builds do not print registers and context in the hs_err_pid<pid>.log.
2. The associated hs_err_pid<pid>.mdmp has no exception record associated with the assert.
A lot of manual labor and backtracking is required to locate the assert context in a debugger.
Problem details:
1. Here is an example hs_err_pid12856.log:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (<path>\share\jfr\recorder\checkpoint\jfrCheckpointManager.cpp:660), pid=12856, tid=35792
# assert(_global_mspace->live_list_is_empty()) failed: invariant
#
# JRE version: Java(TM) SE Runtime Environment (24.0) (slowdebug build 24-internal-2024-10-08-1448147.mgronlun...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (slowdebug 24-internal-2024-10-08-1448147.mgronlun..., mixed mode, tiered, g1 gc, windows-amd64)
# Core dump will be written. Default location:<path>\hs_err_pid11692.mdmp
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
--------------- T H R E A D ---------------
Current thread (0x000002bd966cd410): JavaThread "JFR Recorder Thread" daemon [_thread_in_native, id=35792, stack(0x000000ee54d00000,0x000000ee54e00000) (1024K)]
Stack: [0x000000ee54d00000,0x000000ee54e00000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0xfc5973] os::win32::platform_print_native_stack+0x63 (os_windows_x86.cpp:235)
V [jvm.dll+0x6df0bb] os::platform_print_native_stack+0x3b (os_windows_x86.inline.hpp:36)
V [jvm.dll+0x12a96b4] VMError::report+0x18f4 (vmError.cpp:1015)
V [jvm.dll+0x12ace0e] VMError::report_and_die+0x7ae (vmError.cpp:1846)
V [jvm.dll+0x6dd139] report_vm_error+0xc9 (debug.cpp:201)
V [jvm.dll+0xad67f8] JfrCheckpointManager::flush_type_set+0x188 (jfrCheckpointManager.cpp:660)
V [jvm.dll+0xb3f3f6] Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set>::process+0x16 (jfrRecorderService.cpp:158)
V [jvm.dll+0xb3f967] WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> >::process+0x17 (jfrRecorderService.cpp:186)
V [jvm.dll+0xb3d6c3] invoke<WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> > >+0x13 (jfrRecorderService.cpp:277)
V [jvm.dll+0xb3d69b] flush_typeset+0x3b (jfrRecorderService.cpp:366)
V [jvm.dll+0xb3ce63] JfrRecorderService::flush+0xc3 (jfrRecorderService.cpp:657)
V [jvm.dll+0xb3f426] Content<JfrRecorderService,&JfrRecorderService::flush>::process+0x16 (jfrRecorderService.cpp:158)
V [jvm.dll+0xb3f9c7] WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> >::process+0x17 (jfrRecorderService.cpp:186)
V [jvm.dll+0xb3de43] invoke<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x13 (jfrRecorderService.cpp:277)
V [jvm.dll+0xb3dd5b] invoke_with_flush_event<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x2b (jfrRecorderService.cpp:282)
V [jvm.dll+0xb3c762] JfrRecorderService::invoke_flush+0x102 (jfrRecorderService.cpp:672)
V [jvm.dll+0xb3cf6f] JfrRecorderService::flushpoint+0x3f (jfrRecorderService.cpp:682)
V [jvm.dll+0xb409c7] recorderthread_entry+0x187 (jfrRecorderThreadLoop.cpp:85)
V [jvm.dll+0xacafc6] JavaThread::thread_main_inner+0x146 (javaThread.cpp:759)
V [jvm.dll+0xacae71] JavaThread::run+0x181 (javaThread.cpp:744)
V [jvm.dll+0x11f9a3a] Thread::call_run+0x18a (thread.cpp:237)
V [jvm.dll+0xfc06e9] thread_native_entry+0x129 (os_windows.cpp:554)
C [ucrtbase.dll+0x21bb2] (no source info available)
C [KERNEL32.DLL+0x17344] (no source info available)
C [ntdll.dll+0x526b1] (no source info available)
[ NO REGISTER INFORMATION ] <<---
2. Here is the associated hs_err_pid12856.mdmp file loaded into Windbg:
Microsoft (R) Windows Debugger Version 10.0.22000.194 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [<path>\hs_err_pid12856.mdmp]
User Mini Dump File with Full Memory: Only application data is available
Executable search path is:
Windows 10 Version 19045 MP (16 procs) Free x64
Product: WinNt, suite: SingleUserTS
Edition build lab: 19041.1.amd64fre.vb_release.191206-1406
.................................................
For analysis of this file, run !analyze -v
ntdll!NtWaitForSingleObject+0x14:
00007ff9`659ad064 c3 ret
2.1. Try to get the exception context:
0:000> .excr
Minidump doesn't have an exception context
Unable to get exception context, HRESULT 0x80004002
2.2. The .mdmp file does not contain an exception context (EXCEPTION_RECORD).
2.3. To get something meaningful from the .mdmp file,
you will have to do manual work to locate something that looks associated with the assert; a process similar to what follows.
2.3.1. Take the thread id (tid) from the hs_err_pid12856.log:
# Internal Error (<path>\share\jfr\recorder\checkpoint\jfrCheckpointManager.cpp:660), pid=12856, tid=35792
2.3.2. The tid listed in the hs_err_pid12856.log is in decimal, convert to hex;
.formats 0n35792
Evaluate expression:
Hex: 00000000`00008bd0
Decimal: 35792
Octal: 0000000000000000105720
Binary: 00000000 00000000 00000000 00000000 00000000 00000000 10001011 11010000
Chars: ........
Time: Thu Jan 1 10:56:32 1970
Float: low 5.01553e-041 high 0
Double: 1.76836e-319
2.3.3. List all threads.
0:000> ~
. 0 Id: 2dac.953c Suspend: 0 Teb: 000000ee`5352d000 Unfrozen
1 Id: 2dac.1388 Suspend: 0 Teb: 000000ee`5352f000 Unfrozen
2 Id: 2dac.8cd0 Suspend: 0 Teb: 000000ee`53531000 Unfrozen
3 Id: 2dac.ba4c Suspend: 0 Teb: 000000ee`53533000 Unfrozen
4 Id: 2dac.5258 Suspend: 0 Teb: 000000ee`53535000 Unfrozen
5 Id: 2dac.a394 Suspend: 0 Teb: 000000ee`53537000 Unfrozen ""
6 Id: 2dac.8f4 Suspend: 0 Teb: 000000ee`53539000 Unfrozen ""
7 Id: 2dac.7480 Suspend: 0 Teb: 000000ee`5353b000 Unfrozen ""
8 Id: 2dac.b704 Suspend: 0 Teb: 000000ee`5353d000 Unfrozen ""
9 Id: 2dac.6a6c Suspend: 0 Teb: 000000ee`5353f000 Unfrozen ""
10 Id: 2dac.a1c0 Suspend: 0 Teb: 000000ee`53541000 Unfrozen ""
11 Id: 2dac.82f8 Suspend: 0 Teb: 000000ee`53543000 Unfrozen ""
12 Id: 2dac.97fc Suspend: 0 Teb: 000000ee`53545000 Unfrozen ""
13 Id: 2dac.a260 Suspend: 0 Teb: 000000ee`53547000 Unfrozen ""
14 Id: 2dac.6b00 Suspend: 0 Teb: 000000ee`53549000 Unfrozen ""
15 Id: 2dac.70cc Suspend: 1 Teb: 000000ee`5354b000 Unfrozen ""
16 Id: 2dac.5be0 Suspend: 0 Teb: 000000ee`5354d000 Unfrozen ""
17 Id: 2dac.97b8 Suspend: 0 Teb: 000000ee`5354f000 Unfrozen ""
18 Id: 2dac.16dc Suspend: 0 Teb: 000000ee`53551000 Unfrozen ""
19 Id: 2dac.5324 Suspend: 0 Teb: 000000ee`53553000 Unfrozen ""
20 Id: 2dac.4c48 Suspend: 0 Teb: 000000ee`53555000 Unfrozen ""
21 Id: 2dac.3a84 Suspend: 0 Teb: 000000ee`53557000 Unfrozen ""
22 Id: 2dac.46dc Suspend: 0 Teb: 000000ee`53559000 Unfrozen ""
23 Id: 2dac.8bd0 Suspend: 0 Teb: 000000ee`5356f000 Unfrozen "" <<-- 0x8bd0
24 Id: 2dac.1ee4 Suspend: 0 Teb: 000000ee`53581000 Unfrozen ""
25 Id: 2dac.287c Suspend: 0 Teb: 000000ee`53583000 Unfrozen ""
26 Id: 2dac.2290 Suspend: 0 Teb: 000000ee`53585000 Unfrozen ""
27 Id: 2dac.9dc4 Suspend: 0 Teb: 000000ee`53587000 Unfrozen ""
28 Id: 2dac.57fc Suspend: 0 Teb: 000000ee`53589000 Unfrozen ""
29 Id: 2dac.85dc Suspend: 0 Teb: 000000ee`5358b000 Unfrozen ""
30 Id: 2dac.4280 Suspend: 0 Teb: 000000ee`5358d000 Unfrozen ""
31 Id: 2dac.73e8 Suspend: 0 Teb: 000000ee`5358f000 Unfrozen ""
32 Id: 2dac.a518 Suspend: 0 Teb: 000000ee`53591000 Unfrozen ""
33 Id: 2dac.56d8 Suspend: 0 Teb: 000000ee`53593000 Unfrozen ""
34 Id: 2dac.90dc Suspend: 0 Teb: 000000ee`53595000 Unfrozen ""
35 Id: 2dac.7444 Suspend: 0 Teb: 000000ee`53597000 Unfrozen ""
36 Id: 2dac.a64c Suspend: 0 Teb: 000000ee`5359d000 Unfrozen ""
37 Id: 2dac.8858 Suspend: 0 Teb: 000000ee`535a1000 Unfrozen ""
2.3.4. Switch to thread 23.
~23s
ntdll!NtGetContextThread+0x14:
00007ff9`659aee34 c3 ret
2.3.5. Manually inspect the stack to find something
that looks somewhat related to the assert:
Manually searching the stack for something interesting...
0:023> dps @rsp
000000ee`54dfd2e8 000002bd`f3001c18
000000ee`54dfd2f0 00000000`50280163
000000ee`54dfd2f8 00000000`00000000
000000ee`54dfd300 00000000`00000030
000000ee`54dfd308 00000000`00000000
000000ee`54dfd310 00000000`00000001
000000ee`54dfd318 000002bd`f3100000
000000ee`54dfd320 000002bd`99d20000
000000ee`54dfd328 00007ff9`65a0a386 ntdll!RtlpValidateHeap+0x32
000000ee`54dfd330 000002bd`99d20000
000000ee`54dfd338 00000000`00000000
000000ee`54dfd340 00000000`00000020
000000ee`54dfd348 00000000`00000050
000000ee`54dfd350 00000000`00000000
000000ee`54dfd358 000000ee`54dfd364
000000ee`54dfd360 00000004`54dfd3b1
000000ee`54dfd368 000000ee`54dfd490
000000ee`54dfd370 000000ee`54dfd3cc
000000ee`54dfd378 000002bd`99d20000
000000ee`54dfd380 00000000`00000100
000000ee`54dfd388 00000000`00000000
000000ee`54dfd390 00000000`00000110
000000ee`54dfd398 00000000`00000001
000000ee`54dfd3a0 000002bd`99d20000
000000ee`54dfd3a8 00000000`00000000
000000ee`54dfd3b0 000002bd`99d20000
000000ee`54dfd3b8 00007ff9`65a08a86 ntdll!RtlDebugAllocateHeap+0x366
000000ee`54dfd3c0 000002bd`99d20750
000000ee`54dfd3c8 00000000`00000000
000000ee`54dfd3d0 000002bd`99d20750
000000ee`54dfd3d8 00000000`00000000
000000ee`54dfd3e0 000000ee`54dfd601
...
2.3.6. At a suspected point, backtracking is necessary to understand the assert context.
dps 000000ee`54dff0e8
000000ee`54dff0e8 00007ff9`18aa8af2 jvm!os::abort+0x102 [<path>\src\hotspot\os\windows\os_windows.cpp @ 1369]
000000ee`54dff0f0 ffffffff`ffffffff
000000ee`54dff0f8 00007ff9`00002dac
000000ee`54dff100 00000000`000004d8
000000ee`54dff108 00007ff9`00001826
000000ee`54dff110 00000000`00000000
000000ee`54dff118 00000000`00000000
000000ee`54dff120 00000000`00000000
000000ee`54dff128 00007ff9`197fb104 jvm!ZPointerLoadShiftTable+0x7e4
000000ee`54dff130 00001826`00002dac
000000ee`54dff138 00007ff9`18d9dfb7 jvm!print_bug_submit_message+0xf7 [<path>\src\hotspot\share\utilities\vmError.cpp @ 180]
000000ee`54dff140 00000000`00000000
000000ee`54dff148 ffffffff`ffffffff
000000ee`54dff150 00000000`00000001
000000ee`54dff158 000000ee`54dff020
000000ee`54dff160 000002bd`00000001
0:023>
000000ee`54dff168 00000000`00000000
000000ee`54dff170 00000000`00000000
000000ee`54dff178 00007ff9`18d9d39a jvm!VMError::report_and_die+0xd3a [<path>\src\hotspot\share\utilities\vmError.cpp @ 1953]
000000ee`54dff180 000000ee`e0000001
000000ee`54dff188 00000000`00000000
000000ee`54dff190 00000000`00000000
000000ee`54dff198 00000000`00000000
000000ee`54dff1a0 00000000`000007d0
000000ee`54dff1a8 00007ff9`1837c887
000000ee`54dff1b0 000000ee`54dff1d0
000000ee`54dff1b8 000002bf`ffb46aa0
000000ee`54dff1c0 00000000`00000001
000000ee`54dff1c8 00007ff9`17b0f463 jvm!ScopedFence<0>::prefix+0x13 [<path>\src\hotspot\share\runtime\atomic.hpp @ 855]
000000ee`54dff1d0 000000ee`54dff201
000000ee`54dff1d8 00000000`00000000
000000ee`54dff1e0 00000000`0000000a
0:023>
000000ee`54dff1e8 00000000`00008bd0
000000ee`54dff1f0 000000ee`54dff210
000000ee`54dff1f8 000002bf`ffb46aa0
000000ee`54dff200 00007ff9`19638b50 jvm!fdStream::`vftable'
000000ee`54dff208 00000200`00000000
000000ee`54dff210 000002bf`00000000
000000ee`54dff218 00000000`000003ce
000000ee`54dff220 00000000`00000001
000000ee`54dff228 00007ff9`19cb21b0 jvm!buffer
000000ee`54dff230 00000000`000007d0
000000ee`54dff238 00000000`00000001
000000ee`54dff240 000000ee`00000000
000000ee`54dff248 00000000`00000000
000000ee`54dff250 000002bf`ffb4652a
000000ee`54dff258 00007ff9`185d3efb jvm!JfrVersionSystem::Node::remove_ref+0x7b [<path>\src\hotspot\share\jfr\utilities\jfrVersionSystem.inline.hpp @ 110]
000000ee`54dff260 000002bf`ffb46a90
0:023>
000000ee`54dff268 00000000`00000000
000000ee`54dff270 000002bf`ffb46528
000000ee`54dff278 00007ff9`17b0ecc8 jvm!Atomic::load_acquire<Method *>+0x18 [<path>\src\hotspot\share\runtime\atomic.hpp @ 888]
000000ee`54dff280 000000ee`54dff2a0
000000ee`54dff288 00007ff9`17e09c67
000000ee`54dff290 00007ff9`19638b50 jvm!fdStream::`vftable'
000000ee`54dff298 00000000`00000000
000000ee`54dff2a0 000002bf`00000000
000000ee`54dff2a8 00000000`0001107b
000000ee`54dff2b0 00000000`00000001
000000ee`54dff2b8 00007ff9`19cb21b0 jvm!buffer
000000ee`54dff2c0 00000000`000007d0
000000ee`54dff2c8 000002bf`ffffffff
000000ee`54dff2d0 00000000`00000001
000000ee`54dff2d8 000000ee`00000008
000000ee`54dff2e0 000000ee`54dff2f0
0:023>
000000ee`54dff2e8 00000000`00000001
000000ee`54dff2f0 00000000`00000000
000000ee`54dff2f8 00000000`00000000
000000ee`54dff300 00000000`00000000
000000ee`54dff308 00000000`00000000
000000ee`54dff310 00000710`fffffb30
000000ee`54dff318 000004d0`fffffb30
000000ee`54dff320 00000150`000000f0
000000ee`54dff328 00007ff9`180fbb41 jvm!Atomic::inc<unsigned __int64>+0x21 [<path>\src\hotspot\share\runtime\atomic.hpp @ 632]
000000ee`54dff330 00000000`c0000005
000000ee`54dff338 00000000`00000000
000000ee`54dff340 00007ff9`185c67d6 jvm!JfrCheckpointManager::flush_type_set+0x166 [<path>src\hotspot\share\jfr\recorder\checkpoint\jfrCheckpointManager.cpp @ 660]
000000ee`54dff348 00000000`00000002
000000ee`54dff350 00000000`00000001
000000ee`54dff358 000002bd`f3250000
000000ee`54dff360 00000000`00000000
To say this is tedious and time-consuming is an understatement,
and is especially irritating since this is a debug build, meaning all
details are available; it's just that they are not provided.
Proposal:
Build CAN_SHOW_REGISTERS_ON_ASSERT support also for Windows and ensure a proper EXCEPTION_RECORD is provided in the .mdmp file.
Results:
1. Here is an example for the new hs_err_pid12016.log:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (<path>\open\src\hotspot\share\jfr\recorder\checkpoint\jfrCheckpointManager.cpp:660), pid=12016, tid=20240
# guarantee(_global_mspace->live_list_is_empty()) failed: invariant
#
# JRE version: Java(TM) SE Runtime Environment (24.0) (slowdebug build 24-internal-2024-10-28-1355460.mgronlun...)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (slowdebug 24-internal-2024-10-28-1355460.mgronlun..., interpreted mode, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# V [jvm.dll+0xad5a94] JfrCheckpointManager::flush_type_set+0x154
#
# If you would like to submit a bug report, please visit:
# https://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
--------------- T H R E A D ---------------
Current thread (0x000001a2457d3200): JavaThread "JFR Recorder Thread" daemon [_thread_in_native, id=20240, stack(0x0000001690700000,0x0000001690800000) (1024K)]
Stack: [0x0000001690700000,0x0000001690800000], sp=0x00000016907ff7c0, free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0xad5a94] JfrCheckpointManager::flush_type_set+0x154 (jfrCheckpointManager.cpp:660)
V [jvm.dll+0xb40c06] Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set>::process+0x16 (jfrRecorderService.cpp:158)
V [jvm.dll+0xb41177] WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> >::process+0x17 (jfrRecorderService.cpp:186)
V [jvm.dll+0xb3eed3] invoke<WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> > >+0x13 (jfrRecorderService.cpp:277)
V [jvm.dll+0xb3eeab] flush_typeset+0x3b (jfrRecorderService.cpp:366)
V [jvm.dll+0xb3e673] JfrRecorderService::flush+0xc3 (jfrRecorderService.cpp:657)
V [jvm.dll+0xb40c36] Content<JfrRecorderService,&JfrRecorderService::flush>::process+0x16 (jfrRecorderService.cpp:158)
V [jvm.dll+0xb411d7] WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> >::process+0x17 (jfrRecorderService.cpp:186)
V [jvm.dll+0xb3f653] invoke<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x13 (jfrRecorderService.cpp:277)
V [jvm.dll+0xb3f56b] invoke_with_flush_event<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x2b (jfrRecorderService.cpp:282)
V [jvm.dll+0xb3df72] JfrRecorderService::invoke_flush+0x102 (jfrRecorderService.cpp:672)
V [jvm.dll+0xb3e77f] JfrRecorderService::flushpoint+0x3f (jfrRecorderService.cpp:682)
V [jvm.dll+0xb42107] recorderthread_entry+0x187 (jfrRecorderThreadLoop.cpp:85)
V [jvm.dll+0xacc2b6] JavaThread::thread_main_inner+0x146 (javaThread.cpp:759)
V [jvm.dll+0xacc161] JavaThread::run+0x181 (javaThread.cpp:744)
V [jvm.dll+0x11f7e4a] Thread::call_run+0x18a (thread.cpp:237)
V [jvm.dll+0xfbeb09] thread_native_entry+0x129 (os_windows.cpp:555)
C [ucrtbase.dll+0x21bb2] (no source info available)
C [KERNEL32.DLL+0x17344] (no source info available)
C [ntdll.dll+0x526b1] (no source info available)
Registers:
RAX=0x000001a22d1d0000, RBX=0x000001a245211320, RCX=0x00000016907ff680, RDX=0x000001a240550ee0
RSP=0x00000016907ff7c0, RBP=0x0000000000000000, RSI=0x0000000000000000, RDI=0x0000000000000000
R8 =0x0000000000000001, R9 =0x0000000000000008, R10=0x0000000000000000, R11=0x00000016907ff3b0
R12=0x0000000000000000, R13=0x0000000000000000, R14=0x0000000000000000, R15=0x0000000000000000
RIP=0x00007ff8b94b5a94, EFLAGS=0x0000000000010246
XMM[0]=0x0000000000000000 0x0000001f00000000
XMM[1]=0x0000000000000000 0x0000000000000000
XMM[2]=0x0000000000000000 0x0000000000000000
XMM[3]=0x0000000000000000 0x0000000000000000
XMM[4]=0x0000000000000000 0x0000000000000000
XMM[5]=0x0000000000000000 0x0000000000000000
XMM[6]=0x0000000000000000 0x0000000000000000
XMM[7]=0x0000000000000000 0x0000000000000000
XMM[8]=0x0000000000000000 0x0000000000000000
XMM[9]=0x0000000000000000 0x0000000000000000
XMM[10]=0x0000000000000000 0x0000000000000000
XMM[11]=0x0000000000000000 0x0000000000000000
XMM[12]=0x0000000000000000 0x0000000000000000
XMM[13]=0x0000000000000000 0x0000000000000000
XMM[14]=0x0000000000000000 0x0000000000000000
XMM[15]=0x0000000000000000 0x0000000000000000
MXCSR=0x00001fa0
Register to memory mapping:
RAX=0x000001a22d1d0000 in mmap'd memory region [0x000001a22d1d0000 - 0x000001a22d1d1000], tag mtInternal
[0x00007ff8b90be146]initialize_assert_poison+0x16 (debug.cpp:718)
[0x00007ff8b9be7c4b]Threads::create_vm+0x20b (threads.cpp:498)
[0x00007ff8b95787fc]JNI_CreateJavaVM_inner+0x7c (jni.cpp:3596)
[0x00007ff8b955bd9f]JNI_CreateJavaVM+0x2f (jni.cpp:3687)
RBX=0x000001a245211320 points into unknown readable memory: 0x00007ff8b999e9e0 | e0 e9 99 b9 f8 7f 00 00
RCX=0x00000016907ff680 is pointing into the stack for thread: 0x000001a2457d3200
RDX=0x000001a240550ee0 into live malloced block starting at 0x000001a240550ed0, size 56, tag mtTracing
[0x00007ff8b94b139a]JfrCHeapObj::operator new+0x1a (jfrAllocation.cpp:96)[0x00007ff8b94b5c62]create_mspace<JfrMemorySpace<JfrCheckpointManager,JfrMspaceRetrieval,JfrLinkedList<JfrBuffer,JfrCHeapObj>,JfrLinkedList<JfrBuffer,JfrCHeapObj>,1>,JfrCheckpointManager>+0x22 (jfrMemorySpace.inline.hpp:310)[0x00007ff8b94b3f17]JfrCheckpointManager::initialize_early+0x77 (jfrCheckpointManager.cpp:104)[0x00007ff8b951bd01]JfrRecorder::create_checkpoint_manager+0x71 (jfrRecorder.cpp:361)
RSP=0x00000016907ff7c0 is pointing into the stack for thread: 0x000001a2457d3200
RBP=0x0 is null
RSI=0x0 is null
RDI=0x0 is null
R8 =0x0000000000000001 is an unknown value
R9 =0x0000000000000008 is an unknown value
R10=0x0 is null
R11=0x00000016907ff3b0 is pointing into the stack for thread: 0x000001a2457d3200
R12=0x0 is null
R13=0x0 is null
R14=0x0 is null
R15=0x0 is null
Top of Stack: (sp=0x00000016907ff7c0)
0x00000016907ff7c0: 00007ff8ba3ec4c0 0000001600000294 ..>.............
0x00000016907ff7d0: 00007ff8ba3ebbc8 00007ff8ba3ec4b0 ..>.......>.....
0x00000016907ff7e0: 000001a2457d3200 00000000000000f8 .2}E............
0x00000016907ff7f0: 00000016907ff810 00007ff8b95200d0 ..........R.....
0x00000016907ff800: 000001a2457d3200 00007ff800000001 .2}E............
0x00000016907ff810: 000001a245033110 00000000000000f0 .1.E............
0x00000016907ff820: 000001a245232320 000000000002c793 ##E............
0x00000016907ff830: 000000000002c8c3 00007ff8b9beb415 ................
0x00000016907ff840: 00000016907ff930 00007ff8b95214d4 0.........R.....
0x00000016907ff850: 000001a245033110 00007ff8b9520c06 .1.E......R.....
0x00000016907ff860: 000001a2405580d0 00007ff8b94bf943 ..U@....C.K.....
0x00000016907ff870: 000001a245033110 00007ff8b952114f .1.E....O.R.....
0x00000016907ff880: 0000001600000001 00007ff8b9521177 ........w.R.....
0x00000016907ff890: 00000016907ff920 00007ff8b94c1543 .......C.L.....
0x00000016907ff8a0: 000001a245033110 00007ff8bab54a30 .1.E....0J......
0x00000016907ff8b0: 0000000000000000 00007ff8b951eb7d ........}.Q.....
0x00000016907ff8c0: 00000016907ff930 00007ff8b951eed3 0.........Q.....
0x00000016907ff8d0: 00000016907ff930 000001a245033110 0........1.E....
0x00000016907ff8e0: 00000016907ff920 00007ff8b951eb52 .......R.Q.....
0x00000016907ff8f0: 00000016907ff930 00007ff8b951eeab 0.........Q.....
0x00000016907ff900: 00000016907ff930 000001a245033110 0........1.E....
0x00000016907ff910: 00000016907ff920 000001a245033110 ........1.E....
0x00000016907ff920: 000001a2405580d0 000001a200000000 ..U@............
0x00000016907ff930: 0000001183fc962a 0000000000000000 *...............
0x00000016907ff940: 000001a245033110 00000016907ff920 .1.E.... .......
0x00000016907ff950: 000000000002c8c3 00000000000000cb ................
0x00000016907ff960: 00000016907ff980 00007ff8b951e673 ........s.Q.....
0x00000016907ff970: 000001a2405580d0 000001a245033110 ..U@.....1.E....
0x00000016907ff980: 000001a2457b8c90 000001a2457d3200 ..{E.....2}E....
0x00000016907ff990: 0000000000000011 00007ff8b8ccd2bb ................
0x00000016907ff9a0: 00000016907ff9c0 00007ff8b9520c36 ........6.R.....
0x00000016907ff9b0: 00000016907ffbf8 000001a2407ef570 ........p.~@....
Instructions: (pc=0x00007ff8b94b5a94)
0x00007ff8b94b5994: e8 77 39 98 ff 48 8b 4c 24 20 e8 7d 14 00 00 48
0x00007ff8b94b59a4: 89 44 24 28 48 8d 4c 24 40 e8 ce 42 98 ff eb 0f
0x00007ff8b94b59b4: 48 8b 4c 24 20 e8 62 14 00 00 48 89 44 24 28 48
0x00007ff8b94b59c4: 8d 0d de c9 68 01 e8 31 bb 00 00 0f b6 c0 85 c0
0x00007ff8b94b59d4: 0f 84 46 01 00 00 48 8b 8c 24 a0 00 00 00 e8 a9
0x00007ff8b94b59e4: e8 ff ff 48 8b d0 48 8d 4c 24 50 e8 5c 87 00 00
0x00007ff8b94b59f4: 48 8d 54 24 50 48 8d 4c 24 30 e8 cd d5 54 ff 45
0x00007ff8b94b5a04: 33 c0 48 8d 54 24 30 48 8b 84 24 a0 00 00 00 48
0x00007ff8b94b5a14: 8b 48 08 e8 44 3e 00 00 33 c0 85 c0 75 0c e8 49
0x00007ff8b94b5a24: 5d 54 ff 0f b6 c0 85 c0 75 40 48 8b 84 24 a0 00
0x00007ff8b94b5a34: 00 00 48 8b 08 e8 a2 ab 00 00 0f b6 c0 85 c0 75
0x00007ff8b94b5a44: 29 48 8b 05 e4 09 5c 01 c6 00 58 4c 8d 0d ea 69
0x00007ff8b94b5a54: f3 00 4c 8d 05 9b 60 f3 00 ba 93 02 00 00 48 8d
0x00007ff8b94b5a64: 0d e7 69 f3 00 e8 e2 88 c0 ff 33 c0 85 c0 75 a8
0x00007ff8b94b5a74: 33 d2 48 8b 84 24 a0 00 00 00 48 8b 08 e8 ea bb
0x00007ff8b94b5a84: 00 00 0f b6 c0 85 c0 75 29 48 8b 05 9c 09 5c 01
=>0x00007ff8b94b5a94: c6 00 58 4c 8d 0d 12 6a f3 00 4c 8d 05 23 61 f3
0x00007ff8b94b5aa4: 00 ba 94 02 00 00 48 8d 0d 0f 6a f3 00 e8 9a 88
0x00007ff8b94b5ab4: c0 ff 33 c0 85 c0 75 b8 45 33 c0 48 8b 84 24 a0
0x00007ff8b94b5ac4: 00 00 00 48 8b 10 48 8d 4c 24 30 e8 1c 52 00 00
0x00007ff8b94b5ad4: 48 8b 8c 24 a0 00 00 00 e8 af e7 ff ff 48 8b d0
0x00007ff8b94b5ae4: 48 8d 4c 24 60 e8 f2 8a 00 00 48 8d 54 24 60 48
0x00007ff8b94b5af4: 8d 4c 24 38 e8 d3 d4 54 ff 45 33 c0 48 8d 54 24
0x00007ff8b94b5b04: 38 48 8b 84 24 a0 00 00 00 48 8b 48 10 e8 9a 3e
0x00007ff8b94b5b14: 00 00 48 8d 4c 24 60 e8 40 8d 00 00 48 8b 44 24
0x00007ff8b94b5b24: 28 48 81 c4 98 00 00 00 c3 cc cc cc cc cc cc cc
0x00007ff8b94b5b34: cc cc cc cc cc cc cc cc cc cc cc cc 48 89 54 24
0x00007ff8b94b5b44: 10 48 89 4c 24 08 48 83 ec 48 48 b8 00 00 00 00
0x00007ff8b94b5b54: 00 00 00 80 48 39 44 24 50 76 55 33 c0 85 c0 75
0x00007ff8b94b5b64: 0c e8 06 5c 54 ff 0f b6 c0 85 c0 75 39 33 c0 85
0x00007ff8b94b5b74: c0 75 33 48 8b 05 b2 08 5c 01 c6 00 58 48 8b 44
0x00007ff8b94b5b84: 24 50 48 89 44 24 20 4c 8d 0d 56 86 f3 00 4c 8d
Stack slot to memory mapping:
stack at sp + 0 slots: 0x00007ff8ba3ec4c0 jvm.dll::ZPointerLoadShiftTable + 0x38d8
stack at sp + 1 slots: 0x0000001600000294 is an unknown value
stack at sp + 2 slots: 0x00007ff8ba3ebbc8 jvm.dll::ZPointerLoadShiftTable + 0x2fe0
stack at sp + 3 slots: 0x00007ff8ba3ec4b0 jvm.dll::ZPointerLoadShiftTable + 0x38c8
stack at sp + 4 slots: 0x000001a2457d3200 is a thread
stack at sp + 5 slots: 0x00000000000000f8 is an unknown value
stack at sp + 6 slots: 0x00000016907ff810 is pointing into the stack for thread: 0x000001a2457d3200
stack at sp + 7 slots: 0x00007ff8b95200d0 jvm.dll::WriterHost<EncoderHost<BigEndianEncoderImpl,BigEndianEncoderImpl>,EncoderHost<Varint128EncoderImpl,BigEndianEncoderImpl>,StreamWriterHost<MallocAdapter<1048576>,JfrCHeapObj> >::write_padded_at_offset<unsigned __int64> + 0x60
Lock stack of current Java thread (top to bottom):
2. Here is the new associated hs_err_pid12016.mdmp file loaded into Windbg:
Microsoft (R) Windows Debugger Version 10.0.22000.194 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [<path>\hs_err_pid12016.mdmp]
User Mini Dump File with Full Memory: Only application data is available
Executable search path is:
Windows 10 Version 19045 MP (16 procs) Free x64
Product: WinNt, suite: SingleUserTS
Edition build lab: 19041.1.amd64fre.vb_release.191206-1406
.................................................
This dump file has an exception of interest stored in it. <<<----- HERE -------
The stored exception information can be accessed via .ecxr.
(2ef0.4f10): Access violation - code c0000005 (first/second chance not available)
For analysis of this file, run !analyze -v
ntdll!NtGetContextThread+0x14:
00007ff9`659aee34 c3 ret
2.1. Try to get the exception context (EXCEPTION_RECORD):
0:019> .ecxr
*** WARNING: Unable to verify checksum for jvm.dll
rax=000001a22d1d0000 rbx=000001a245211320 rcx=00000016907ff680
rdx=000001a240550ee0 rsi=0000000000000000 rdi=0000000000000000
rip=00007ff8b94b5a94 rsp=00000016907ff7c0 rbp=0000000000000000
r8=0000000000000001 r9=0000000000000008 r10=0000000000000000
r11=00000016907ff3b0 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up ei pl zr na po nc
cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246
jvm!JfrCheckpointManager::flush_type_set+0x154:
00007ff8`b94b5a94 c60058 mov byte ptr [rax],58h ds:000001a2`2d1d0000=58
2.2 Exception context in .mdmp located, loaded and presented.
0:019> kb
*** Stack trace for last set context - .thread/.cxr resets it
# RetAddr : Args to Child : Call Site
00 00007ff8`b9520c06 : 000001a2`405580d0 00007ff8`b94bf943 000001a2`45033110 00007ff8`b952114f : jvm!JfrCheckpointManager::flush_type_set+0x154 [<path>\open\src\hotspot\share\jfr\recorder\checkpoint\jfrCheckpointManager.cpp @ 660]
01 00007ff8`b9521177 : 00000016`907ff920 00007ff8`b94c1543 000001a2`45033110 00007ff8`bab54a30 : jvm!Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set>::process+0x16 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 158]
02 00007ff8`b951eed3 : 00000016`907ff930 000001a2`45033110 00000016`907ff920 00007ff8`b951eb52 : jvm!WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> >::process+0x17 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 186]
03 00007ff8`b951eeab : 00000016`907ff930 000001a2`45033110 00000016`907ff920 000001a2`45033110 : jvm!invoke<WriteContent<Content<JfrCheckpointManager,&JfrCheckpointManager::flush_type_set> > >+0x13 [<path>\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 277]
04 00007ff8`b951e673 : 000001a2`405580d0 000001a2`45033110 000001a2`457b8c90 000001a2`457d3200 : jvm!flush_typeset+0x3b [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 366]
05 00007ff8`b9520c36 : 00000016`907ffbf8 000001a2`407ef570 000001a2`457b8ca0 000001a2`457b8cc0 : jvm!JfrRecorderService::flush+0xc3 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 657]
06 00007ff8`b95211d7 : 00000016`907ffb18 000001a2`457b8ca0 000001a2`457b8cc0 00007ff8`b9a360c9 : jvm!Content<JfrRecorderService,&JfrRecorderService::flush>::process+0x16 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 158]
07 00007ff8`b951f653 : 00000016`907ffb28 00007ff8`b9beb415 00000016`907ffb28 00007ff8`bab44980 : jvm!WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> >::process+0x17 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 186]
08 00007ff8`b951f56b : 00000016`907ffb28 00007ff8`b94bf943 000001a2`45033110 000001a2`457b8cc0 : jvm!invoke<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x13 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 277]
09 00007ff8`b951df72 : 00000016`907ffb28 000001a2`45033110 00000016`907ffb18 00007ff8`b94e7e4a : jvm!invoke_with_flush_event<WriteContent<Content<JfrRecorderService,&JfrRecorderService::flush> > >+0x2b [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 282]
0a 00007ff8`b951e77f : 00000016`907ffbf8 00007ff8`b951e824 000001a2`45033110 00007ff8`bab6b4b0 : jvm!JfrRecorderService::invoke_flush+0x102 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 672]
0b 00007ff8`b9522107 : 00000016`907ffbf8 00007ff8`bab6b4b0 00000000`00000001 000001a2`4082adc0 : jvm!JfrRecorderService::flushpoint+0x3f [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderService.cpp @ 682]
0c 00007ff8`b94ac2b6 : 000001a2`457d3200 000001a2`457d3200 000001a2`00000000 00007ff8`b8fe2971 : jvm!recorderthread_entry+0x187 [<path>\open\src\hotspot\share\jfr\recorder\service\jfrRecorderThreadLoop.cpp @ 85]
0d 00007ff8`b94ac161 : 000001a2`457d3200 000001a2`407ce3e0 00000000`00100000 00000016`90800000 : jvm!JavaThread::thread_main_inner+0x146 [<path>\open\src\hotspot\share\runtime\javaThread.cpp @ 759]
0e 00007ff8`b9bd7e4a : 000001a2`457d3200 00007ff8`00000003 000001a2`457d3708 00007ff8`b9bd7bd4 : jvm!JavaThread::run+0x181 [<path>\open\src\hotspot\share\runtime\javaThread.cpp @ 744]
0f 00007ff8`b999eb09 : 000001a2`457d3200 00000000`00000000 000056ca`b22dc1df 00000000`00000000 : jvm!Thread::call_run+0x18a [<path>\open\src\hotspot\share\runtime\thread.cpp @ 237]
10 00007ff9`636b1bb2 : 000001a2`457d3200 00000000`00000000 00000000`00000000 00000000`00000000 : jvm!thread_native_entry+0x129 [<path>\open\src\hotspot\os\windows\os_windows.cpp @ 555]
11 00007ff9`65827344 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ucrtbase!thread_start<unsigned int (__cdecl*)(void *),1>+0x42
12 00007ff9`659626b1 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0x14
13 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21
- relates to
-
JDK-8345102 [s390x/ppc] ShowRegistersOnAssertTest.java fails after 8343756
- Resolved
-
JDK-8191101 Show register content in hs-err file on assert
- Resolved
- links to
-
Commit(master) openjdk/jdk/0054bbed
-
Review(master) openjdk/jdk/21994