RFR(S): 8246493: JDI stress/serial/mixed002 needs to use WhiteBox.deflateIdleMonitors support
Chris Plummer
chris.plummer at oracle.com
Mon Jun 29 19:49:46 UTC 2020
Looks good.
Chris
On 6/29/20 12:45 PM, Daniel D. Daugherty wrote:
> Chris and Serguei,
>
> Thanks for the fast reviews!!
>
> I generated the webrev in my "mach5" directory and that was baselined
> on the jdk-16+3 snapshot and that doesn't include the ProblemList change.
> Sigh... I have updated the repo to "current" and regenerated the webrev.
>
> test/hotspot/jtreg/ProblemList.txt now shows:
>
> @@ -126,11 +126,10 @@
> vmTestbase/nsk/monitoring/ThreadMXBean/ThreadInfo/Deadlock/JavaDeadlock001/TestDescription.java
> 8060733 generic-all
>
> vmTestbase/nsk/jdi/ThreadReference/stop/stop001/TestDescription.java
> 7034630 generic-all
> vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses021/TestDescription.java
> 8065773 generic-all
> vmTestbase/nsk/jdi/VirtualMachine/redefineClasses/redefineclasses023/TestDescription.java
> 8065773 generic-all
> -vmTestbase/nsk/jdi/stress/serial/mixed002/TestDescription.java
> 8246493 generic-all
>
> vmTestbase/nsk/jdb/eval/eval001/eval001.java 8221503 generic-all
>
> vmTestbase/metaspace/gc/firstGC_10m/TestDescription.java 8208250
> generic-all
> vmTestbase/metaspace/gc/firstGC_50m/TestDescription.java 8208250
> generic-all
>
> Thanks again for the fast reviews!!
>
> Dan
>
>
> On 6/29/20 3:41 PM, serguei.spitsyn at oracle.com wrote:
>> Hi Dan,
>>
>> The same as from Chris.
>> The ProblemList.txt has no changes.
>> Otherwise, it looks good.
>>
>> Thanks,
>> Serguei
>>
>>
>>
>> On 6/29/20 12:37, Chris Plummer wrote:
>>> Hi Dan,
>>>
>>> Something is wrong with ProblemList.txt. It doesn't show any
>>> changes, but I also don't see mixed002 in the file anymore.
>>>
>>> Otherwise the changes look good.
>>>
>>> thanks,
>>>
>>> Chris
>>>
>>> On 6/29/20 12:21 PM, Daniel D. Daugherty wrote:
>>>> Greetings,
>>>>
>>>> I have a fix for the following bug:
>>>>
>>>> JDK-8246493 JDI stress/serial/mixed002 needs to use
>>>> WhiteBox.deflateIdleMonitors support
>>>> https://bugs.openjdk.java.net/browse/JDK-8246493
>>>>
>>>> Here's the webrev URL:
>>>>
>>>> http://cr.openjdk.java.net/~dcubed/8246493-webrev/0_for_jdk16/
>>>>
>>>> The test bug that's being fixed:
>>>>
>>>> vmTestbase/nsk/jdi/stress/serial/mixed002/TestDescription.java fails
>>>> intermittently with the following message:
>>>>
>>>> nsk.share.TestBug: There are more than one(2) instance of
>>>> 'nsk.share.jpda.StateTestThread in debuggee
>>>>
>>>> Summary of the fix:
>>>>
>>>> Use WhiteBox.deflateIdleMonitors() to make sure that all inflated
>>>> ObjectMonitors are deflated after each debuggee has been run.
>>>>
>>>> This fix has been tested with a Mach5 Tier5 test run that executes all
>>>> of the JDI tests (along with JDWP, JVM/TI and other Serviceability
>>>> tests).
>>>> I also did five 100 iteration runs of the failing mix002 test. Each
>>>> Mach5
>>>> job set ran the test 100 times on Linux-X64, macOSX, and Win-X64 for a
>>>> total of (5 * 100 * 3) iterations of
>>>> nsk/jdi/stress/serial/mixed002. There
>>>> were no failures.
>>>>
>>>> Thanks, in advance, for any comments, questions or suggestions.
>>>>
>>>> Dan
>>>>
>>>>
>>>> Gory details:
>>>>
>>>> The primary focus of the fix is in the first three files in the
>>>> webrev:
>>>>
>>>> test/hotspot/jtreg/vmTestbase/nsk/share/jdi/SerialExecutionDebuggee.java
>>>>
>>>> test/hotspot/jtreg/vmTestbase/nsk/jdi/stress/serial/mixed002/TestDescription.java
>>>>
>>>> test/hotspot/jtreg/ProblemList.txt
>>>>
>>>> nsk.share.jdi.SerialExecutionDebuggee is the class that used to
>>>> serially
>>>> execute the debuggee portion of a specific list of tests. After
>>>> this class
>>>> is done executing a debuggee class, it needs to deflate idle
>>>> monitors in
>>>> order to prevent a StateTestThread object created by one debuggee
>>>> class
>>>> from confusing the next debuggee class. Each of the debuggee
>>>> classes that
>>>> use StateTestThread expect there to be only one of these objects.
>>>> However,
>>>> since we are running multiple debuggee classes serially *in the
>>>> same VM*,
>>>> the StateTestThread object created in one debuggee can still be around
>>>> when the next debuggee runs.
>>>>
>>>> The COMMAND_CLEAR_DEBUGGEE implementation clears the
>>>> currentDebuggee variable
>>>> which permits the debuggee to be GC'ed and is modified by this fix
>>>> to call
>>>> WhiteBox.deflateIdleMonitors() to make sure that all inflated
>>>> ObjectMonitors
>>>> are deflated after each debuggee has been run. This takes care of
>>>> any pinned
>>>> StateTestThread objects (and any other inflated ObjectMonitors).
>>>>
>>>>
>>>> vmTestbase/nsk/jdi/stress/serial/mixed002 is a wrapper style stress
>>>> test that
>>>> executes the debugger and debuggee parts of a specific list of
>>>> tests serially
>>>> *in the same VM*. Several of the tests executed by mixed002 make
>>>> use of the
>>>> StateTestThread class. The failure is intermittent because the
>>>> order of test
>>>> execution is shuffled automatically and sometimes the ServiceThread
>>>> manages
>>>> to execute deflation at the right time to prevent more than one
>>>> StateTestThread
>>>> object from existing at the same time.
>>>>
>>>> The additions to vmTestbase/nsk/jdi/stress/serial/mixed002 are the
>>>> standard
>>>> boilerplate needed to call WhiteBox functions from test code. The
>>>> actual call
>>>> to WhiteBox.deflateIdleMonitors() is made in
>>>> SerialExecutionDebuggee. I did
>>>> attempt a fix where I modified the StateTestThread class to make
>>>> the call to
>>>> WhiteBox.deflateIdleMonitors() after the internal waitOnObject is
>>>> no longer
>>>> contended or waited on. That fix reduced the frequency of the
>>>> failures by
>>>> about half, but it didn't solve the test bug entirely. So I had to
>>>> make the
>>>> fix in SerialExecutionDebuggee instead.
>>>>
>>>>
>>>> test/hotspot/jtreg/ProblemList.txt is modified to re-enable the
>>>> mix002 test.
>>>>
>>>>
>>>> The remaining nine files are also wrapper style stress tests that
>>>> execute
>>>> the debugger and debuggee parts of a specific list of tests
>>>> serially *in
>>>> the same VM*. Because these tests also use SerialExecutionDebuggee,
>>>> they
>>>> also need the boilerplate changes so that
>>>> WhiteBox.deflateIdleMonitors()
>>>> can be called.
>>>
>>>
>>
>
More information about the serviceability-dev
mailing list