jdk8u-dev icon indicating copy to clipboard operation
jdk8u-dev copied to clipboard

8339133: [8u] Profiler crashes at guarantee(is_result_safe || is_in_asgct()): unsafe access to zombie method

Open apangin opened this issue 1 year ago • 11 comments
trafficstars

When running AsyncGetCallTrace based profiler, JVM occasionally crashes on the guarantee at codeCache.cpp:287:

guarantee(is_result_safe || is_in_asgct(), "unsafe access to zombie method");

According to the stack trace, a thread is inside AsyncGetCallTrace at the moment of crash, but is_in_asgct() == false.

Current implementation of AsyncGetCallTrace is not reentrant, since it incorrectly resets in_asgct flag of the current thread. The fix is similar to JDK-8329103: in_asgct should be reset to previous value instead of false.

The fix is trivial and safe: it affects only AsyncGetCallTrace.

Testing: tier1, renaissance suite with async-profiler enabled


Progress

  • [x] Change must be properly reviewed (1 review required, with at least 1 Reviewer)
  • [ ] JDK-8339133 needs maintainer approval
  • [x] Change must not contain extraneous whitespace
  • [x] Commit message must refer to an issue

Issue

  • JDK-8339133: [8u] Profiler crashes at guarantee(is_result_safe || is_in_asgct()): unsafe access to zombie method (Bug - P4 - Requested)

Reviewers

Reviewing

Using git

Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk8u-dev.git pull/568/head:pull/568
$ git checkout pull/568

Update a local copy of the PR:
$ git checkout pull/568
$ git pull https://git.openjdk.org/jdk8u-dev.git pull/568/head

Using Skara CLI tools

Checkout this PR locally:
$ git pr checkout 568

View PR using the GUI difftool:
$ git pr show -t 568

Using diff file

Download this PR as a diff file:
https://git.openjdk.org/jdk8u-dev/pull/568.diff

Webrev

Link to Webrev Comment

apangin avatar Aug 28 '24 02:08 apangin

:wave: Welcome back apangin! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

bridgekeeper[bot] avatar Aug 28 '24 02:08 bridgekeeper[bot]

@apangin This change now passes all automated pre-integration checks.

After integration, the commit message for the final commit will be:

8339133: [8u] Profiler crashes at guarantee(is_result_safe || is_in_asgct()): unsafe access to zombie method

Reviewed-by: stuefe, shade

You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed.

At the time when this comment was updated there had been 35 new commits pushed to the master branch:

  • 31b88042fba46e87fba83e8bfd43ae0ecb5a9afd: Merge
  • 618917eb093243de2c5d7e83d4688bfe9ad04985: 8341059: Change Entrust TLS distrust date to November 12, 2024
  • 1c1afe3188df5621b5523ae9a06ad39c8a253589: 8341057: Add 2 SSL.com TLS roots
  • e976b99775c95013431b7119a61dac3409b3bf16: 8335713: Enhance vectorization analysis
  • c5508ab0a6f565bb774ccf786f3290e59f5ab116: 8332644: Improve graph optimizations
  • da6b2652f5afb1270140d1bc680f2ef3d8f9c51a: 8290367: Update default value and extend the scope of com.sun.jndi.ldap.object.trustSerialData system property
  • 3b077b8a7cf07e2c06064efbddbc5488cdf710bb: 8331446: Improve deserialization support
  • 165022181994b20d50e8631f88182f11d95e1ccb: 8328726: Better Kerberos support
  • 0405894d5183be14e2563617446e90192eced09d: 8328544: Improve handling of vectorization
  • 81c99d899041a4d92ccab6bb1bd096c58d36429d: 8328286: Enhance HTTP client
  • ... and 25 more: https://git.openjdk.org/jdk8u-dev/compare/7d36fed8e01c6ee0a1b301a379df5dae8afa960d...master

As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details.

As you do not have Committer status in this project an existing Committer must agree to sponsor your change. Possible candidates are the reviewers of this PR (@tstuefe, @shipilev) but any other Committer may sponsor as well.

➡️ To flag this PR as ready for integration with the above commit message, type /integrate in a new comment. (Afterwards, your sponsor types /sponsor in a new comment to perform the integration).

openjdk[bot] avatar Aug 28 '24 02:08 openjdk[bot]

Webrevs

mlbridge[bot] avatar Aug 28 '24 02:08 mlbridge[bot]

@apangin Please do not rebase or force-push to an active PR as it invalidates existing review comments. Note for future reference, the bots always squash all changes into a single commit automatically as part of the integration. See OpenJDK Developers’ Guide for more information.

openjdk[bot] avatar Aug 28 '24 10:08 openjdk[bot]

Hi Andrey, why do you submit this as a jdk 8 PR? Why not fix it upstream? Is it not an issue on JDK 11/17/21 etc?

tstuefe avatar Aug 28 '24 14:08 tstuefe

@tstuefe The issue has been already fixed in upstream in JDK-8329103 and then backported to 21u, 17u and 11u. I created a separate issue for 8u instead of calling it a backport because: (1) in jdk8u, there is no assertion mentioned in the title of JDK-8329103; (2) the patch for JDK-8329103 does not apply to jdk8u, the fix needs to be implemented differently, although the idea is essentially the same.

apangin avatar Aug 28 '24 15:08 apangin

@tstuefe The issue has been already fixed in upstream in JDK-8329103 and then backported to 21u, 17u and 11u. I created a separate issue for 8u instead of calling it a backport because: (1) in jdk8u, there is no assertion mentioned in the title of JDK-8329103; (2) the patch for JDK-8329103 does not apply to jdk8u, the fix needs to be implemented differently, although the idea is essentially the same.

Okay, thank you for the explanation. Up to @gnu-andrew to decide if this is the right approach. Technically, the patch is fine.

tstuefe avatar Aug 28 '24 15:08 tstuefe

⚠️ @apangin This change is now ready for you to apply for maintainer approval. This can be done directly in each associated issue or by using the /approval command.

openjdk[bot] avatar Aug 28 '24 15:08 openjdk[bot]

/approval request Low risk yet important fix for profiling robustness. Affects only AsyncGetCallTrace code.

apangin avatar Aug 28 '24 16:08 apangin

@apangin 8339133: The approval request has been created successfully.

openjdk[bot] avatar Aug 28 '24 16:08 openjdk[bot]

@apangin This pull request has been inactive for more than 4 weeks and will be automatically closed if another 4 weeks passes without any activity. To avoid this, simply add a new comment to the pull request. Feel free to ask for assistance if you need help with progressing this pull request towards integration!

bridgekeeper[bot] avatar Sep 25 '24 19:09 bridgekeeper[bot]

Dear maintainers, is there anything else I need to do to move this PR forward?

apangin avatar Oct 06 '24 20:10 apangin

Ping @jerboaa or @gnu-andrew . Patch looks fine to me.

tstuefe avatar Oct 29 '24 10:10 tstuefe

/integrate

apangin avatar Oct 29 '24 15:10 apangin

@apangin Your change (at version 39d645367e089d3e5d2e0851395c5a38812ed647) is now ready to be sponsored by a Committer.

openjdk[bot] avatar Oct 29 '24 15:10 openjdk[bot]

I looked at GHA failures, and they do not look relevant to this PR.

/sponsor

shipilev avatar Oct 29 '24 15:10 shipilev

Going to push as commit 7e1ea515911827915c27c6568585c6c7906a74d9. Since your change was applied there have been 35 commits pushed to the master branch:

  • 31b88042fba46e87fba83e8bfd43ae0ecb5a9afd: Merge
  • 618917eb093243de2c5d7e83d4688bfe9ad04985: 8341059: Change Entrust TLS distrust date to November 12, 2024
  • 1c1afe3188df5621b5523ae9a06ad39c8a253589: 8341057: Add 2 SSL.com TLS roots
  • e976b99775c95013431b7119a61dac3409b3bf16: 8335713: Enhance vectorization analysis
  • c5508ab0a6f565bb774ccf786f3290e59f5ab116: 8332644: Improve graph optimizations
  • da6b2652f5afb1270140d1bc680f2ef3d8f9c51a: 8290367: Update default value and extend the scope of com.sun.jndi.ldap.object.trustSerialData system property
  • 3b077b8a7cf07e2c06064efbddbc5488cdf710bb: 8331446: Improve deserialization support
  • 165022181994b20d50e8631f88182f11d95e1ccb: 8328726: Better Kerberos support
  • 0405894d5183be14e2563617446e90192eced09d: 8328544: Improve handling of vectorization
  • 81c99d899041a4d92ccab6bb1bd096c58d36429d: 8328286: Enhance HTTP client
  • ... and 25 more: https://git.openjdk.org/jdk8u-dev/compare/7d36fed8e01c6ee0a1b301a379df5dae8afa960d...master

Your commit was automatically rebased without conflicts.

openjdk[bot] avatar Oct 29 '24 15:10 openjdk[bot]

@shipilev @apangin Pushed as commit 7e1ea515911827915c27c6568585c6c7906a74d9.

:bulb: You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

openjdk[bot] avatar Oct 29 '24 15:10 openjdk[bot]