[jdk16u] RFR: 8267345: VM crashes during dumping classlist with -Xshare:dump option

Ioi Lam iklam at openjdk.java.net
Wed May 19 21:15:43 UTC 2021


On Wed, 19 May 2021 19:46:58 GMT, Yumin Qi <minqi at openjdk.org> wrote:

> Hi, Please review
>   The problem is caused by JDK-8247536: Support for pre-generated java.lang.invoke classes in CDS static archive
>    Usually the dump with an appointed class list file, -XX:SharedClassListFile=<classlist>, the 'classlist' is collected by pre-run the application with -XX:DumpLoadedClassList, so it is rare case using -Xshare:dump and -XX:DumpLoadedClassList together, though we can do that.
>    It is reproducible by run
>    java -Xshare:dump -XX:DumpLoadedClassList=<any valid file name>
>    The problem happened when regenerating lambda form invoker's holder classes, with which the re-generated class stream without a source associated (class is generated on fly).  Referencing to NULL source failed. Fix checks if source is valid.
> 
> Tests: tier1,tier2,tier3,tier4
> 
> Thanks
> Yumin

Changes requested by iklam (Reviewer).

src/hotspot/share/oops/instanceKlass.cpp line 4244:

> 4242:         // These classes can't be loaded from the archive during runtime.
> 4243:         if (!stream->from_boot_loader_modules_image() &&
> 4244:             (stream->source() == NULL || strncmp(stream->source(), "jrt:", 4) != 0)) {

I think the following block on line 4256 should also be changed

    if (skip && stream->source() != NULL) {
      tty->print_cr("skip writing class %s from source %s to classlist file",
                    name()->as_C_string(), stream->source());
    } else {

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

PR: https://git.openjdk.java.net/jdk16u/pull/119


More information about the jdk-updates-dev mailing list