-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8355556: JVM crash because archived method handle intrinsics are not restored #25766
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
Conversation
|
👋 Welcome back iklam! A progress list of the required criteria for merging this PR into |
|
@iklam This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: 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 36 new commits pushed to the
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. ➡️ To integrate this PR with the above commit message to the |
adinn
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good.
iwanowww
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good.
|
Going to push as commit 366650a.
Your commit was automatically rebased without conflicts. |
AOTLinkedClassBulkLoader::finish_loading_javabase_classes()can execute Java bytecodes (from<clinit>). If one of these bytecodes is an AOT-resolvedinvokedynamic, it may be dispatched using an archived method handle intrinsic. Therefore, we should callSystemDictionary::restore_archived_method_handle_intrinsics()first to make sure that the method handle intrinsics are ready to be used.In the JDK mainline, we only execute a very limited set of Java methods which happens to not include any
invokedynamicbytecodes. That's why this bug has not been found in the mainline.However, in the Leyden repo, we have other optimizations, such as archived ProtectionDomains, which will cause
invokedynamicbytecodes to be executed insideAOTLinkedClassBulkLoader::finish_loading_javabase_classes().Since this is a potential issue even for the JDK mainline, we should fix it (and also backport to JDK 25).
Thanks to @iwanowww for providing the fix!
Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/25766/head:pull/25766$ git checkout pull/25766Update a local copy of the PR:
$ git checkout pull/25766$ git pull https://git.openjdk.org/jdk.git pull/25766/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 25766View PR using the GUI difftool:
$ git pr show -t 25766Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/25766.diff
Using Webrev
Link to Webrev Comment