Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

apangin
Copy link

@apangin apangin commented Aug 28, 2024

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

  • Change must be properly reviewed (1 review required, with at least 1 Reviewer)
  • JDK-8339133 needs maintainer approval
  • Change must not contain extraneous whitespace
  • 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

@bridgekeeper
Copy link

bridgekeeper bot commented Aug 28, 2024

👋 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.

@openjdk
Copy link

openjdk bot commented Aug 28, 2024

❗ This change is not yet ready to be integrated.
See the Progress checklist in the description for automated requirements.

@apangin apangin marked this pull request as ready for review August 28, 2024 02:16
@openjdk openjdk bot added the rfr Pull request is ready for review label Aug 28, 2024
@mlbridge
Copy link

mlbridge bot commented Aug 28, 2024

Webrevs

@openjdk
Copy link

openjdk bot commented Aug 28, 2024

@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.

@tstuefe
Copy link
Member

tstuefe commented Aug 28, 2024

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?

@apangin
Copy link
Author

apangin commented Aug 28, 2024

@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
Copy link
Member

tstuefe commented Aug 28, 2024

@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.

Copy link
Member

@tstuefe tstuefe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@openjdk
Copy link

openjdk bot commented Aug 28, 2024

⚠️ @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.

@apangin
Copy link
Author

apangin commented Aug 28, 2024

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

@openjdk
Copy link

openjdk bot commented Aug 28, 2024

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

@openjdk openjdk bot added the approval label Aug 28, 2024
@bridgekeeper
Copy link

bridgekeeper bot commented Sep 25, 2024

@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!

@apangin
Copy link
Author

apangin commented Oct 6, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approval rfr Pull request is ready for review
Development

Successfully merging this pull request may close these issues.

2 participants