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
Sat Jan 3 00:13:19 UTC 2015


Hi Coleen,

Thank you for the quick response!

On 1/2/15 3:04 PM, Coleen Phillimore wrote:
>
> Hi Serguei,
>
> I don't see why you don't add a || the_class_oop == unsafe to the if 
> statement I pointed out in the bug.   Then you don't have to walk the 
> CLDG classes again.

Do you mean something like in the webrev below ?
http://cr.openjdk.java.net/~sspitsyn/webrevs/2015/hotspot/8068162-JVMTI-old.3/


I like this!


>
> Have a nice vacation!

Thanks!
Serguei

>
> Thanks,
> Coleen
>
> On 1/2/15, 5:23 PM, serguei.spitsyn at oracle.com wrote:
>> 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/c92015c9/attachment.html>


More information about the serviceability-dev mailing list