RFR 8016325: JVM hangs verifying system dictionary

Jon Masamitsu jon.masamitsu at oracle.com
Mon Jun 24 16:07:19 PDT 2013


On 6/24/13 2:20 PM, Coleen Phillimore wrote:
>
> 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.
I'm confused by that statement.
>>
>> 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.

Ok.
>
> I'm afraid the number of lines would be pretty large if there wasn't a 
> default parameter.
>
The clean coding book would not be happy.  Your call, but are you
sure you don't want to tidy it up now?

>>
>> 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.

Jon

>
> 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