Skip to content

[Native Image] JFR + exact-reachability-metadata crashes the image #14088

Description

@stevenschlansker

Describe the Issue

A native image built with both --enable-monitoring=jfr and --exact-reachability-metadata crashes as soon as a JFR recording is active and the JDK's internal Thread.sleep event is committed. Dropping --exact-reachability-metadata fixes it; nothing else changes.

On Oracle GraalVM 25.1 the failure is a segfault that looks like type confusion: a jdk.internal.event.ThreadSleepEvent is dispatched as if it were a Throwable.

Earlier GraalVM versions (25 GA) failed differently: java.lang.ArithmeticException: / by zero

User-defined jdk.jfr.Event subclasses are unaffected, which localizes the failure. Committing a user event and then sleeping, in one process, records the user event and crashes on the sleep: the JFR timestamp path is working, and what fails is specific to the JDK's internal events.

A real application shows the same contrast at scale. With the flag set, 1000 user-defined statement events are recorded normally and the process then dies on its first Thread.sleep; with the flag dropped, the same application records 1011 events and exits cleanly.

Using the latest version of GraalVM can resolve many issues.

GraalVM Version

java version "25.0.3" 2026-04-21 LTS
Java(TM) SE Runtime Environment Oracle GraalVM 25.1.3+9.1 (build 25.0.3+9-LTS-jvmci-25.1-b19)
Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 25.1.3+9.1 (build 25.0.3+9-LTS-jvmci-25.1-b19, mixed mode, sharing)

Operating System and Version

Linux Rocky 10 aarch64, MacOS Tahoe 26.5.2 amd64

Troubleshooting Confirmation

Run Command

% ./repro-exact -XX:StartFlightRecording=filename=r.jfr,dumponexit=true

Expected Behavior

JFR should include sleep events in the generated recording

Actual Behavior

Exception in thread "main" jdk.internal.event.ThreadSleepEvent@2bfb3b83

[ [ SegfaultHandler caught a segfault in thread 0x0000000103265400 ] ]
siginfo: si_signo: 10, si_code: 1, si_addr: 0x0000007003bc3514 (heapBase + 62666004)

General purpose register values:
  R0  0x0000007003bc3510 is an unknown value
  R1  0x0000000000000000 
  R2  0x0000000000000004 is an unknown value
  R3  0x00000000000a86bf is an unknown value
  R4  0x0000007000f23f50 points into aligned TLAB 0x0000007000f23aa0 (TLAB of thread 0x0000000103265400)
    is an object of type jdk.internal.event.ThreadSleepEvent
  R5  0x000000700057d278 points into the image heap (aligned chunk, writable)
    is an object of type com.oracle.svm.core.jfr.JfrEvent
  R6  0x0000007000f24288 points into aligned TLAB 0x0000007000f23aa0 (TLAB of thread 0x0000000103265400)
    is an object of type com.oracle.svm.enterprise.core.monitor.EnterpriseJavaMonitor
  R7  0x0000007000f24288 points into aligned TLAB 0x0000007000f23aa0 (TLAB of thread 0x0000000103265400)
    is an object of type com.oracle.svm.enterprise.core.monitor.EnterpriseJavaMonitor
  R8  0x0000007000541ab8 points into the image heap (aligned chunk, writable)
    is an object of type [B with length 388: 0xc0 0xdd 0x26 0x03 0x01 0x00 0x00 0x00 ...
  R9  0x000000000006a396 is an unknown value
  R10 0x000000016d5ea000 points into the stack for thread 0x0000000103265400
  R11 0x00000000002a38e8 is the encoded object header for an object of type jdk.internal.event.ThreadSleepEvent
  R12 0x0000007000f23f54 points into aligned TLAB 0x0000007000f23aa0 (TLAB of thread 0x0000000103265400)
  R13 0x0000000000000000 
  R14 0x000000000000001c is an unknown value
  R15 0x0000000000000200 is an unknown value
  R16 0x0000000000000004 is an unknown value
  R17 0x0000000000000100 is an unknown value
  R18 0x0000000000000000 
  R19 0x0000000000000000 
  R20 0x0000000000000600 is an unknown value
  R21 0x0000000000000007 is an unknown value
  R22 0x00000000000003c8 is an unknown value
  R23 0x0000007000686048 points into the image heap (aligned chunk, writable)
    is an object of type jdk.jfr.internal.Type
  R24 0x0000000000000003 is an unknown value
  R25 0x0000000000000003 is an unknown value
  R26 0x0000000102020000 is the code base
  R27 0x0000007000000000 is the heap base
  R28 0x0000000103265400 is a thread
  R29 0x00000000007786a2 is an unknown value
  R30 0x0000000102297fa8 points into AOT compiled code java.lang.Throwable.printStackTrace(Throwable.java:698)
  SP  0x000000016dde2850 points into the stack for thread 0x0000000103265400
  PC  0x0000000102297fb4 points into AOT compiled code java.lang.Throwable.printStackTrace(Throwable.java)
  
Printing instructions (ip=0x0000000102297fb4):
  0x0000000102297eb4: 0x40 0x04 0x80 0x3d 0xe5 0x03 0x1a 0x32 0x46 0x14 0x04 0x29 0x40 0x80 0x82 0x3c
  0x0000000102297ec4: 0x40 0x80 0x83 0x3c 0x40 0x80 0x84 0x3c 0x40 0x80 0x85 0x3c 0x40 0x80 0x86 0x3c
  0x0000000102297ed4: 0x40 0x80 0x87 0x3c 0x40 0x80 0x88 0x3c 0x40 0x80 0x89 0x3c 0x40 0x80 0x8a 0x3c
  0x0000000102297ee4: 0x40 0x80 0x8b 0x3c 0x40 0x80 0x8c 0x3c 0x40 0x80 0x8d 0x3c 0x40 0x80 0x8e 0x3c
  0x0000000102297ef4: 0x40 0x80 0x8f 0x3c 0x05 0x21 0x80 0xd2 0x40 0x68 0xa5 0x3c 0x05 0x23 0x80 0xd2
  0x0000000102297f04: 0x40 0x68 0xa5 0x3c 0xbf 0x3a 0x03 0xd5 0xe0 0x03 0x04 0xaa 0x9c 0x07 0x05 0x94
  0x0000000102297f14: 0xe0 0x27 0x00 0xf9 0x01 0x04 0x40 0xb9 0xe1 0x03 0x01 0x2a 0x61 0x0f 0x01 0x8b
  0x0000000102297f24: 0x22 0x80 0x9b 0x52 0x42 0x00 0xa0 0x72 0x62 0x0f 0x02 0x8b 0xe0 0x03 0x01 0xaa
  0x0000000102297f34: 0xe1 0x2f 0x40 0xf9 0x6e 0x46 0x06 0x94 0xe1 0x2b 0x40 0xf9 0x20 0x04 0x40 0xb9
  0x0000000102297f44: 0xe0 0x03 0x00 0x2a 0x60 0x0f 0x00 0x8b 0xe0 0x23 0x00 0xf9 0x02 0x20 0x40 0xb9
  0x0000000102297f54: 0xe2 0x1a 0x00 0x34 0xe2 0x03 0x02 0x2a 0x62 0x0f 0x02 0x8b 0x83 0x23 0x40 0xf9
  0x0000000102297f64: 0x49 0x40 0x00 0x91 0x24 0xfd 0xdf 0xc8 0xe4 0x19 0x00 0xb5 0xe4 0x03 0x1f 0xaa
  0x0000000102297f74: 0x42 0x40 0x00 0x91 0xe5 0x03 0x04 0xaa 0x43 0xfc 0xe5 0xc8 0xbf 0x00 0x04 0xeb
  0x0000000102297f84: 0xe2 0x17 0x9f 0x1a 0x42 0x19 0x00 0x34 0x20 0x04 0x40 0xb9 0xe0 0x03 0x00 0x2a
  0x0000000102297f94: 0x60 0x0f 0x00 0x8b 0xe1 0x2f 0x40 0xf9 0x9d 0xc8 0xfd 0x97 0xe0 0x2f 0x40 0xf9
  0x0000000102297fa4: 0x3b 0xfc 0xff 0x97 0x1f 0x00 0x1b 0xeb 0xa0 0x29 0x00 0x54 0xe0 0x1f 0x00 0xf9
> 0x0000000102297fb4: 0x01 0x04 0x40 0xb9 0xe1 0x6f 0x00 0xb9 0xe2 0x03 0x1f 0x2a 0x46 0x00 0x00 0x14
  0x0000000102297fc4: 0x1f 0x20 0x03 0xd5 0x1f 0x20 0x03 0xd5 0x1f 0x20 0x03 0xd5 0xe2 0x6b 0x00 0xb9
  0x0000000102297fd4: 0xe4 0x03 0x7d 0xb2 0x84 0x48 0x22 0x8b 0x04 0x68 0x64 0xb8 0x84 0x09 0x00 0x34
  0x0000000102297fe4: 0xe4 0x03 0x04 0x2a 0x64 0x0f 0x04 0x8b 0xe0 0x03 0x04 0xaa 0x1c 0x2b 0xff 0x97
  0x0000000102297ff4: 0x01 0x04 0x40 0xb9 0x01 0x28 0x00 0x34 0xa2 0x53 0x8a 0x52 0x42 0x01 0xa0 0x72
  0x0000000102298004: 0x62 0x0f 0x02 0x8b 0xe1 0x03 0x01 0x2a 0x61 0x0f 0x01 0x8b 0x21 0x04 0x40 0xb9
  0x0000000102298014: 0x81 0x06 0x00 0x34 0xe0 0x1b 0x00 0xf9 0xe0 0x03 0x1f 0xaa 0xe1 0x03 0x02 0xaa
  0x0000000102298024: 0xe2 0x17 0x00 0xf9 0x5a 0x69 0xfc 0x97 0xe1 0x1b 0x40 0xf9 0x58 0x69 0xfc 0x97
  0x0000000102298034: 0x01 0xfc 0x60 0x93 0x21 0x1c 0x00 0x13 0x01 0x20 0xc1 0x1a 0x21 0x26 0xf8 0x37
  0x0000000102298044: 0x83 0x0b 0x42 0xa9 0xe4 0x0f 0x40 0xb2 0x84 0x40 0x21 0x8b 0x84 0xf0 0x7d 0x92
  0x0000000102298054: 0xe5 0x03 0x6f 0xb2 0x06 0x5c 0x84 0x52 0x06 0x04 0xa0 0x72 0x9f 0x00 0x05 0xeb
  0x0000000102298064: 0x82 0x04 0x00 0x54 0x84 0x00 0x02 0x8b 0x7f 0x00 0x04 0xeb 0x23 0x04 0x00 0x54
  0x0000000102298074: 0x84 0x17 0x00 0xf9 0x46 0x00 0x00 0xb9 0x41 0x04 0x00 0xb9 0xbf 0x3a 0x03 0xd5
  0x0000000102298084: 0xe1 0x03 0x02 0xaa 0xe2 0x13 0x00 0xf9 0xe2 0x1b 0x40 0xf9 0xbc 0x69 0xfc 0x97
  0x0000000102298094: 0xe1 0x0b 0x42 0xa9 0xba 0x69 0xfc 0x97 0xe1 0x03 0x00 0xaa 0xe2 0x13 0x40 0xf9
  0x00000001022980a4: 0xe0 0x03 0x02 0xaa 0x6a 0x69 0xfc 0x97 0xe2 0x03 0x00 0xaa 0xe1 0x2b 0x40 0xf9

Top of stack (sp=0x000000016dde2850):
  0x000000016dde2830: 0x0000007000f23f50 0x0000000000000004 0x00000000007786a2 0x0000000102297fa8
> 0x000000016dde2850: 0x000000700086d3f8 0x0000007000544138 0x000000700086d390 0x00000001021f1a8c
  0x000000016dde2870: 0x00000000007786a2 0x0000001b02214dec 0x00000000007786a2 0x0000007003bc3510
  0x000000016dde2890: 0x0000007000544138 0x0000007000f241e0 0x0000007000f24098 0x0000007000f23f50
  0x000000016dde28b0: 0x000000700086d648 0x000000700086d378 0x00000000007786a2 0x00000001022992e0
  0x000000016dde28d0: 0x000000700041daf8 0x00000070004f3e18 0x00000070004f3e18 0x000000700051c0f0
  0x000000016dde28f0: 0x0000007000f23fc8 0x0000007000544138 0x00000000007786a2 0x0000000102293168
  0x000000016dde2910: 0x0000000000046272 0x0000000000272b48 0x0000000102292c04 0x0000007000f23f50
  0x000000016dde2930: 0x0000007000544138 0x0000007000f23f50 0x00000000007786a2 0x00000001022930dc
  0x000000016dde2950: 0x0000000000000600 0x0000000000000000 0x000000016dde31d0 0x000000010215a658
  0x000000016dde2970: 0x0000007000f23f50 0x0000007000541ab8 0x00000000007786a2 0x000000010219223c
  0x000000016dde2990: 0x000000016dde31d0 0x000000010202023c 0x0000000000000002 0x000000700057d228
  0x000000016dde29b0: 0x0000000000000050 0x0000007000f23f50 0x0000007000474ca8 0x0000007000552c68
  0x000000016dde29d0: 0x00000000007786a2 0x0000000102030074 0x000000016dde2a00 0x000000010282bb50
  0x000000016dde29f0: 0x0000007000000000 0x000000016dde2990 0x000000016dde31d0 0x000000010202fd8c
  0x000000016dde2a10: 0x00000001f2ea40c0 0x00000001f2ea5850 0x000000016dde2a60 0x0000000186be92ac
  0x000000016dde2a30: 0x00000001f2ea4058 0x0000000000000028 0x0000000000000008 0x000000010284cc80

VM thread locals for the failing thread 0x0000000103265400:
  0: JNIThreadLocalEnvironment.jniFunctions = (bytes) 0x0000007000529668
  8: StackOverflowCheckImpl.stackBoundaryTL = (Word) 0x0000000000000001 (1)
  16: SafepointCheckCounter.value = (int) 0x000654c3 (414915)
  20: StatusSupport.status = (int) 0x00000001 (1)
  24: ThreadLocalAllocation.regularTLAB = (bytes) 
    0x0000000103265418: 0x0000007000f23aa0 0x0000007000f25ac0
    0x0000000103265428: 0x0000007000f242b8 0x0000007000a58000
  56: JavaFrameAnchors.lastAnchor = (Word) 0x0000000000000000 (0)
  64: JavaThreads.currentVThreadId = (long) 0x0000000000000003 (3)
  72: PlatformThreads.currentThread = (Object) 0x0000007000552c68
    is an object of type java.lang.Thread
  80: ThreadLocalHandshake.handshakeMutex = (bytes) 
    0x0000000103265450: 0x000000004d55545a 0x000020a000000000
    0x0000000103265460: 0x4d55545a00000000 0x0000000000000000
    0x0000000103265470: 0x0000000000000000 0xffffffffffffffff
    0x0000000103265480: 0xfffffffefcd9abaf 0x4d55545a4d55545a
  144: ThreadLocalHandshake.handshakeCondition = (bytes) 
    0x0000000103265490: 0x00000000434f4e44 0x8000000000000000
    0x00000001032654a0: 0x0000000000000000 0x0000000100000000
    0x00000001032654b0: 0x0000000000000000 0x0000000000000000
  192: TlabSupport.allocatedBytesAvg = (bytes) 
    0x00000001032654c0: 0x0000000000000000 0x0000000000000000
    0x00000001032654d0: 0x4041800000000000 0x0000000000000000
  224: JfrAllocationEvents.lastThreadAllocatedBytes = (long) 0x00000000004e2d78 (5123448)
  232: JfrThreadLocal.dataLost = (Word) 0x0000000000000000 (0)
  240: JfrThreadLocal.javaBuffer = (Word) 0x00000008c308c000 (37631868928)
  248: JfrThreadLocal.missedSamples = (long) 0x0000000000000000 (0)
  256: JfrThreadLocal.nativeBuffer = (Word) 0x00000008c2c81000 (37627629568)
  264: JfrThreadLocal.samplerBuffer = (Word) 0x00000008c2c61000 (37627498496)
  272: JfrThreadLocal.unparseableStacks = (long) 0x0000000000000000 (0)
  280: SubstrateDiagnostics.threadOnlyAttachedForCrashHandler = (bytes) 0x0000000000000000
  288: ThreadCPULoadEvent.cpuTimeTL = (long) 0x00000000015310c8 (22221000)
  296: ThreadCPULoadEvent.userTimeTL = (long) 0x00000000009bc6e8 (10209000)
  304: ThreadCPULoadEvent.wallclockTimeTL = (long) 0x000124406733f864 (321334004676708)
  312: ThreadLocalAllocation.allocatedAlignedBytes = (Word) 0x0000000000494b48 (4803400)
  320: ThreadLocalAllocation.allocatedUnalignedBytes = (Word) 0x000000000004e210 (320016)
  328: TlabSupport.desiredSize = (Word) 0x0000000000002000 (8192)
  336: TlabSupport.refillWasteLimit = (Word) 0x0000000000000080 (128)
  344: TlabSupport.tlabAllocatedAlignedBytesBeforeLastGC = (Word) 0x0000000000000000 (0)
  352: VMThreads.IsolateTL = (Word) 0x0000007000000000 (481036337152)
  360: VMThreads.OSThreadHandleTL = (Word) 0x00000001f3159d80 (8373247360)
  368: VMThreads.OSThreadIdTL = (Word) 0x0000000000000103 (259)
  376: VMThreads.StackBase = (Word) 0x000000016dde4000 (6138249216)
  384: VMThreads.StackEnd = (Word) 0x000000016d5e8000 (6129876992)
  392: VMThreads.StartedByCurrentIsolate = (bytes) 0x0000000000000000
  400: VMThreads.nextTL = (Word) 0x0000000000000000 (0)
  408: VMThreads.unalignedIsolateThreadMemoryTL = (Word) 0x00000001032653e0 (4347810784)
  416: ExceptionUnwind.currentException = (Object) 0x0000000000000000
  420: JNIObjectHandles.handles = (Object) 0x0000007000a80bd8
    is an object of type com.oracle.svm.core.handles.ThreadLocalHandles
  424: JNIThreadLocalPendingException.pendingException = (Object) 0x0000000000000000
  428: JNIThreadLocalPrimitiveArrayViews.referencedArraysListHead = (Object) 0x0000000000000000
  432: JNIThreadOwnedMonitors.ownedMonitors = (Object) 0x0000000000000000
  436: JfrThreadLocal.javaEventWriter = (Object) 0x0000007000f21250
    is an object of type jdk.jfr.internal.event.EventWriter
  440: NoAllocationVerifier.openVerifiers = (Object) 0x0000000000000000
  444: RecurringCallbackSupport.timer = (Object) 0x0000007000f1e940
    is an object of type com.oracle.svm.core.thread.RecurringCallbackSupport$RecurringCallbackTimer
  448: RecurringCallbackTimer.exception = (Object) 0x0000000000000000
  452: ActionOnTransitionToJavaSupport.actionTL = (int) 0x00000000 (0)
  456: ImplicitExceptions.implicitExceptionsAreFatal = (int) 0x00000000 (0)
  460: JfrSampler.isDisabledForCurrentThread = (int) 0x00000000 (0)
  464: JfrSampler.samplerState = (int) 0x00000001 (1)
  468: JfrThreadLocal.notified = (int) 0x00000000 (0)
  472: RecurringCallbackSupport.suspended = (int) 0x00000000 (0)
  476: StackOverflowCheckImpl.yellowZoneStateTL = (int) 0x7efefefe (2130640638)
  480: StatusSupport.safepointBehaviorTL = (int) 0x00000001 (1)
  484: ThreadLocalHandshake.handshakeState = (int) 0x00000000 (0)
  488: ThreadSuspendSupport.suspended = (int) 0x00000000 (0)
  492: ThreadsLock.access = (int) 0x00000000 (0)
  496: TlabSupport.gcWaste = (int) 0x00000000 (0)
  500: TlabSupport.numberOfRefills = (int) 0x000001fd (509)
  504: TlabSupport.refillWaste = (int) 0x00001520 (5408)
  508: TlabSupport.slowAllocations = (int) 0x0000001b (27)
  
Java frame anchors for the failing thread 0x0000000103265400:
  No anchors
  
Stacktrace for the failing thread 0x0000000103265400 (A=AOT compiled, J=JIT compiled, D=deoptimized, i=inlined, C=native):
  A  SP 0x000000016dde2850 IP 0x0000000102297fb4 size=128   java.lang.Throwable.printStackTrace(Throwable.java)
  A  SP 0x000000016dde28d0 IP 0x00000001022992e0 size=64    java.lang.Throwable.printStackTrace(Throwable.java:686)
  A  SP 0x000000016dde2910 IP 0x0000000102293168 size=64    java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:579)
  A  SP 0x000000016dde2950 IP 0x00000001022930dc size=64    java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:571)
  A  SP 0x000000016dde2990 IP 0x000000010219223c size=80    com.oracle.svm.core.thread.JavaThreads.dispatchUncaughtException(JavaThreads.java:328)
  A  SP 0x000000016dde29e0 IP 0x0000000102030074 size=48    com.oracle.svm.core.JavaMainWrapper.runCore0(JavaMainWrapper.java:281)
  i  SP 0x000000016dde2a10 IP 0x000000010202fd8c size=96    com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:239)
  i  SP 0x000000016dde2a10 IP 0x000000010202fd8c size=96    com.oracle.svm.core.JavaMainWrapper.doRun(JavaMainWrapper.java:341)
  A  SP 0x000000016dde2a10 IP 0x000000010202fd8c size=96    com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:331)
  A  SP 0x000000016dde2a70 IP 0x000000010205fb40 size=272   com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_XNhh1mz2Ib2aPR1wdv014D(IsolateEnterStub.java:0)
  
Threads:
  0x000000010326ddc0 STATUS_IN_NATIVE (ALLOW_SAFEPOINT) "JFR Periodic Tasks" - 0x0000007000a95640, daemon, stack(0x000000016e548000,0x000000016e757000), OS thread 11011 (0x000000016e757000)
  0x000000010326b3c0 STATUS_IN_NATIVE (ALLOW_SAFEPOINT) "JFR recorder" - 0x000000700057d038, daemon, stack(0x000000016e330000,0x000000016e53f000), OS thread 9987 (0x000000016e53f000)
  0x0000000103265a80 STATUS_IN_NATIVE (ALLOW_SAFEPOINT) "Signal Dispatcher" - 0x0000007000a81b88, daemon, stack(0x000000016e000000,0x000000016e20f000), OS thread 6147 (0x000000016e20f000)
  0x0000000103265740 STATUS_IN_NATIVE (ALLOW_SAFEPOINT) "Reference Handler" - 0x00000070005530c0, daemon, stack(0x000000016dde8000,0x000000016dff7000), OS thread 6403 (0x000000016dff7000)
  0x0000000103265400 STATUS_IN_JAVA (PREVENT_VM_FROM_REACHING_SAFEPOINT) "main" - 0x0000007000552c68, stack(0x000000016d5e8000,0x000000016dde4000), OS thread 259 (0x00000001f3159d80)
  
No VMOperation in progress

The 30 most recent VM operation status changes:
  0.013s - Started JFR begin recording (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 1)
  0.014s -   Started Update JFR sampler (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 1)
  0.014s -   Finished Update JFR sampler (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 1)
  0.014s - Finished JFR begin recording (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 1)
  0.014s - Started Update JFR sampler (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 2)
  0.014s - Finished Update JFR sampler (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 2)
  0.014s - Started Update JFR sampler (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 3)
  0.014s - Finished Update JFR sampler (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 3)
  0.014s - Started Update JFR sampler (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 4)
  0.014s - Finished Update JFR sampler (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 4)
  0.014s - Started Emit periodic JFR events (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 5)
  0.014s - Finished Emit periodic JFR events (safepoint: true, queueingThread: 0x0000000103265400, executingThread: 0x0000000103265400, safepointId: 5)
  
VM mutexes:
  mutex "AbstractCollectionPolicy.sizes" is unlocked.
  mutex "RealLog.backTracePrinterMutex" is unlocked.
  mutex "SamplerBufferPool" is unlocked.
  mutex "VMOperationControl" is unlocked.
  mutex "freeList" is unlocked.
  mutex "jfrChunkWriter" is unlocked.
  mutex "jfrMethodRepository" is unlocked.
  mutex "jfrOldObjectRepository" is unlocked.
  mutex "jfrStackTraceRepository" is unlocked.
  mutex "jfrSymbolRepository" is unlocked.
  mutex "jfrThreadRepository" is unlocked.
  mutex "jfrTypeRepositoryClassId" is unlocked.
  mutex "referencePendingList" is unlocked.
  mutex "safepoint" is unlocked.
  mutex "threadsRead" is unlocked.
  mutex "threadsWrite" is unlocked.
  
Build time information:
  Version: Oracle GraalVM 25.1.3+9.1 (serial gc, compressed references), JDK 25.0.3+9-LTS
  Platform: darwin/aarch64
  Page size: 65536
  Supports isolates: true
  Container support: false
  Object reference size: 4
  CPU features used for AOT compiled code: FP, ASIMD, CRC32, LSE
  
Runtime information:
  Isolate id: 0
  Heap base: 0x0000007000000000
  Code base: 0x0000000102020000
  CGlobalData base: 0x000000010284c000
  Containerized: false
  CPU cores (OS): 16
  Memory (OS): 65536M
  Page size: 16384
  VM uptime: 0.021s
  Current timestamp: 1785179725190
  AOT compiled code: 0x0000000102020000 - 0x000000010282b03f
  
Command line: 

Heap settings and statistics:
  Reserved hub pointer bits: 0b11111
  Aligned chunk size: 524288
  Large array threshold: 131072
  Incremental collections: 0
  Complete collections: 0
  
Heap usage:
  Eden: 5.31M (0.00M in 0 aligned chunks, 0.00M in 0 unaligned chunks)
  Old: 0.00M (0.00M in 0 aligned chunks, 0.00M in 0 unaligned chunks)
  
GC policy:
  Name: adaptive2
  Max eden size: 11441012736
  Max survivor size: 3816292352
  Max young size: 11449401344
  Max old size: 22899326976
  Max heap size: 34348728320
  
Image heap:
  Objects in aligned chunks
    read-only: 0x0000007000080840 - 0x000000700052b480
    read-only relocatables: 0x0000007000529580 - 0x000000700052b480
    writable: 0x000000700052b480 - 0x000000700087e900
    writeable patched: 0x0000000000000000 - 0x0000000000000000
  Objects in unaligned chunks
    writable: 0x0000000000000000 - 0x0000000000000000
    read-only: 0x0000007000880788 - 0x0000007000a26a10
  
Heap chunks: E=eden, S=survivor, O=old, F=free; A=aligned chunk, U=unaligned chunk; T=to space
  |0x0000007000080000|0x0000007000080840, 0x00000070000ffff8, 0x0000007000100000| 99%|  I|A| |
  |0x0000007000100000|0x0000007000100840, 0x000000700017fff8, 0x0000007000180000| 99%|  I|A| |
  |0x0000007000180000|0x0000007000180840, 0x0000007000200000, 0x0000007000200000|100%|  I|A| |
  |0x0000007000200000|0x0000007000200840, 0x0000007000280000, 0x0000007000280000|100%|  I|A| |
  |0x0000007000280000|0x0000007000280840, 0x0000007000300000, 0x0000007000300000|100%|  I|A| |
  |0x0000007000300000|0x0000007000300840, 0x0000007000380000, 0x0000007000380000|100%|  I|A| |
  |0x0000007000380000|0x0000007000380840, 0x0000007000400000, 0x0000007000400000|100%|  I|A| |
  |0x0000007000400000|0x0000007000400840, 0x0000007000480000, 0x0000007000480000|100%|  I|A| |
  |0x0000007000480000|0x0000007000480840, 0x00000070004ffff8, 0x0000007000500000| 99%|  I|A| |
  |0x0000007000500000|0x0000007000500840, 0x0000007000580000, 0x0000007000580000|100%|  I|A| |
  |0x0000007000580000|0x0000007000580840, 0x0000007000600000, 0x0000007000600000|100%|  I|A| |
  |0x0000007000600000|0x0000007000600840, 0x0000007000680000, 0x0000007000680000|100%|  I|A| |
  |0x0000007000680000|0x0000007000680840, 0x0000007000700000, 0x0000007000700000|100%|  I|A| |
  |0x0000007000700000|0x0000007000700840, 0x0000007000780000, 0x0000007000780000|100%|  I|A| |
  |0x0000007000780000|0x0000007000780840, 0x0000007000800000, 0x0000007000800000|100%|  I|A| |
  |0x0000007000800000|0x0000007000800840, 0x000000700087e900, 0x0000007000880000| 98%|  I|A| |
  |0x0000007000880000|0x0000007000880788, 0x000000700096a460, 0x000000700096a460|100%|  I|U| |
  |0x000000700096a460|0x000000700096aa78, 0x0000007000a26a10, 0x0000007000a26a10|100%|  I|U| |
  |0x0000007000f00000|0x0000007000f00840, 0x0000007000f25ac0, 0x0000007000f80000| 29%|  E|A| |
  |0x0000007000e80000|0x0000007000e80840, 0x0000007000f00000, 0x0000007000f00000|100%|  E|A| |
  |0x0000007000e00000|0x0000007000e00840, 0x0000007000e80000, 0x0000007000e80000|100%|  E|A| |
  |0x0000007000d80000|0x0000007000d80840, 0x0000007000e00000, 0x0000007000e00000|100%|  E|A| |
  |0x0000007000d00000|0x0000007000d00840, 0x0000007000d80000, 0x0000007000d80000|100%|  E|A| |
  |0x0000007000c80000|0x0000007000c80840, 0x0000007000cffed8, 0x0000007000d00000| 99%|  E|A| |
  |0x0000007000c00000|0x0000007000c00840, 0x0000007000c80000, 0x0000007000c80000|100%|  E|A| |
  |0x0000007000b80000|0x0000007000b80840, 0x0000007000c00000, 0x0000007000c00000|100%|  E|A| |
  |0x0000007000b00000|0x0000007000b00840, 0x0000007000b80000, 0x0000007000b80000|100%|  E|A| |
  |0x0000007000a80000|0x0000007000a80840, 0x0000007000aff9d0, 0x0000007000b00000| 99%|  E|A| |
  |0x0000007000a58000|0x0000007000a58178, 0x0000007000a7f280, 0x0000007000a7f280|100%|  E|U| |
  |0x0000007000a30000|0x0000007000a30178, 0x0000007000a57280, 0x0000007000a57280|100%|  E|U| |
  
Segfault detected, aborting process. Use '-XX:-InstallSegfaultHandler' to disable the segfault handler at run time and create a core dump instead. Rebuild with '-R:-InstallSegfaultHandler' to disable the handler permanently at build time.

zsh: abort      ./repro-exact -XX:StartFlightRecording=filename=r.jfr,dumponexit=true

Steps to Reproduce

% cat > JfrNanoTimeRepro.java <<EOF
public class JfrNanoTimeRepro {
    public static void main(String[] args) throws Exception {
        Thread.sleep(1);
        System.out.println("completed");
    }
}
EOF

% $GRAALVM_HOME/bin/javac JfrNanoTimeRepro.java
% $GRAALVM_HOME/bin/native-image --enable-monitoring=jfr --exact-reachability-metadata -o repro-exact JfrNanoTimeRepro
% ./repro-exact -XX:StartFlightRecording=filename=r.jfr,dumponexit=true 

Additional Context

This bug report generated with Claude Opus 4.8, with the reproducer case verified by hand.

Run-Time Log Output and Error Messages

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions