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

serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Wed Dec 31 18:50:10 UTC 2014


Colleen,

Thank you for a quick review.
You are right, this is a good catch!
I need to rework my fix as it is incorrect in general.


On 12/31/14 10:40 AM, Coleen Phillimore wrote:
>
> 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.

The Unsafe::throw_illegal_access is added to other itables, not to the 
one that belongs to the class Unsafe.

Thanks,
Serguei


>
> 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
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20141231/e44ebfa8/attachment.html>


More information about the serviceability-dev mailing list