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

Closed
wants to merge 1 commit into 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 - Approved)

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

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

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 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?

@tstuefe
Copy link
Member

tstuefe commented Oct 29, 2024

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

@openjdk openjdk bot added ready Pull request is ready to be integrated and removed approval labels Oct 29, 2024
@apangin
Copy link
Author

apangin commented Oct 29, 2024

/integrate

@openjdk openjdk bot added the sponsor Pull request is ready to be sponsored label Oct 29, 2024
@openjdk
Copy link

openjdk bot commented Oct 29, 2024

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

@shipilev
Copy link
Member

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

/sponsor

@openjdk
Copy link

openjdk bot commented Oct 29, 2024

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

Your commit was automatically rebased without conflicts.

@openjdk openjdk bot added the integrated Pull request has been integrated label Oct 29, 2024
@openjdk openjdk bot closed this Oct 29, 2024
@openjdk openjdk bot removed the ready Pull request is ready to be integrated label Oct 29, 2024
@openjdk openjdk bot removed rfr Pull request is ready for review sponsor Pull request is ready to be sponsored labels Oct 29, 2024
@openjdk
Copy link

openjdk bot commented Oct 29, 2024

@shipilev @apangin Pushed as commit 7e1ea51.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
integrated Pull request has been integrated
Development

Successfully merging this pull request may close these issues.

3 participants