RFR (S) 8042796: jvmtiRedefineClasses.cpp: guarantee(false) failed: OLD and/or OBSOLETE method(s) found
Coleen Phillimore
coleen.phillimore at oracle.com
Tue May 13 23:17:02 UTC 2014
Serguei,
I don't know if this is the right fix. We shouldn't have deleted
methods in the cpCache because there's no way to keep these Method*s
from being deallocated. I thought AdjustCpoolCacheAndVtable =>
ConstantPoolCache::adjust_method_entries should fix these entries. For
deleted methods, shouldn't their cpCache entries be set to unresolved?
Which class had the deleted methods? The one being redefined?
It looks like the code never did this. I think this is missing
functionality. Do we not have any tests that delete a method? Your
change should add a test anyway - there are class redefinition tests in
jdk/test/java/lang/instrument that can be adapted and we should probably
keep them all together there.
Thanks,
Coleen
On 5/9/14, 2:20 PM, serguei.spitsyn at oracle.com wrote:
> Please, review the fix for:
> https://bugs.openjdk.java.net/browse/JDK-8042796
>
>
> Open webrev:
> http://cr.openjdk.java.net/~sspitsyn/webrevs/2014/hotspot/8042796-JVMTI-OLD.1
>
>
> Summary:
>
> This is a Nightly Stabilization issue that was caused by a
> combination of two problems:
> - A regression introduced by the fix of:
> https://bugs.openjdk.java.net/browse/JDK-7182152
> - An SQE testbase infra regression:
> https://bugs.openjdk.java.net/browse/INTJDK-7611018
>
> A number of the vm.mlvm tests hits this guarantee taht was added by
> 7182152 (must be relaxed).
> The issue is with the deleted static private methods that are still
> present in the CP cache.
> The fix is to mark the deleted methods with the flag
> JVM_ACC_IS_DELETED and
> then use it to relax the guarantee condition.
>
>
> Testing:
> Running the failing tests: vm.mlvm.indy.func.jvmti
> In progress: nsk.jvmti, nsk.jdi, java.lang.instrument test runs on
> sparcv9 and amd64.
>
>
> Thanks,
> Serguei
More information about the hotspot-dev
mailing list