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
Wed Jan 14 05:47:52 UTC 2015
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