RFR: 8303444: AsyncGetCallTrace obtains too few frames with instrumentation agent

Johannes Bechberger duke at openjdk.org
Wed Mar 1 14:38:03 UTC 2023


On Wed, 1 Mar 2023 12:32:19 GMT, Johannes Bechberger <duke at openjdk.org> wrote:

> This fixes the bug by removing the faulty completeness check for runtime blobs.
> 
> I tested it using the [trace_validation](https://github.com/parttimenerd/trace_validation) tool successfully as described in the issue. I furthermore ran the [jdk-profiling-tester](https://github.com/parttimenerd/jdk-profiling-tester) to ensure that this fix did not introduce any stability issues and ran the serviceability JTREG tests successfully.

The problem seems to stem from runtime stubs generated for GC load barriers. These stubs are marked with a `frame_never_safe` value for `_frame_complete_offset`. This then causes `is_frame_complete_at` to return always false for these codeblobs. It might be that there were problems in the past (before 2008) with walking over these frames, but neither GetStackTrace nor the the current implementation of AsyncGetCallTrace have any problems.

It might be that walking over these frames got only implemented in the recent years.

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

PR: https://git.openjdk.org/jdk/pull/12804


More information about the hotspot-dev mailing list