RFR (XS) 8068162: jvmtiRedefineClasses.cpp: guarantee(false) failed: OLD and/or OBSOLETE method(s) found

Coleen Phillimore coleen.phillimore at oracle.com
Wed Dec 31 18:40:00 UTC 2014


The adjustment should be in klassItable::adjust_method_entries() not the 
checking function.  I don't think check_no_old_or_obsolete_entries is 
called in product mode.

I still don't see how the first klassItable::adjust_method_entries() 
missed this function.

Coleen

On 12/31/14, 12:42 PM, serguei.spitsyn at oracle.com wrote:
> Please, review the fix for:
>   https://bugs.openjdk.java.net/browse/JDK-8068162
>
>
> Open webrev:
> http://cr.openjdk.java.net/~sspitsyn/webrevs/2014/hotspot/8068162-JVMTI-old.1/ 
>
>
>
> Summary:
>
>    The sun.misc.Unsafe:throwIllegalAccessError() method is used in 
> place of a default
>    interface method in the itable if a default method was not defined 
> in the interface.
>
>    This approach creates a problem when the class sun.misc.Unsafe is 
> retransformed.
>    The Method* pointer to the old (redefined) method in the itable 
> triggers an assert
>    (see the hs_err log in the bug report).
>
>    The fix is to replace the old method in the itable with the latest 
> method version.
>
>
> Testing:
>   In progress: nsk.jdi.testlist, JTREG java/lang/instrument tests
>
>
> Thanks,
> Serguei
>



More information about the serviceability-dev mailing list