JVM/TI code review request (XS and M) (7182152)

Karen Kinnear karen.kinnear at oracle.com
Mon Feb 4 07:19:53 PST 2013


Dan,

All 3 versions of the code looks good. Thank you for enabling the printing for product since
this type of problem is so hard to duplicate.

A small note, I think it would have been easier for the internal code logic
for the CPCE::check_no_old_or_obsolete_entries to reverse the true/false,
but no need to change. I would appreciate the comment from 
is_interesting_method_entry copied to check_no_old_or_obsolete_entries
about virtual and final that f2 contains a method ptr instead of a vtable index.

In the jdk8 version in cpCache.cpp you've added the is_valid checks for metadata.
For a future cleanup, do we need f2_as_vfinal_method and is_interesting_method_entry
to do that as well? 

Is redefineclasses supported in the MinimalVM? 

thanks,
Karen

On Feb 1, 2013, at 2:55 PM, Daniel D. Daugherty wrote:

> Greetings,
> 
> I have a fix for the following JVM/TI bug:
> 
>    7182152 Instrumentation hot swap test incorrect monitor count
>    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7182152
>    https://jbs.oracle.com/bugs/browse/JDK-7182152
> 
> The fix for the bug in the product code is one line:
> 
> src/share/vm/oops/klassVtable.cpp:
> 
> @@ -992,18 +1020,50 @@
>           // RC_TRACE macro has an embedded ResourceMark
>           RC_TRACE(0x00200000, ("itable method update: %s(%s)",
>             new_method->name()->as_C_string(),
>             new_method->signature()->as_C_string()));
>         }
> -        break;
> +        // cannot 'break' here; see for-loop comment above.
>       }
>       ime++;
>     }
>   }
> }
> 
> and is applicable to JDK7u10/HSX-23.6 and JDK7u14/HSX-24. Coleen
> already fixed the bug as part of the Perm Gen Removal (PGR) project
> in HSX-25. Yes, we found a 1-line bug fix buried in the monster PGR
> changeset. Many thanks to Coleen for her help in this bug hunt!
> 
> The rest of the code in the webrevs are:
> 
> - additional JVM/TI tracing code backported from Coleen's PGR changeset
> - additional JVM/TI tracing code added by me and forward ported to HSX-25
> - a new -XX:TraceRedefineClasses=16384 flag value for finding these
>  elusive old or obsolete methods
> - exposure of some printing code to the PRODUCT build so that the new
>  tracing is available in a PRODUCT build
> 
> You might be wondering why the new tracing code is exposed in a PRODUCT
> build. Well, it appears that more and more PRODUCT bits deployments are
> using JVM/TI RedefineClasses() and/or RetransformClasses() at run-time
> to instrument their systems. This bug (7182152) was only intermittently
> reproducible in the WLS environment in which it occurred so I made the
> tracing available in a PRODUCT build to assist in the hunt.
> 
> Raj from the WLS team has also verified that the HSX-23.6 version of
> fix resolves the issue in his environment. Thanks Raj!
> 
> Here are the URLs for the three webrevs:
> 
> http://cr.openjdk.java.net/~dcubed/7182152-webrev/0-hsx23.6/
> http://cr.openjdk.java.net/~dcubed/7182152-webrev/0-hsx24/
> http://cr.openjdk.java.net/~dcubed/7182152-webrev/0-hsx25/
> 
> I have run the following test suites from the JPDA stack on the
> JDK7u10/HSX-23.6 version of the fix with -XX:TraceRedefineClasses=16384
> specified:
> 
>    sdk-jdi
>    sdk-jdi_closed
>    sdk-jli
>    vm-heapdump
>    vm-hprof
>    vm-jdb
>    vm-jdi
>    vm-jdwp
>    vm-jvmti
>    vm-sajdi
> 
> The tested configs are:
> 
>    {Solaris-X86, WinXP}
>      X {Client VM, Server VM}
>      X {-Xmixed, -Xcomp}
>      X {product, fastdebug}
> 
> With the 1-liner fix in place, the new tracing code does not find any
> instances of this failure mode in any of the above test suites. Without
> the the 1-liner fix in place, the new tracing code finds one instance
> of this failure mode in the above test suites:
> 
>    test/java/lang/instrument/IsModifiableClassAgent.java
> 
> There are two new tests that will be pushed to the JDK repos using
> a different bug ID (not yet filed):
> 
>    test/com/sun/jdi/RedefineAbstractClass.sh
> test/java/lang/instrument/RedefineSubclassWithTwoInterfaces.sh
> 
> There will be a separate review request for the new tests.
> 
> I'm currently running the JPDA stack of tests on the JDK7u14/HSX-24
> and JDK8-B75/HSX-25 versions of the fix. That testing will likely
> take all weekend to complete.
> 
> Thanks, in advance, for any comments and/or suggestions.
> 
> Dan
> 



More information about the hotspot-runtime-dev mailing list