On Sun, 8 Mar 2026 02:28:19 GMT, Yasumasa Suenaga <[email protected]> wrote:

>> 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?

My local `hotspot_serviceability` and `jdk_svc` tests on linux-riscv64 are 
passing using the latest version. Thanks for the update.

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

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

Reply via email to