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

Daniel D. Daugherty daniel.daugherty at oracle.com
Tue Feb 5 10:03:51 PST 2013


On 2/5/13 10:50 AM, serguei.spitsyn at oracle.com wrote:
> Both tests look good, I do not see any issues yet.
> What is missed is a comment explaining what happened
> when the bug is not fixed and what correct behavior is expected.
> Maybe it'd make sense to put bad and good output into the comment,
> not everything, but the most important fragments.
> It would help a lot to understand what test is doing.
Serguei,

Thanks for the review!

I put sample failures for both tests into the bug (8007420) a couple
of days ago. I'd prefer not to clutter up the test with sample outputs
if that's OK with you.

Dan


>
>
> Thanks,
> Serguei
>
>
> On 2/1/13 3:55 PM, Daniel D. Daugherty wrote:
>> And here is the webrev for the new tests (relative to JDK8-T&L):
>>
>> http://cr.openjdk.java.net/~dcubed/8007420-webrev/0-jdk8-tl/
>>
>> As always, comments and suggestions are welcome.
>>
>> Dan
>>
>>
>> On 2/1/13 4:39 PM, Daniel D. Daugherty wrote:
>>> > There are two new tests that will be pushed to the JDK repos using
>>> > a different bug ID (not yet filed):
>>>
>>> New bug is now filed:
>>>
>>>     8007420 add test for 6805864 to com/sun/jdi, add test for 7182152
>>>             to java/lang/instrument
>>>     http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8007420
>>>     https://jbs.oracle.com/bugs/browse/JDK-8007420
>>>
>>> Of course, the tests cannot be pushed until the HSX changes have made
>>> it into a promoted build and thus available to JDK8-T&L.
>>>
>>> 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 hotspot-runtime-dev mailing list