Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8066670

-XX:+PrintSharedArchiveAndExit does not exit the VM when the archive is invalid

XMLWordPrintable

    • b44

        When JDK-8046070 was integrated to JDK9 and 8u40, a merge error cause incorrect handling of -XX:+PrintSharedArchiveAndExit.

        If the archive is valid, the JVM quits immediately after checking the validity of the archive. This is expected behavior.

        However, if the archive is invalid, after checking the validity of the archive, the JVM would continue executing with CDS disabled. The expected behavior is that the JVM should quit immediately.

        $ /tmp/8u40/bin/java -version
        java version "1.8.0_40-ea"
        Java(TM) SE Runtime Environment (build 1.8.0_40-ea-b17)
        Java HotSpot(TM) 64-Bit Server VM (build 25.40-b21, mixed mode)
        $ chmod a+w /tmp/8u40/jre/lib/amd64/server/
        $ /tmp/8u40/bin/java -Xshare:dump
        Allocated shared space: 37871616 bytes at 0x0000000800000000
        Loading classes to share ...
        Preload Warning: Cannot find java/lang/UNIXProcess$2
        Preload Warning: Cannot find java/lang/UNIXProcess$3
        Preload Warning: Cannot find java/lang/UNIXProcess$4
        Preload Warning: Cannot find java/lang/UNIXProcess$ProcessReaperThreadFactory
        Preload Warning: Cannot find java/lang/UNIXProcess$ProcessReaperThreadFactory$1
        Preload Warning: Cannot find javax/swing/JComponent$2
        Preload Warning: Cannot find javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue
        Preload Warning: Cannot find javax/swing/plaf/metal/MetalLookAndFeel$MetalLazyValue$1
        Preload Warning: Cannot find javax/swing/text/AbstractDocument$InsertStringResult
        Preload Warning: Cannot find sun/awt/X11/XErrorHandler$XErrorHandlerWithFlag
        Preload Warning: Cannot find sun/awt/X11/XErrorHandler$XShmAttachHandler
        Preload Warning: Cannot find sun/awt/X11/XToolkit$2$1
        Preload Warning: Cannot find sun/java2d/Disposer$2
        Loading classes to share: done.
        Rewriting and linking classes ...
        Rewriting and linking classes: done
        Number of classes 2454
            instance classes = 2440
            obj array classes = 6
            type array classes = 8
        Calculating fingerprints ... done.
        Removing unshareable information ... done.
        Shared Lookup Cache Table Buckets = 8216 bytes
        Shared Lookup Cache Table Body = 65240 bytes
        ro space: 6991720 [ 36.2% of total] out of 16777216 bytes [41.7% used] at 0x0000000800000000
        rw space: 10720624 [ 55.4% of total] out of 16777216 bytes [63.9% used] at 0x0000000801000000
        md space: 1591504 [ 8.2% of total] out of 4194304 bytes [37.9% used] at 0x0000000802000000
        mc space: 34053 [ 0.2% of total] out of 122880 bytes [27.7% used] at 0x0000000802400000
        total : 19337901 [100.0% of total] out of 37871616 bytes [51.1% used]

        $ /tmp/8u40/bin/java -Xshare:on -version
        java version "1.8.0_40-ea"
        Java(TM) SE Runtime Environment (build 1.8.0_40-ea-b17)
        Java HotSpot(TM) 64-Bit Server VM (build 25.40-b21, mixed mode, sharing)


        $ /tmp/8u40/bin/java -Xshare:on -XX:+PrintSharedArchiveAndExit -version
        [type=BOOT Expecting -Dsun.boot.class.path=/tmp/8u40/jre/lib/resources.jar:/tmp/8u40/jre/lib/rt.jar:/tmp/8u40/jre/lib/sunrsasign.jar:/tmp/8u40/jre/lib/jsse.jar:/tmp/8u40/jre/lib/jce.jar:/tmp/8u40/jre/lib/charsets.jar:/tmp/8u40/jre/lib/jfr.jar:/tmp/8u40/jre/classes]
        [ok]
        [type=NON_EXIST Expecting that /tmp/8u40/jre/lib/sunrsasign.jar does not exist]
        [ok]
        [type=NON_EXIST Expecting that /tmp/8u40/jre/classes does not exist]
        [ok]
        [type=REQUIRED Expecting that file /tmp/8u40/jre/lib/meta-index must exist and is not altered]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/resources.jar]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/rt.jar]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/jsse.jar]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/jce.jar]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/charsets.jar]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/jfr.jar]
        [ok]
        archive is valid

        ^---- NOTE: version info is not printed. This is correct.


        # make the archive invalid by changing timestamp of rt.jar
        $ touch /tmp/8u40/jre/lib/rt.jar
        $ /tmp/8u40/bin/java -Xshare:on -XX:+PrintSharedArchiveAndExit -version
        [type=BOOT Expecting -Dsun.boot.class.path=/tmp/8u40/jre/lib/resources.jar:/tmp/8u40/jre/lib/rt.jar:/tmp/8u40/jre/lib/sunrsasign.jar:/tmp/8u40/jre/lib/jsse.jar:/tmp/8u40/jre/lib/jce.jar:/tmp/8u40/jre/lib/charsets.jar:/tmp/8u40/jre/lib/jfr.jar:/tmp/8u40/jre/classes]
        [ok]
        [type=NON_EXIST Expecting that /tmp/8u40/jre/lib/sunrsasign.jar does not exist]
        [ok]
        [type=NON_EXIST Expecting that /tmp/8u40/jre/classes does not exist]
        [ok]
        [type=REQUIRED Expecting that file /tmp/8u40/jre/lib/meta-index must exist and is not altered]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/resources.jar]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/rt.jar]
        [Timestamp mismatch]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/jsse.jar]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/jce.jar]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/charsets.jar]
        [ok]
        [Checking shared classpath entry: /tmp/8u40/jre/lib/jfr.jar]
        [ok]
        [Opened /tmp/8u40/jre/lib/rt.jar]
        java version "1.8.0_40-ea"
        Java(TM) SE Runtime Environment (build 1.8.0_40-ea-b17)
        Java HotSpot(TM) 64-Bit Server VM (build 25.40-b21, mixed mode)

        ^---- continues to execute after validation, and runs with CDS disabled.

              iklam Ioi Lam
              iklam Ioi Lam
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: