RFR: 8369505: jhsdb jstack --mixed cannot handle continuation stub on Linux [v2]

Yasumasa Suenaga ysuenaga at openjdk.org
Sat Oct 11 13:57:41 UTC 2025


On Sat, 11 Oct 2025 03:24:46 GMT, Yasumasa Suenaga <ysuenaga at openjdk.org> wrote:

>> I tried to get mixed thread dump of the application which runs virtual threads (see [Test.java on JBS](https://bugs.openjdk.org/secure/attachment/116453/Test.java)) via `jhsdb jstack --mixed`, then I got following message:
>> 
>> 
>> sun.jvm.hotspot.utilities.AssertionFailure: must have non-zero frame size
>>         at jdk.hotspot.agent/sun.jvm.hotspot.utilities.Assert.that(Assert.java:32)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.runtime.x86.X86Frame.senderForCompiledFrame(X86Frame.java:374)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.runtime.x86.X86Frame.sender(X86Frame.java:273)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.runtime.Frame.sender(Frame.java:225)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.runtime.Frame.realSender(Frame.java:230)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.runtime.VFrame.sender(VFrame.java:120)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.runtime.VFrame.javaSender(VFrame.java:150)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.tools.PStack.initJFrameCache(PStack.java:224)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.tools.PStack.run(PStack.java:73)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.tools.PStack.run(PStack.java:65)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.tools.PStack.run(PStack.java:60)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.tools.JStack.run(JStack.java:67)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.tools.Tool.startInternal(Tool.java:278)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.tools.Tool.start(Tool.java:241)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.tools.Tool.execute(Tool.java:134)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.tools.JStack.runWithArgs(JStack.java:90)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.SALauncher.runJSTACK(SALauncher.java:306)
>>         at jdk.hotspot.agent/sun.jvm.hotspot.SALauncher.main(SALauncher.java:507)
>> 
>> 
>> And also I got following (strange) stacks which causes `AssersionFailure` in above:
>> 
>> 
>> ----------------- 70094 -----------------
>> "ForkJoinPool-1-worker-4" #32 daemon prio=5 tid=0x00007f8f5c371660 nid=70094 runnable [0x00007f8f406d9000]
>>    java.lang.Thread.State: RUNNABLE
>>    JavaThread state: _thread_in_native
>> 0x00007f8f64658462 __syscall_cancel_arch + 0x32
>> 0x00007f8f6464c75c __internal_syscall_cancel + 0x5c
>> 0x00007f8f646a8c37 __GI___nanosleep + 0x17
>> 0x00007f8f646bb14e __sleep + 0x3e
>> 0x00007f8f4b3a8e1e <nep_invoker_blob>
>> 0x00007f8f4b33fe48 * java.lang.invoke.LambdaForm$MH+0x000000000c047000.invoke(...
>
> Yasumasa Suenaga has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix trivial bug

I fixed for AArch64, and it works fine (in below) on Raspberry Pi 4.

----------------- 1687 -----------------
"ForkJoinPool-1-worker-2" #28 daemon prio=5 tid=0x0000ffff9c697a10 nid=1687 runnable [0x0000ffff70def000]
   java.lang.Thread.State: RUNNABLE
   JavaThread state: _thread_in_native
0x0000ffffa3b382e8      __syscall_cancel_arch + 0x28
0x0000ffffa3b68b7c      __clock_nanosleep + 0x3c
0x0000ffffa3b73740      __GI___nanosleep + 0x20
0x0000ffffa3b83f50      __sleep + 0x50
0x0000ffff8b15b278      <nep_invoker_blob>
0x0000ffff8b13bd54      * java.lang.invoke.LambdaForm$MH+0x0000000010087000.invoke(java.lang.Object, long, int) bci:10 (Interpreted frame)
0x0000ffff8b13bd54      * java.lang.invoke.LambdaForm$MH+0x0000000010090000.invokeExact_MT(java.lang.Object, long, int, java.lang.Object) bci:21 (Interpreted frame)
0x0000ffff8b13bd54      * jdk.internal.foreign.abi.DowncallStub+0x0000000010088000.invoke(java.lang.foreign.SegmentAllocator, java.lang.foreign.MemorySegment, int) bci:44 (Interpreted frame)
0x0000ffff8b13bd54      * java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(java.lang.Object, java.lang.Object, java.lang.Object, int) bci:14 (Interpreted frame)
0x0000ffff8b13bd54      * java.lang.invoke.LambdaForm$MH+0x000000001008e400.invoke(java.lang.Object, int) bci:44 (Interpreted frame)
0x0000ffff8b13bf24      * java.lang.invoke.LambdaForm$MH+0x000000001008cc00.invoke_MT(java.lang.Object, int, java.lang.Object) bci:18 (Interpreted frame)
0x0000ffff8b13bf24      * Test.run() bci:21 line:28 (Interpreted frame)
0x0000ffff8b13a3b8      <StubRoutines (continuation stubs)>
0x0000ffff8b13bf24      * jdk.internal.vm.Continuation.run() bci:122 line:248 (Interpreted frame)
0x0000ffff8b13bf24      * java.lang.VirtualThread.runContinuation() bci:100 line:293 (Interpreted frame)
0x0000ffff8b13bf24      * java.lang.VirtualThread$$Lambda+0x00000000100fba70.run() bci:4 (Interpreted frame)
0x0000ffff8b13c5b4      * java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute() bci:4 line:1753 (Interpreted frame)
0x0000ffff8b13bc50      * java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute() bci:1 line:1745 (Interpreted frame)
0x0000ffff8b13bc50      * java.util.concurrent.ForkJoinTask$InterruptibleTask.exec() bci:51 line:1662 (Interpreted frame)
0x0000ffff8b13bd54      * java.util.concurrent.ForkJoinTask.doExec() bci:10 line:511 (Interpreted frame)
0x0000ffff8b13bf24      * java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(java.util.concurrent.ForkJoinTask, int) bci:5 line:1450 (Interpreted frame)
0x0000ffff8b13bf24      * java.util.concurrent.ForkJoinPool.runWorker(java.util.concurrent.ForkJoinPool$WorkQueue) bci:364 line:2019 (Interpreted frame)
0x0000ffff8b13bf24      * java.util.concurrent.ForkJoinWorkerThread.run() bci:31 line:187 (Interpreted frame)
0x0000ffff8b13749c      <StubRoutines (initial stubs)>
0x0000ffffa24d15c4      JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*) + 0x474
0x0000ffffa24d1c48      JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*, JavaCallArguments*, JavaThread*) + 0x278
0x0000ffffa24d21e4      JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*, JavaThread*) + 0x90
0x0000ffffa2668a14      thread_entry(JavaThread*, JavaThread*) + 0xc4
0x0000ffffa2510d18      JavaThread::thread_main_inner() + 0x104
0x0000ffffa30399fc      Thread::call_run() + 0xac
0x0000ffffa2b6c69c      thread_native_entry(Thread*) + 0x12c
0x0000ffffa3b2e8d4      start_thread + 0x404

-------------

PR Comment: https://git.openjdk.org/jdk/pull/27728#issuecomment-3393348999


More information about the serviceability-dev mailing list