United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6973308 Missing zero length check before repne scas in check_klass_subtype_slow_path()
JDK-6973308 : Missing zero length check before repne scas in check_klass_subtype_slow_path()

Details
Type:
Enhancement
Submit Date:
2010-07-29
Status:
Closed
Updated Date:
2011-04-23
Project Name:
JDK
Resolved Date:
2011-04-23
Component:
hotspot
OS:
solaris_10
Sub-Component:
compiler
CPU:
sparc
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs12
Fixed Versions:
hs19 (b06)

Related Reports
Backport:
Backport:
Backport:
Backport:

Sub Tasks

Description
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

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/66c5dadb4d61
                                     
2010-07-30
PUBLIC COMMENTS

Instead of checking RCX for zero set Z = 0 (not equal) before 'repne' to indicate that class was not found when RCX == 0.

Verify r12_heapbase even in zero based case- these changes exposed this bug.
Also fixed printed free stack size in hs_err files. Added ability to abort VM only on the exception with specific message.
                                     
2010-07-30
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/66c5dadb4d61
                                     
2010-08-14



Hardware and Software, Engineered to Work Together