[10] RFR (S): 8196022: java.lang.VerifyError is thrown instead of java.lang.IllegalAccessError
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Wed Jan 31 04:44:40 UTC 2018
>>> Okay. I'm quite concerned that 8188145 has been fixed so late in the
>>> JDK 10 release cycle. Aligning the implementation with the spec is
>>> generally the intention, but you have to evaluate the impact of the
>>> change in behaviour. How long have we been doing the wrong thing? How
>>> much code might depend on us doing the wrong thing? This could have
>>> unexpected consequences - as per the current issue!
>>
>> I haven't explored initial implementation (which went into JDK7 GA),
>> but current code is mostly there since 7u40. There were some
>> adjustments in JDK8 (e.g., AbstractMethodError instead of
>> IllegalAccessError).
>>
>> But, most of the time, those errors were hidden by
>> BootstrapMethodError, because invokedynamic wrapped all errors. It was
>> changed in 9 (see JDK-8166974 [1]) and then JDK-8188145 was reported:
>> there was a discrepancy in behavior between different JVM
>> implementations noticed.
>>
>> So, considering significant behavioral change in 9, the risk some code
>> depends on previous behavior is low. Otherwise, most likely, it is
>> already broken since 9 due to by JDK-8166974.
>
> Okay. I find these issues quite confusing and it's hard for me to see
> the complete picture. So I'll just step out of the way. :)
Thanks for valuable feedback, David!
Best regards,
Vladimir Ivanov
More information about the hotspot-runtime-dev
mailing list