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.spit...@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