-
Notifications
You must be signed in to change notification settings - Fork 40
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
Support CRaC with Java agents that use appendToBootstrapClassLoaderSearch #162
base: crac
Are you sure you want to change the base?
Support CRaC with Java agents that use appendToBootstrapClassLoaderSearch #162
Conversation
…arch Instrumentation.appendToBootstrapClassLoaderSearch(jarfile) creates a file descriptor for the jarfile in native code that cannot be closed or claimed from Java. These FDs can be ignored and left to the CRaC engine.
Hi @mcculls, welcome to this OpenJDK project and thanks for contributing! We do not recognize you as Contributor and need to ensure you have signed the Oracle Contributor Agreement (OCA). If you have not signed the OCA, please follow the instructions. Please fill in your GitHub username in the "Username" field of the application. Once you have signed the OCA, please let us know by writing If you already are an OpenJDK Author, Committer or Reviewer, please click here to open a new issue so that we can record that fact. Please use "Add GitHub user mcculls" as summary for the issue. If you are contributing this work on behalf of your employer and your employer has signed the OCA, please let us know by writing |
❗ This change is not yet ready to be integrated. |
Hi @mcculls , the fix looks good - do you think you could accompany it with a test case? |
Hi @rvansa - yes I can add a test case |
/covered |
Thank you! Please allow for a few business days to verify that your employer has signed the OCA. Also, please note that pull requests that are pending an OCA check will not usually be evaluated, so your patience is appreciated! |
ClassPathEntry* e = first_append_entry(); | ||
while (e != nullptr) { | ||
if (strcmp(e->name(), path) == 0) { | ||
return true; | ||
} | ||
e = e->next(); | ||
} |
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.
Just a nitpick:
ClassPathEntry* e = first_append_entry(); | |
while (e != nullptr) { | |
if (strcmp(e->name(), path) == 0) { | |
return true; | |
} | |
e = e->next(); | |
} | |
for (ClassPathEntry* e = first_append_entry(); e != nullptr; e = e->next()) { | |
if (strcmp(e->name(), path) == 0) { | |
return true; | |
} | |
} |
Instrumentation.appendToBootstrapClassLoaderSearch(jarfile)
ends up creating a file descriptor for the jarfile in native code that cannot be closed or claimed from Java:https://github.com/openjdk/jdk/blob/jdk-25%2B2/src/hotspot/share/prims/jvmtiEnv.cpp#L671
These FDs can be ignored and left to the CRaC engine.
Without this change you cannot use CRaC with Java agents that call
appendToBootstrapClassLoaderSearch
, unless you use-XX:CRAllowedOpenFilePrefixes
as a workaround.Progress
Error
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/crac.git pull/162/head:pull/162
$ git checkout pull/162
Update a local copy of the PR:
$ git checkout pull/162
$ git pull https://git.openjdk.org/crac.git pull/162/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 162
View PR using the GUI difftool:
$ git pr show -t 162
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/crac/pull/162.diff