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

Missing zero length check before repne scas in check_klass_subtype_slow_path()

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Fixed
    • Icon: P4 P4
    • hs19
    • hs12
    • hotspot
    • None
    • b06
    • sparc
    • solaris_10
    • Not verified

        Z flag value will not be set by 'repne' if RCX == 0 since 'repne' does not change flags.

        Setting Z = 1 before repne_scanl() in check_klass_subtype_slow_path():

             // pointer were to sneak in here. Note that we have already loaded the
             // Klass::super_check_offset from the super_klass in the fast path,
             // so if there is a null in that register, we are already in the afterlife.
        + push(rax);
        + xorq(rax,rax); // Set Z = 1
        + pop(rax);
             repne_scanl();

        will cause next exception:

        % java -Xmx128M -jar GCBasher.jar -time:300
        Exception in thread "main" java.lang.IncompatibleClassChangeError
                at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:153)
                at java.lang.StringCoding.decode(StringCoding.java:193)
                at java.lang.String.<init>(String.java:452)
                at java.util.jar.Attributes.read(Attributes.java:418)
                at java.util.jar.Manifest.read(Manifest.java:199)
                at java.util.jar.Manifest.<init>(Manifest.java:69)
                at java.util.jar.JarFile.getManifestFromReference(JarFile.java:177)
                at java.util.jar.JarFile.getManifest(JarFile.java:163)
        j

              kvn Vladimir Kozlov
              kvn Vladimir Kozlov
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: