RFR(XS): 8036666: JVMTI GetObjectMonitorUsage does not return correct recursion count

serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Tue Mar 11 19:25:23 UTC 2014


On 3/11/14 12:05 PM, Staffan Larsen wrote:
>
> On 11 mar 2014, at 16:48, Siebenborn, Axel <axel.siebenborn at sap.com 
> <mailto:axel.siebenborn at sap.com>> wrote:
>
>> Hi Seguei,
>> I still can't upload files to the cr.openjdk server.
>> Meanwhile, I use our server for the new webrev:
>>
>> http://www.sapjvm.com/as/webrevs/8036666/
>>
>> Thanks,
>> Axel
>>
>> Comments inline:
>>
>> On 11.03.2014 09:50,serguei.spitsyn at oracle.com 
>> <mailto:serguei.spitsyn at oracle.com>wrote:
>>> Hi Axel,
>>>
>>> The webrev link is resolvable now.
>>> Thank you for taking care about your broken account on the 
>>> cr.openjdk server!
>>>
>>> I have some comments on the test case ...
>>>
>>> - This is nice test, thank you for providing it!
>>>
>>> - The location of the test must be different as it is a JVMTI test:
>>>      test/serviceability/jvmti/8036666  instead of test/runtime/8036666
>>
>> I moved the test.
>
> Tests should avoid the bug number in the name or path and instead use 
> a descriptive name. See this page for some background: 
> https://wiki.openjdk.java.net/display/HotSpot/Naming+HotSpot+JTReg+Tests

The test files have already descriptive names.
So, it would be enough to remove the bug number from the path.
Sorry, I had to catch it too in the first place.

Thanks,
Serguei

>
> Thanks,
> /Staffan
>
>>
>>>
>>> RecursiveObjectLock,java:
>>>
>>>  - A suggestion to add a synchronized method (say, nestedLock3) into 
>>> the chain
>>>     of calls started from the testMethod. In order to do so, the 
>>> class RecursiveObjectLock
>>>     needs to extend the ALock class. And the this object needs to be 
>>> used in the
>>>     synchronized statements and for wait()?
>>>     What do you think about such test enhancement for better coverage?
>>
>> In order to have a synchronized method in the call chain, I 
>> synchronize on the "this" object.
>>
>>> GetObjectLockCount.java:
>>>
>>>  - The comment line 283 seems to be obsolete as the "param out" is 
>>> not present anymore:
>>>
>>> 283      * @param out   Stream to copy to
>>>
>>>
>>>  - Could you, please, add e.printStackTrace() into the catch 
>>> statements at the lines 232 and 300?
>>>
>>>  - A question:
>>>       It seems the errThread and outThread are started a little bit 
>>> late.
>>>       Would it be better to start them earlier, or it was intentional?
>>
>> You're right! I moved to code up.
>>
>>>
>>> Some minor style-related comments (I hope, it is easy to fix this 
>>> before push):
>>>    - Unneeded extra empty lines:           149, 174-175, 244
>>>    - A space is missed before the '{':       180, 242, 243, 246
>>>    - Unneeded extra space after and before the "(":   235, 297
>>>    - The curly brackets '{' do not follow the common style:  142, 144
>>>
>>
>> I hope I fixed them all and added no new style violations.
>> Do you have a tool to check this?
>>
>>>
>>> We still need another reviewer for this fix.
>>> I'm ready to be a sponsor for it.
>>>
>>> Thanks,
>>> Serguei
>>>
>>>
>>> On 3/10/14 12:00 AM, serguei.spitsyn at oracle.com 
>>> <mailto:serguei.spitsyn at oracle.com> wrote:
>>>> Hi Axel,
>>>>
>>>> The webrev link does not work now.
>>>> I'll check it again tomorrow.
>>>>
>>>> Thanks,
>>>> Serguei
>>>>
>>>> On 3/7/14 1:32 AM, serguei.spitsyn at oracle.com 
>>>> <mailto:serguei.spitsyn at oracle.com> wrote:
>>>>> Hi Axel,
>>>>>
>>>>> Thank you for fixing this issue.
>>>>> I'm reviewing it.
>>>>> It looks good in general, but a little bit more time is needed to 
>>>>> look at the tests.
>>>>>
>>>>> Do you need a sponsor for pushing?
>>>>>
>>>>> Thanks,
>>>>> Serguei
>>>>>
>>>>>
>>>>> On 3/6/14 12:08 AM, Siebenborn, Axel wrote:
>>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> could I have a review for the following change?
>>>>>>
>>>>>> The recursive lock count for an object is not correct, in cases, 
>>>>>> where a monitor is inflated after recursive lightweight locks. In 
>>>>>> this case, the recursion count is taken from the heavyweight 
>>>>>> monitor, represented by the class ObjectMonitor. 
>>>>>> ObjectMonitor::_recursions is the number of times 
>>>>>> ObjectMonitor::enter() was called to acquire the lock minus 1. 
>>>>>> This counter does not include the recursions of lightweight 
>>>>>> locks, that happen before inflating the monitor and is not equal 
>>>>>> to the recursion count from a Java source level point of view.
>>>>>>
>>>>>> I added a test to the webrev to reproduce the problem.
>>>>>>
>>>>>> The suggested fix is to call count_locked_objects, even if 
>>>>>> there's a heavyweight monitor and get the recursion count by 
>>>>>> iterating the vframes.
>>>>>>
>>>>>> Bug:
>>>>>>
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8036666
>>>>>>
>>>>>> Webrev:
>>>>>>
>>>>>> http://cr.openjdk.java.net/~asiebenborn/8036666/webrev/ 
>>>>>> <http://cr.openjdk.java.net/%7Easiebenborn/8036666/webrev/><http://cr.openjdk.java.net/%7Easiebenborn/8036666/webrev/>
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Axel
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20140311/6afbb050/attachment-0001.html>


More information about the serviceability-dev mailing list