RFR: 8361725: Do not load Java agent with "-Xshare:dump -XX:+AOTClassLinking"
Calvin Cheung
ccheung at openjdk.org
Fri Jul 18 16:59:59 UTC 2025
On Thu, 17 Jul 2025 22:18:44 GMT, Ioi Lam <iklam at openjdk.org> wrote:
> When `-XX:+AOTClassLinking` is enabled when dumping CDS archives with `java -Xshare:dump`, we have more stringent restriction of what Java code can be executed -- if arbitrary Java code is executed, it may produce side effects that cannot be handled when archiving Java heap objects. This usually leads to cdsHeapVerifier.cpp reporting suspicious references to static fields that are not known to be safe.
>
> We already avoid loading Java agents when dumping AOT caches (which are just enhanced CDS archives with more optimizations), we should do the same thing for `java -Xshare:dump -XX:+AOTClassLinking`.
>
> After this PR, we still allow Java agents for `java -Xshare:dump -XX:-AOTClassLinking`, as that is required by some CDS tests. In a subsequent RFE, we will fix these CDS tests so Java agents are always disabled for `java -Xshare:dump`. See [JDK-8362561](https://bugs.openjdk.org/browse/JDK-8362561)
Looks good.
test/hotspot/jtreg/runtime/cds/appcds/aotCache/JavaAgentTransformer.java line 41:
> 39: savedInstrumentation = instrumentation;
> 40:
> 41: LOGGER.log(Level.WARNING, "JavaAgentTransformer::premain() is finished");
Just curious why not use `Level.INFO` instead. Is it because the log won't be printed with product build if `Level.INFO` is used?
-------------
Marked as reviewed by ccheung (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/26374#pullrequestreview-3034175116
PR Review Comment: https://git.openjdk.org/jdk/pull/26374#discussion_r2216471537
More information about the hotspot-dev
mailing list