On Wed, 9 Mar 2022 11:45:59 GMT, David Holmes <dhol...@openjdk.org> wrote:
>> Ioi Lam has updated the pull request incrementally with one additional >> commit since the last revision: >> >> Fixed zero build > > The "heap dump" aspect of this is not something I'm familiar with, but if the > threads don't affect the list of classes dumped, they surely must affect what > is in the heap dump otherwise their execution would not be an issue. So you > must be sacrificing something by not having these threads start. @dholmes-ora That something is "sacrificed" does not follow from that something is "different". The list of classes to dump is specified in the lib/classlist file, which is generated during the build. The process of creating this involves running a suitable "exercise most important parts" java program, and logging the classes loaded. This class file is then post-processed (sorted) to make sure it is reproducible for the same JDK code base. As Ioi say, in this case threads are started freely, and may run in any non-deterministic order. At the next stage, we take this file (which is just done implicitly by -Xshare:dump), and generate the actual CDS archive, classes.jsa. Now it turns out this generation is non-deterministic. And Ioi's analysis is that this is due to thread non-determinism. So if we just disable threads during the dump process (where we are not really running the JVM "actually" -- it's a special mode, where we don't even have a Java program to run!), there's no harm in that. ------------- PR: https://git.openjdk.java.net/jdk/pull/7748