RFR: 8350111: [PPC] AsyncGetCallTrace crashes when called while handling SIGTRAP [v2]
Martin Doerr
mdoerr at openjdk.org
Wed Feb 26 13:22:54 UTC 2025
On Wed, 26 Feb 2025 10:57:31 GMT, Richard Reingruber <rrich at openjdk.org> wrote:
>> With this change `JavaThread::pd_get_top_frame_for_profiling()` fails if the current thread is found to be `_thread_in_Java` but the CodeCache does not contain its pc.
>>
>> This will prevent crashes as described by the JBS item.
>>
>> The fix might be too conservative for situations where a thread doen't change its thread state when calling native code, e.g. using the Foreign Function & Memory API. The difficulty finding a less defensive fix is that one must detect if a valid pc can be found in the caller's ABI before constructing that frame.
>>
>> Testing:
>>
>> * DaCapo Tomcat with async-profiler on a fastdebug build.
>> * Tier 1-4 of hotspot and jdk on the main platforms and also on Linux/PPC64le and AIX.
>
> Richard Reingruber has updated the pull request incrementally with two additional commits since the last revision:
>
> - A frame isn't safe_for_sender if sender_pc() returns null
> - Revert first fix
>
> This reverts commit c4b81e2dc5a854efde8475d09b33b8f53dde987d.
Thanks! This solution looks much better!
src/hotspot/cpu/ppc/frame_ppc.cpp line 200:
> 198: if (sender_pc() == nullptr) {
> 199: // Likely the return pc was not yet stored to stack. We rather discard this
> 200: // sample also because we would hit an assertion in frame::setup(). We can
Double-whitespaces seem to be uncommon.
-------------
Marked as reviewed by mdoerr (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/23641#pullrequestreview-2644462134
PR Review Comment: https://git.openjdk.org/jdk/pull/23641#discussion_r1971574689
More information about the hotspot-runtime-dev
mailing list