2-nd round 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
Fri Jan 2 22:23:11 UTC 2015


Coleen,

Please, find new open webrev here:
http://cr.openjdk.java.net/~sspitsyn/webrevs/2015/hotspot/8068162-JVMTI-old.2/

I've added a separate helper class in the VM_RedefineClasses and new 
method in the klassItable klass.
TBD: still need to run the SVC tests listed in the first email.

I'm on vacation from today till Jan 9 but will try to reply on emails in 
non-active mode.

Thanks,
Serguei


On 12/31/14 10:50 AM, serguei.spitsyn at oracle.com wrote:
> 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/20150102/c7385157/attachment.html>


More information about the serviceability-dev mailing list