Fix proposal: JDK-8219378 NPE in ReflectionFactory.newMethodAccessor when langReflectAccess not initialized

Mandy Chung mandy.chung at oracle.com
Fri Feb 22 18:15:52 UTC 2019


Hi Andrew,

Thanks for the stack trace of the issue triggering this.

It seems to me that Modifier::<clinit> isn't the right place
to setLangReflectAccess shared secret.  It might have assumed
that Modifier should have been initialized when Field/Method
or other AccessibleObject is instantiated which isn't true
since the modifiers field is an int.

While the fix looks okay, would you mind trying a different fix
moving Modifier::<clinit> to AccessibleObject?  See this resolves
the issue when running on J9?

Mandy

On 2/22/19 12:49 AM, Andrew Leonard wrote:
> Hi Roger,
> I had a think about this and a testcase will be difficult, as it was found
> during OpenJ9 testing and occured during VM bootstrap, feel free to read
> further details here:
> https://github.com/eclipse/openj9/issues/3399#issuecomment-459004840
> So the issue was discovered due to the bootstrap behaviour, it was not
> observed with Hotspot, however given the obvious missing initialization
> check logic in the class it's not to say there's an untested route with
> Hotspot that could hit it... I'm not sure how I could scaffold a jtreg
> test to replicate the same?
> Thanks
> Andrew


More information about the core-libs-dev mailing list