Unmounted virtual thread monitor information is missing from javacore.
When a virtual thread is unmounted its held monitors are stored in monitorEnterRecords of J9VMContinuation. This list should be used when writing unmounted virtual thread data to a javacore. Unmounted vthread information can be enabled with -XX:+ShowUnmountedThreadStacks.
Example of the current output:
1XMVTHDINFO Unmounted Threads
NULL =================
NULL
3XMVTHDINFO "vthread-one" J9VMContinuation:0x0000000C6ACD5920, java/lang/Thread:0x00000003FFD8C168
3XMVTHDINFO1 Type: Virtual
3XMTHREADINFO3 Java callstack:
4XESTACKTRACE at jdk/internal/vm/Continuation.yieldImpl(Native Method)
4XESTACKTRACE at jdk/internal/vm/Continuation.yield0(Continuation.java:251)
4XESTACKTRACE at jdk/internal/vm/Continuation.yield(Continuation.java:243)
4XESTACKTRACE at java/lang/VirtualThread.yieldContinuation(VirtualThread.java:560)
4XESTACKTRACE at java/lang/VirtualThread.parkNanos(VirtualThread.java:818)
4XESTACKTRACE at java/lang/VirtualThread.sleepNanos(VirtualThread.java:1014)
4XESTACKTRACE at java/lang/Thread.sleepNanos(Thread.java:566)
4XESTACKTRACE at java/lang/Thread.sleep(Thread.java:599)
4XESTACKTRACE at VThreadMonitor.lambda$main$0(VThreadMonitor.java:24)
4XESTACKTRACE at VThreadMonitor$$Lambda/0x000000006d884c58.run(Bytecode PC:4)
4XESTACKTRACE at java/lang/Thread.runWith(Thread.java:1551)
4XESTACKTRACE at java/lang/VirtualThread.run(VirtualThread.java:479)
4XESTACKTRACE at java/lang/VirtualThread$VThreadContinuation$1.run(VirtualThread.java:259)
4XESTACKTRACE at jdk/internal/vm/Continuation.enter(Continuation.java:192)
NULL
Unmounted virtual thread monitor information is missing from javacore.
When a virtual thread is unmounted its held monitors are stored in monitorEnterRecords of J9VMContinuation. This list should be used when writing unmounted virtual thread data to a javacore. Unmounted vthread information can be enabled with
-XX:+ShowUnmountedThreadStacks.Example of the current output: