-
Notifications
You must be signed in to change notification settings - Fork 6.1k
8315130: java.lang.IllegalAccessError when processing classlist to create CDS archive #24223
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 tpushkin! A progress list of the required criteria for merging this PR into |
@TimPushkin 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 515 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. 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 (@iklam, @calvinccheung) but any other Committer may sponsor as well. ➡️ To flag this PR as ready for integration with the above commit message, type |
@TimPushkin The following labels will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command. |
Webrevs
|
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.
Hi Timofei, thanks for fixing this.
(Sorry I didn't notice this PR until now ...)
I have a suggestion for further simplification.
test/hotspot/jtreg/runtime/cds/appcds/customLoader/ClassFromClasspath.java
Outdated
Show resolved
Hide resolved
/reviewers 2 |
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.
I have one comment in CDS.java.
@TimPushkin this pull request can not be integrated into git checkout one-loader
git fetch https://git.openjdk.org/jdk.git master
git merge FETCH_HEAD
# resolve conflicts and follow the instructions given by git merge
git commit -m "Merge master"
git push |
Besides adding the warnings I noticed that |
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.
Found an issue on the RegUnregSuperTest.java.
test/hotspot/jtreg/runtime/cds/appcds/customLoader/RegUnregSuperTest.java
Outdated
Show resolved
Hide resolved
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 to me overall. I just have a request for cleaning up ClassListParser::check_supertype_overshadowing()
Sorry, had to pause working on this for some time because of other stuff. I believe I have addressed all the existing comments now. |
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.
LGTM.
Thanks for making the changes. Once this PR has 2 reviews and is final, I will run some tests in our test pipeline. |
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. Thanks!
Thank you!
@iklam It is final, please run the tests. |
/integrate |
@TimPushkin |
I have merged your PR with the latest repo and running tiers 1-4 in our CI. Waiting for the results now. |
Tests passed. |
Going to push as commit 46a12e7.
Your commit was automatically rebased without conflicts. |
@iklam @TimPushkin Pushed as commit 46a12e7. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
If a base class is package-private then its subclasses should have the same package name and defining class loader, otherwise
IllegalAccessError
is thrown when linking a subclass. Currently when dumping a static archive separateURLClassLoader
s are used for each unregistered classes' source. Thus if two unregistered classes, a package-private base class and a sub class, from the same package reside in different sourcesIllegalAccessError
will be thrown when linking the sub class. This can be unexpected because the app could have used a single class loader for both classes and thus not have seen the error — seeDifferentSourcesApp.java
from this patch for an example of such app.This patch fixes the issue by using a single class loader for all unregistered classes. CDS does not allow classes with the same name making such solution possible.
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/24223/head:pull/24223
$ git checkout pull/24223
Update a local copy of the PR:
$ git checkout pull/24223
$ git pull https://git.openjdk.org/jdk.git pull/24223/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 24223
View PR using the GUI difftool:
$ git pr show -t 24223
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/24223.diff
Using Webrev
Link to Webrev Comment