RFR(XS) 8036823: Stack trace sometimes shows 'locked' instead of 'waiting to lock'

Daniel D. Daugherty daniel.daugherty at oracle.com
Wed Jun 11 22:36:25 UTC 2014


Greetings,

Let's try this hopefully one last time:

http://cr.openjdk.java.net/~dcubed/8046287-webrev/1-jdk9-hs-rt/
https://bugs.openjdk.java.net/browse/JDK-8046287

Changes relative to the ORIGINAL version of the test:

- added a new header waiting pattern to catch the case where
   the target thread waiting on a condition (like a VM op)
- add synchronization to the start-up of the contending threads
   so that we don't start sampling while the contending threads
   are initializing
- add sanity check for observing only two "ContendingThread-*"
   stack traces

- rename some variables to make their use more clear
- update/add various comments
- add counters for the various checks and report a summary
   of all the sampling runs
- issue a warning if the specific scenario encountered by
   the original bug (8036823) is never seen

Testing:

- JPRT test run of the test using product and fastdebug
   bits on all the usual platforms

- 3600 sample run with fastdebug bits:
     INFO: Summary for all samples:
     INFO: both_running_cnt=0
     INFO: both_waiting_cnt=0
     INFO: contended_cnt=2005
     INFO: one_waiting_cnt=1405
     INFO: uncontended_cnt=190

- 3600 sample run with fastdebug bits w/ -Xcomp:
     INFO: Summary for all samples:
     INFO: both_running_cnt=0
     INFO: both_waiting_cnt=0
     INFO: contended_cnt=1867
     INFO: one_waiting_cnt=1548
     INFO: uncontended_cnt=185

- 3600 sample run with fastdebug bits w/ -Xcomp -XX:+DeoptimizeALot:
     INFO: Summary for all samples:
     INFO: both_running_cnt=46
     INFO: both_waiting_cnt=0
     INFO: contended_cnt=3135
     INFO: one_waiting_cnt=3
     INFO: uncontended_cnt=416

The contended_cnt is where we're hitting the original
bug's scenario and we've got great coverage there.
The other counts reflect how often we hit the edge
cases...

Thanks, in advance, for any comments, questions or suggestions.

Dan


On 6/9/14 10:04 PM, Daniel D. Daugherty wrote:
> Greetings,
>
> Nightly testing has revealed a bug in the test that reproduces
> nicely when these options are used: -Xcomp -XX:+DeoptimizeALot
>
> Here's the webrev URL for the minor tweak to catch yet more
> variation of the waiting pattern:
>
> http://cr.openjdk.java.net/~dcubed/8046287-webrev/0-jdk9-hs-rt/
>
> Thanks to Vladimir K for reporting the test failure and for
> providing the right details in the bug report.
>
> Thanks, in advance, for any comments, questions or suggestions.
>
> Dan
>
>
> On 5/29/14 8:49 AM, Daniel D. Daugherty wrote:
>> One more round of review after refactoring the test based on comments
>> from David H and Serguei.
>>
>> Here's the webrev for this round:
>>
>> http://cr.openjdk.java.net/~dcubed/8036823-webrev/2-jdk9-hs-rt/
>>
>> Had to change the default sample size from 30 -> 15 in order to
>> get the test to pass reliably on Solaris SPARC JPRT machines.
>>
>> Thanks, in advance, for any comments, questions or suggestions.
>>
>> Dan
>>
>>
>> On 5/22/14 10:18 PM, Daniel D. Daugherty wrote:
>>> Zhengyu is tied up with some other work so I've taken on this fix.
>>>
>>> Here's the webrev URL for the next round:
>>>
>>> http://cr.openjdk.java.net/~dcubed/8036823-webrev/1-jdk9-hs-rt/
>>>
>>> The fix has been tested with vm.quick on all Aurora Adhoc platforms.
>>> The new test has been run with the fix via JPRT and passes on all
>>> JPRT platforms. The new test has also been run without the fix and
>>> fails on most platforms. Since the default sample size is just 30,
>>> it is possible to get 30 runs in a row without failing.
>>>
>>> Thanks, in advance, for any comments, questions or suggestions.
>>>
>>> Dan
>>>
>>>
>>> On 5/19/14 7:58 AM, Zhengyu Gu wrote:
>>>> This is a simple fix for incorrect lock state.
>>>>
>>>> The timing on setting thread's pending monitor can result stack 
>>>> trace dump reporting incorrect lock state. The solution is to check 
>>>> the monitor's owner, if the owner is other than the current thread, 
>>>> then the monitor, is or is in process of being, set the pending 
>>>> monitor of current thread.
>>>>
>>>>
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8036823
>>>> Webrev: http://cr.openjdk.java.net/~zgu/8036823/webrev.00/
>>>>
>>>>
>>>> Thanks,
>>>>
>>>> -Zhengyu
>>>>
>>>
>>>
>>>
>>
>>
>
>



More information about the hotspot-dev mailing list