$ java -XX:StartFlightRecording=...,jdk.VirtualThreadPinned#enabled=true,threshold=0ms NativePinningDemo

java.version=25.0.4.1
jdk.tracePinnedThreads=null
sleepMillis=200
done

$ jfr print --events jdk.VirtualThreadPinned --stack-depth 10 target/native-pin.jfr

jdk.VirtualThreadPinned {
  startTime = 12:02:49.269 (2026-09-30)
  duration = 200 ms
  blockingOperation = "LockSupport.park"
  pinnedReason = "Native or VM frame on stack"
  carrierThread = "ForkJoinPool-1-worker-1" (javaThreadId = 28)
  eventThread = "" (javaThreadId = 27, virtual)
  stackTrace = [
    java.lang.VirtualThread.parkOnCarrierThread(boolean, long) line: 833
    java.lang.VirtualThread.parkNanos(long) line: 801
    java.lang.VirtualThread.sleepNanos(long) line: 983
    java.lang.Thread.sleepNanos(long) line: 507
    java.lang.Thread.sleep(long) line: 540
    com.ankurm.vtpinning.NativePinningDemo.sleepCallback() line: 30
    com.ankurm.vtpinning.NativePinningDemo.blockingNativeCall()
    java.lang.VirtualThread.run(Runnable) line: 460
    jdk.internal.vm.Continuation.enterSpecial(Continuation, boolean, boolean)
  ]
}

