RFR (xs) 8166203 NoClassDefFoundError should not be thrown if class is in_error_state

Ioi Lam ioi.lam at oracle.com
Wed Oct 12 16:09:23 UTC 2016


David, Serguei & Coleen,

Thanks for the comments. I will fix the test by removing the try .. 
catch block.

- Ioi

On 10/12/16 5:17 AM, Coleen Phillimore wrote:
> http://cr.openjdk.java.net/~iklam/jdk9/8166203_init_state_error_bug/test/runtime/lambda-features/InterfaceInitializationStates.java.udiff.html 
>
>
> Same comment as the others.
>
> Just take out the try block for Iunlinked.
>
> Thank you for fixing this!
> Coleen
>
>
> On 10/12/16 4:08 AM, serguei.spitsyn at oracle.com wrote:
>> Hi Ioi,
>>
>> The fix looks good to me.
>> But I agree with David below that the catch statement is somewhat 
>> confusing.
>> The test needs to fail in such a case with a message like "Unexpected 
>> NoClassDefFoundError <...>".
>>
>> Thanks,
>> Serguei
>>
>>
>>
>> On 10/11/16 22:58, David Holmes wrote:
>>> Hi Ioi,
>>>
>>> On 12/10/2016 2:47 PM, Ioi Lam wrote:
>>>> https://bugs.openjdk.java.net/browse/JDK-8166203
>>>> http://cr.openjdk.java.net/~iklam/jdk9/8166203_init_state_error_bug/
>>>>
>>>> Summary:
>>>>
>>>> Kudos to Coleen for noticing the bug.
>>>>
>>>> When dumping the CDS archive, we would throw NoClassDefFoundError 
>>>> inside
>>>> InstanceKlass::link_class_impl() if the current class is 
>>>> in_error_state.
>>>> This was only intended to be a convenient way to deal with 
>>>> verification
>>>> errors during CDS dumping time. However, if the code is executed in
>>>> normal VM execution time, it would violate the JLS.
>>>>
>>>> The fix is to throw the NoClassDefFoundError only when
>>>> DumpSharedSpaces==true, to avoid affecting normal VM execution.
>>>
>>> Fix looks fine.
>>>
>>> Test change is somewhat confusing. What bug does this still refer to?
>>>
>>>  160         try {
>>>  161             boolean bb = Iunlinked.v;
>>>  162         } catch(NoClassDefFoundError e) {
>>>  163             System.out.println("NoClassDefFoundError thrown 
>>> because of bug");
>>>  164         }
>>>
>>> Either the try block should complete exceptionally or the catch 
>>> block, to indicate a failure.
>>>
>>> Thanks,
>>> David
>>>
>>>
>>>> Thanks
>>>> - Ioi
>>>>
>>
>



More information about the hotspot-runtime-dev mailing list