On Wed, 14 May 2025 21:03:35 GMT, Ioi Lam <ik...@openjdk.org> wrote:

>> https://openjdk.org/jeps/483 mentions:
>> 
>>> To enjoy the benefits of the AOT cache generated during a training run, the 
>>> training run and all subsequent runs must be essentially similar. [...] All 
>>> runs must not use JVMTI agents that can arbitrarily rewrite classfiles  
>>> using ClassFileLoadHook.
>> 
>> However, when *any* java agent is specified in the training run, the JVM 
>> fails at start-up. E.g.,
>> 
>> 
>> $ java -XX:AOTMode=record -javaagent:agent.jar -cp app.jar App
>> Error occurred during CDS dumping
>> Must enable AllowArchivingWithJavaAgent in order to run Java agent during 
>> CDS dumping
>> 
>> 
>> With the AOT cache, the main concern for JVMTI agents is that they can 
>> modify the contents of loaded Java classes. If we store such modified 
>> classes into the AOT cache, their contents will no longer match the original 
>> class files (from application JAR files, etc). As a result, when using the 
>> AOT cache in production runs, the application may have unexpected behavior.
>> 
>> With this PR, we allow JVMTI agents in the AOT workflow. To address the 
>> above concern, we ensure that JVMTI agents cannot affect the contents of AOT 
>> cache:
>> 
>> -  In training runs (`java -XX:AOTMode=record`), JVMTI agents are allowed, 
>> but the AOT configuration file should filter out classes that are 
>> transformed by the agents. This can be checking 
>> `InstanceKlass::has_been_redefined()` and 
>> `ClassFileStream::from_class_file_load_hook()`.
>> 
>> - In the assembly phase (`java -XX:AOTMode=record`), agents can be specified 
>> in the command-line. However, since the assembly phase doesn't execute any 
>> application logic, we will also not load any of the specified agents. 
>> Therefore, the agents cannot affect the contents of the AOT cache created in 
>> the assembly phase.
>
> Ioi Lam has updated the pull request with a new target base due to a merge or 
> a rebase. The incremental webrev excludes the unrelated changes brought in by 
> the merge/rebase. The pull request contains five additional commits since the 
> last revision:
> 
>  - Merge branch 'master' into 8356693-aot-assembly-phase-fails-with-java-agent
>  - @ashu-mehra comments
>  - fixed whitespace
>  - 8356693: AOT assembly phase fails with -javaagent
>  - step1

Marked as reviewed by asmehra (Committer).

-------------

PR Review: https://git.openjdk.org/jdk/pull/25170#pullrequestreview-2841532608

Reply via email to