RFR 8016325: JVM hangs verifying system dictionary

Coleen Phillimore coleen.phillimore at oracle.com
Mon Jun 24 14:20:15 PDT 2013


Thanks Jon for looking at this.

On 06/24/2013 02:21 PM, Jon Masamitsu wrote:
> Coleen,
>
> http://cr.openjdk.java.net/~coleenp/8016325/src/share/vm/oops/klass.cpp.frames.html 
>
>
> 650 void Klass::verify_on(outputStream* st, bool in_dictionary) {
>
>
> "in_dictionary" is not used, right?

It isn't used but I forgot to change the name of the parameter to 
check_dictionary which has the opposite sense.
>
> http://cr.openjdk.java.net/~coleenp/8016325/src/share/vm/oops/klass.hpp.frames.html 
>
>
> So do you need this change to add the parameter "check_dictionary"?
>>   706   virtual void verify_on(outputStream* st, bool 
>> check_dictionary = true);
>>   707   void verify(bool check_dictionary = true) { verify_on(tty, 
>> check_dictionary); }
>>   708
> If you do, is the "virtual" on 706 needed?  And are the number of 
> lines you would
> have to change if "check_dictionary" does not have a default  (not a 
> fan of defaults),
> so large?

Yes, it's needed because then InstanceKlass::verify_on will override 
this versions.  It won't if the parameters don't match.   We definitely 
want verify_on() to be virtual.

I'm afraid the number of lines would be pretty large if there wasn't a 
default parameter.

>
> What's the rule about when to use is_metaspace_object() to
> do an assertion check?

The rule I applied was to use this test if the metadata object was 
coming from some location where non-metadata could also be stored by 
mistake (like the frame_x86.hpp example).   In the verification code the 
compiler's static type checking code can do the job for us so that's why 
I removed them.

Thanks,
Coleen

>
> Rest looks good.
>
> Jon
>
>
> On 6/21/13 9:35 AM, Coleen Phillimore wrote:
>> Summary: Minimize redundant verifications of Klasses.
>>
>> Also removed is_metadata() because checking that metadata is not in 
>> the Java heap doesn't make sense anymore and could slow down 
>> verification also.   Some cases that aren't statically checked by the 
>> compiler now call is_metaspace_object() under assert for verification.
>>
>> Tested by nsk.quick.testlist, and failing SQE test.
>>
>> open webrev at http://cr.openjdk.java.net/~coleenp/8016325/
>> bug link at http://bugs.sun.com/view_bug.do?bug_id=8016325
>> local bug link https://jbs.oracle.com/bugs/browse/JDK-8016325
>>
>> thanks,
>> Coleen
>



More information about the hotspot-dev mailing list