RFR: JDK-8036026: nsk/jvmti/scenarios/capability/CM02/cm02t001 fails intermittently
Gary Adams
gary.adams at oracle.com
Thu Oct 4 16:04:25 UTC 2018
We currently use time factor 4 or 10 to scale up the jtreg tests.
The change I proposed was already 10x100 = 1000.
Since this is just a thread scheduling issue to let the debuggee
run til it blocks, it should not require more time to get the
switch to take place.
If this was a process scheduling issue, then more complex
coordination might be worth considering.
On 10/4/18, 11:45 AM, Daniel D. Daugherty wrote:
> Sleeps don't scale under load. That said, I agree with Chris that
> the code is already in place. One possible addition is to scale
> the sleep value by the timeout factor for the test. That will
> further reduce the likelihood of intermittent failures.
>
> Dan
>
>
> On 10/4/18 7:39 AM, Gary Adams wrote:
>> Oops, wrong comment used in the patch.
>> Fresh patch attached.
>>
>> On 10/4/18, 7:11 AM, Gary Adams wrote:
>>> Patch attached.
>>>
>>> I think one reviewer is sufficient for a trivial patch.
>>>
>>> On 10/3/18, 4:49 PM, Chris Plummer wrote:
>>>> Hi Gary,
>>>>
>>>> Although I don't like relying on timer delays for stuff like this,
>>>> the code for it is already in place, so I'm ok with making the
>>>> delay longer to make sure there is contention on the monitor. Could
>>>> you update the comment to read "// pause to provoke contention on
>>>> thread.endingMonitor"
>>>>
>>>> thanks,
>>>>
>>>> Chris
>>>>
>>>> On 10/3/18 11:55 AM, Gary Adams wrote:
>>>>> While running a block of nsk/jvmti/scenarios tests, I noticed an
>>>>> occasional failure
>>>>> for cm02t001 in windows debug platform. After enabling the nsk
>>>>> verbose
>>>>> diagnostics and adding a few messages in the main test and the
>>>>> debuggee
>>>>> thread, it became clear that the missing contention was due to the
>>>>> main thread
>>>>> getting ahead of the debugee thread.
>>>>>
>>>>> The call to letFinish() below let's the deuggee thread wake up
>>>>> from it's wait
>>>>> and proceed to the contention for the endingMonitor. If the main
>>>>> thread
>>>>> waits a little longer it should reach the debuggee thread
>>>>> synchronized block.
>>>>>
>>>>> I reopened an earlier bug that was closed as CNR.
>>>>>
>>>>> Issue: https://bugs.openjdk.java.net/browse/JDK-8036026
>>>>>
>>>>>
>>>>> diff --git
>>>>> a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/capability/CM02/cm02t001.java
>>>>> b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/capability/CM02/cm02t001.java
>>>>>
>>>>> ---
>>>>> a/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/capability/CM02/cm02t001.java
>>>>> +++
>>>>> b/test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/capability/CM02/cm02t001.java
>>>>> @@ -82,7 +82,7 @@
>>>>> thread.letFinish();
>>>>>
>>>>> // pause to provoke contention
>>>>> - Thread.sleep(100);
>>>>> + Thread.sleep(1000);
>>>>> } catch (InterruptedException e) {
>>>>> throw new Failure(e);
>>>>> }
>>>>
>>>>
>>>
>>
>
More information about the serviceability-dev
mailing list