4-th 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 16 19:14:09 UTC 2015
Dan, David H. or David C.,
May I ask one of you to look at the webrev below?
The issue itself is a little bit tricky, so it is not easy to review
despite the small size.
Coleen,
Does the webrev matches what we discussed with you?
Do you give me a thumbs up?
Thanks,
Serguei
May I ask
On 1/13/15 9:47 PM, serguei.spitsyn at oracle.com wrote:
> Please, review the fix for:
> https://bugs.openjdk.java.net/browse/JDK-8068162
>
>
> Open webrevs:
> http://cr.openjdk.java.net/~sspitsyn/webrevs/2015/hotspot/8068162-JVMTI-old.4/
>
> http://cr.openjdk.java.net/~sspitsyn/webrevs/2015/jdk/8068162-Test-IsModifiableAgent/
>
>
>
> 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.
> In fact, it happens for two interfaces that purhaps are
> auto-generated:
> java/nio/CharBuffer
> java/nio/HeapCharBuffer
>
> 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).
> Coleen told me that a similar approach is going to be implemented
> for some vtable entries.
> Coleen, thanks for suggesting a better fix for this issue!
>
> The fix is to replace the old Unsafe method in the itable/vtable
> 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