RFR (S) 8042796: jvmtiRedefineClasses.cpp: guarantee(false) failed: OLD and/or OBSOLETE method(s) found
Daniel D. Daugherty
daniel.daugherty at oracle.com
Tue May 13 17:42:56 UTC 2014
>
http://cr.openjdk.java.net/~sspitsyn/webrevs/2014/hotspot/8042796-JVMTI-OLD.1
src/share/vm/oops/method.hpp
No comments.
src/share/vm/utilities/accessFlags.hpp
line 57: JVM_ACC_ON_STACK = 0x00080000, //
RedefinedClasses() is used on the stack
Typos: 'RedefinedClasses() is' -> 'RedefineClasses() was'
Not your typos, but would you mind fixing them?
src/share/vm/oops/cpCache.cpp
line 501: (!f1_as_method()->is_old() &&
!f1_as_method()->is_obsolete() ||
line 502 f1_as_method()->is_deleted()));
Perhaps this would a little more clear (added parens and reformatted):
line 501: ((!f1_as_method()->is_old() &&
!f1_as_method()->is_obsolete()) ||
line 502 f1_as_method()->is_deleted()));
Or this one:
line 501: (f1_as_method()->is_deleted() ||
line 502: (!f1_as_method()->is_old() &&
!f1_as_method()->is_obsolete())));
src/share/vm/prims/jvmtiRedefineClasses.cpp
No comments
Thumbs up even if you don't want to juggle the logic
in cpCache.cpp...
Minor clarification:
> - A regression introduced by the fix of:
> https://bugs.openjdk.java.net/browse/JDK-7182152
The above fix modified the existing VM_RedefineClasses::check_class()
code to use guarantee() instead of assert() and also modified the
logic to catch "obsolete" in addition to "old" entries. I strongly
suspect that the code before JDK-7182152 would still have fired an
assert in the presence of deleted methods so the regression is
probably older than JDK-7182152. Don't know if it is worth fixing
that far back though...
Dan
On 5/9/14 12: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 serviceability-dev
mailing list