JDK-8361382 : NMT corruption: header canary broken as part of CodeBlob::purge()
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 26
  • Priority: P4
  • Status: New
  • Resolution: Unresolved
  • OS: os_x
  • CPU: aarch64
  • Submitted: 2025-07-03
  • Updated: 2025-07-03
Description
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (mallocHeader.inline.hpp:107), pid=11743, tid=21251
#  fatal error: NMT corruption: Block at 0x000060000133bfd0: header canary broken
#
# JRE version: Java(TM) SE Runtime Environment (26.0) (build 26-internal-2025-07-03-1607476.markus.gronlund.jdkcopy3)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (26-internal-2025-07-03-1607476.markus.gronlund.jdkcopy3, mixed mode, tiered, compressed oops, compressed class ptrs, serial gc, bsd-amd64)
# Core dump will be written. Default location: core.11743

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

Current thread (0x00007f8fa3038c10):  VMThread "VM Thread"          [id=21251, stack(0x000070000fb6f000,0x000070000fc6f000) (1024K)]

Stack: [0x000070000fb6f000,0x000070000fc6f000],  sp=0x000070000fc6de50,  free space=1019k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.dylib+0xbf1c8c]  VMError::report(outputStream*, bool)+0xa9c  (mallocHeader.inline.hpp:107)
V  [libjvm.dylib+0xbf5d25]  VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void const*, void const*, char const*, int, unsigned long)+0x575
V  [libjvm.dylib+0x404e20]  DebuggingContext::~DebuggingContext()+0x0
V  [libjvm.dylib+0x8f770f]  MallocHeader* MallocHeader::resolve_checked_impl<void*, MallocHeader*>(void*)+0x15f
V  [libjvm.dylib+0x8f720c]  MallocTracker::record_free_block(void*)+0xc
V  [libjvm.dylib+0x9a719a]  os::free(void*)+0xea
V  [libjvm.dylib+0x388fb4]  CodeBlob::purge()+0x44
V  [libjvm.dylib+0x978e98]  nmethod::purge(bool)+0x308
V  [libjvm.dylib+0x380439]  ClassUnloadingContext::purge_nmethods()+0x69
V  [libjvm.dylib+0xa4d75d]  SerialFullGC::phase1_mark(bool)+0x8ad
V  [libjvm.dylib+0xa4e8d1]  SerialFullGC::invoke_at_safepoint(bool)+0xe1
V  [libjvm.dylib+0xa56a79]  SerialHeap::do_full_collection(bool)+0x369
V  [libjvm.dylib+0xa5b4e0]  VM_SerialGCCollect::doit()+0x30
V  [libjvm.dylib+0xbfc257]  VM_Operation::evaluate()+0xd7
V  [libjvm.dylib+0xc11dcc]  VMThread::evaluate_operation(VM_Operation*)+0xac
V  [libjvm.dylib+0xc125d7]  VMThread::inner_execute(VM_Operation*)+0x297
V  [libjvm.dylib+0xc11add]  VMThread::run()+0xbd
V  [libjvm.dylib+0xb791c8]  Thread::call_run()+0xa8
V  [libjvm.dylib+0x9acccf]  thread_native_entry(Thread*)+0x10f
C  [libsystem_pthread.dylib+0x6202]  _pthread_start+0x63
C  [libsystem_pthread.dylib+0x1bab]  thread_start+0xf
VM_Operation (0x00007000105090a8): SerialGCCollect, mode: safepoint, requested by thread 0x00007f8fa101e210