jdk8u-dev
jdk8u-dev copied to clipboard
8339133: [8u] Profiler crashes at guarantee(is_result_safe || is_in_asgct()): unsafe access to zombie method
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
- Thomas Stuefe (@tstuefe - Reviewer)
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
: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.
@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).
@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.
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 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.
@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.
⚠️ @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.
/approval request Low risk yet important fix for profiling robustness. Affects only AsyncGetCallTrace code.
@apangin 8339133: The approval request has been created successfully.
@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!
Dear maintainers, is there anything else I need to do to move this PR forward?
Ping @jerboaa or @gnu-andrew . Patch looks fine to me.
/integrate
@apangin Your change (at version 39d645367e089d3e5d2e0851395c5a38812ed647) is now ready to be sponsored by a Committer.
I looked at GHA failures, and they do not look relevant to this PR.
/sponsor
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.
@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.