[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