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

Karen Kinnear karen.kinnear at oracle.com
Wed Feb 6 11:54:51 PST 2013


Thank you Dan - this is much better and sets a good model for the rest of us.

thanks,
Karen

On Feb 6, 2013, at 9:05 AM, Daniel D. Daugherty wrote:

> Adding other alias and people back onto the thread...
> 
> Thanks for the re-review!
> 
> 
> On 2/6/13 6:41 AM, Coleen Phillimore wrote:
>> 
>> This is good that you added the INCLUDE_JVMTI.  I didn't think it'd add that much space, but it a good change.
> 
> I didn't think it would add much space either, but...
> 
> It gave me a chance to check out the MinimalVM stuff a bit and
> it serves to identify those pieces of code as being associated
> with JVM/TI.
> 
> Karen and Serguei, when you get the chance, please re-review.
> 
> Again, thanks for the re-review!
> 
> Dan
> 
> 
>> Thumbs up!
>> Coleen
>> 
>> On 2/6/2013 12:59 AM, Daniel D. Daugherty wrote:
>>> Greetings,
>>> 
>>> The JPDA stack testing finished with no new regressions on HSX-23.6,
>>> HSX-24 or HSX-25. The HSX-24 version of the fix has been pushed.
>>> 
>>> I've updated the HSX-25 version of the fix due to Karen's comments
>>> about the MinimalVM configuration in Code Review Round 1. In this
>>> latest round for HSX-25, I've made use of the INCLUDE_JVMTI define
>>> to limit the exposure of new tracing code to configurations that
>>> include JVM/TI support. The MinimalVM does not support JVM/TI so
>>> none of the new code needs to be included there. While I was at it,
>>> I also excluded some other JVM/TI RedefineClasses() support code
>>> from the MinimalVM config that I hadn't previously touched.
>>> 
>>> In short, none of the functionality has been changed in this round.
>>> Just the way it is built or not built has been changed.
>>> 
>>> Here is the URL for the latest HSX-25 webrev:
>>> 
>>> http://cr.openjdk.java.net/~dcubed/7182152-webrev/2-hsx25/
>>> 
>>> Thanks, in advance, for more comments, suggestions or questions.
>>> 
>>> Dan
>>> 
>>> 
>>> On 2/4/13 2:08 PM, Daniel D. Daugherty wrote:
>>>> Greetings,
>>>> 
>>>> I've updated the fix due to comments in Code Review Round 0.
>>>> 
>>>> Here is a summary of changes made to the various files:
>>>> 
>>>> src/share/vm/oops/cpCacheOop.cpp (HSX-23.6, HSX-24)
>>>> src/share/vm/oops/cpCache.cpp (HSX-25)
>>>> src/share/vm/oops/klassVtable.cpp
>>>>  - removed the new RC_TRACE_NO_CR() macro calls at Coleen's request;
>>>>    these files are outside of JVM/TI RedefineClasses proper so the
>>>>    tracing/debug style should not be dictated by JVM/TI RedefineClasses
>>>>    style that is currently in use
>>>>  - did not touch the existing RC_TRACE... macros in the file; removing
>>>>    the existing macro calls would be outside the scope of this bug
>>>> 
>>>> src/share/vm/oops/cpCacheOop.cpp (HSX-23.6, HSX-24)
>>>> src/share/vm/oops/cpCache.cpp (HSX-25)
>>>>  - copy a comment from ConstantPoolCacheEntry::is_interesting_method_entry()
>>>>    to ConstantPoolCacheEntry::check_no_old_or_obsolete_entries()
>>>> 
>>>> src/share/vm/oops/klassVtable.cpp
>>>>  - Copied the new comment intended to prevent the "break" from
>>>>    re-materializing again from klassItable::adjust_method_entries()
>>>>    to klassVtable::adjust_method_entries(); yes, I'm paranoid.
>>>> 
>>>> In the HSX-25 version only:
>>>> src/share/vm/oops/metadata.hpp
>>>>  - revert changes
>>>> 
>>>> src/share/vm/oops/cpCacheOop.cpp
>>>> src/share/vm/oops/klassVtable.cpp
>>>>  - wrap uses of is_valid() in NOT_PRODUCT macro as appropriate
>>>> 
>>>> Here are the URLs for the updated webrevs:
>>>> 
>>>> http://cr.openjdk.java.net/~dcubed/7182152-webrev/1-hsx23.6/
>>>> http://cr.openjdk.java.net/~dcubed/7182152-webrev/1-hsx24/
>>>> http://cr.openjdk.java.net/~dcubed/7182152-webrev/1-hsx25/
>>>> 
>>>> The JPDA stack testing that I started on Friday is still running on
>>>> WinXP so I'm blocked for checking the recompile due to these changes.
>>>> I'll start a recompile on Solaris X86, but that will take some time.
>>>> 
>>>> Thanks, in advance, for more comments, suggestions or questions.
>>>> 
>>>> Dan
>>>> 
>>>> 
>>>> 
>>>> On 2/1/13 12: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 serviceability-dev mailing list