On Fri, 16 Oct 2026 09:47:58 GMT, Long Yang <[email protected]> wrote:

>> Hi, could I have a review of this patch. This patch fixes 
>> [JDK-8391637](https://bugs.openjdk.org/browse/JDK-8391637).
>> 
>> Due to my GitHub account settings (Enable Copilot Code Review for all my 
>> PRs), my previous [PR](https://github.com/openjdk/jdk/pull/33358) had 
>> Copilot Review enabled by default. I have disabled it and now open this new 
>> PR, with no changes made to the code. 
>> 
>> On `risc-v`, 
>> [LinuxRISCV64CFrame.sender()](https://github.com/openjdk/jdk/blob/c368bac40e185398fbc40dc4d75a457f7a36f954/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/riscv64/LinuxRISCV64CFrame.java#L70)
>>  validates only FP alignment, then dereferences FP for SP, link, and return 
>> address. An aligned arbitrary FP (such as 0x90) can therefore cause 
>> UnmappedAddressException, and lead to incomplete stack for the target thread.
>> 
>> `aarch64` and `amdf64`already use `dwarf` to unwind native frames, see 
>> https://github.com/openjdk/jdk/blob/c368bac40e185398fbc40dc4d75a457f7a36f954/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/amd64/LinuxAMD64CFrame.java#L36
>> https://github.com/openjdk/jdk/blob/c368bac40e185398fbc40dc4d75a457f7a36f954/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/debugger/linux/aarch64/LinuxAARCH64CFrame.java#L38
>> 
>> This patch makes `risc-v` to unwind with `dwarf` too. 
>> 
>> The `risc-v` version basically has the same design as the `aarch64` version. 
>> There are also several differences , primarily due to differences in calling 
>> conventions.  Almost every difference is accompanied by an explanatory 
>> comment.
>> 
>> I have ran tests in `test/hotspot/jtreg/serviceability/sa` on `risc-v` and 
>> `amd64`, all passed.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Long Yang has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   RISC-V: Use compiler-defined macros for DWARF register selection

I cannot check this change because I don't have RISC-V machine, but almost 
looks good (shared platform independent DWARF code at least).

> Could we add -fasynchronous-unwind-tables to the RISC-V build flags for the 
> JVM, JDK libraries and native tests? Older supported toolchains do not enable 
> these tables by default, so mixed-stack unwinding may stop in JDK native code.

I guess older toolchain for RISC-V generates DWARF into `.debug_frame` if we 
need `-fasynchronous-unwind-tables`. I've created PR for it as #33375 . It 
might be better to wait and to test it after that. I expect your PR works 
without ` -fasynchronous-unwind-tables` after that.

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

PR Comment: https://git.openjdk.org/jdk/pull/33374#issuecomment-6228653716

Reply via email to