On Sun, 8 Mar 2026 01:49:29 GMT, Fei Yang <[email protected]> wrote:

>> Yasumasa Suenaga has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   Make setSP() to abstract method
>
> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/riscv64/RISCV64Frame.java
>  line 272:
> 
>> 270:       if (cb.isUpcallStub()) {
>> 271:         return senderForUpcallStub(map, (UpcallStub)cb);
>> 272:       } else {
> 
> Hi,
> I tried this on `linux-riscv64` platform and I witnessed test failure when 
> running `serviceability/sa/TestJhsdbJstackWithVirtualThread.java`:
> 
> java.lang.RuntimeException: 'must have non-zero frame size' found in stdout
>         at 
> jdk.test.lib.process.OutputAnalyzer.shouldNotContain(OutputAnalyzer.java:299)
>         at 
> TestJhsdbJstackWithVirtualThread.runJstack(TestJhsdbJstackWithVirtualThread.java:63)
>         at 
> TestJhsdbJstackWithVirtualThread.main(TestJhsdbJstackWithVirtualThread.java:74)
>         at 
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
>         at java.base/java.lang.reflect.Method.invoke(Method.java:565)
>         at 
> com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335)
>         at java.base/java.lang.Thread.run(Thread.java:1527)
> 
> JavaTest Message: Test threw exception: java.lang.RuntimeException
> JavaTest Message: shutting down test
> 
> 
> I guess you might want to add following add-on change. I see aarch64 and 
> amd64 has a similar frame size check before invoking `senderForCompiledFrame` 
> method.
> 
> diff --git 
> a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/riscv64/RISCV64Frame.java
>  
> b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/riscv64/RISCV64Frame.java
> index 67b4314a3c7..a35c0735979 100644
> --- 
> a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/riscv64/RISCV64Frame.java
> +++ 
> b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/riscv64/RISCV64Frame.java
> @@ -269,7 +269,7 @@ public Frame sender(RegisterMap regMap, CodeBlob cb) {
>      if (cb != null) {
>        if (cb.isUpcallStub()) {
>          return senderForUpcallStub(map, (UpcallStub)cb);
> -      } else {
> +      } else if (cb.getFrameSize() > 0) {
>          return senderForCompiledFrame(map, cb);
>        }
>      }

Thanks a lot! You are right.
I applied that change to both RISC-V and PPC64. Could you check again?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/30107#discussion_r2901153961

Reply via email to