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