RFR 8163969: Cyclic interface initialization causes JVM crash

Coleen Phillimore coleen.phillimore at oracle.com
Tue Sep 20 20:25:06 UTC 2016



On 9/20/16 3:00 PM, Lois Foltan wrote:
> Hi Coleen,
>
> Code looks good.  Can you just improve upon this comment below, 
> InstanceKlass::link_class_impl, to describe who relies on this 
> erroneous check currently and why it can't be removed as part of your 
> fix.

Lois, Thanks for your help on this bug.

I actually didn't track down the CDS code more to know why they set 
classes with initialization error or what they do with them afterwards.  
I guess I could be vague:


   // check for error state.
   // This is checking for the wrong state.  If the state is 
initialization_error,
   // then this class *was* linked.  The CDS code does a try_link_class 
and uses
   // initialization_error to mark classes to not include in the archive 
during
   // DumpSharedSpaces.

Thanks,
Coleen
>
> Thanks,
> Lois
>
> On 9/19/2016 2:46 AM, David Holmes wrote:
>> Hi Coleen,
>>
>> As per our extensive emails discussions this looks good to me.
>>
>> One query:
>>
>>   bool InstanceKlass::link_class_impl(
>>       instanceKlassHandle this_k, bool throw_verifyerror, TRAPS) {
>> !   // check for error state. This is checking for the wrong state.
>> !   // If initialization_error, then this class *was* linked.
>>
>> I'm assuming you are just flagging this for now and it will be fixed 
>> later.
>>
>> One comment - in a fix I am working on 
>> has_default_methods/declares_default_methods will be renamed to 
>> has_nonstatic_concrete_methods/declares_nonstatic_concrete_methods as 
>> the use of the word "default" is inappropriate in those contexts as 
>> it applies to both default method and private interface methods.
>>
>> Thanks,
>> David
>>
>> On 17/09/2016 1:22 AM, Coleen Phillimore wrote:
>>> Summary: Fix interface initialization to follow spec: interface
>>> initializations do not set initialization state of interfaces that
>>> extend them.
>>>
>>> Tested with: all hotspot jtreg tests, co-located nsk tests,
>>> non-colocated nsk tests, and jck tests.
>>>
>>> open webrev at http://cr.openjdk.java.net/~coleenp/8163969.01/webrev
>>> bug link https://bugs.openjdk.java.net/browse/JDK-8163969
>>>
>>> Thanks,
>>> Coleen
>



More information about the hotspot-runtime-dev mailing list