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

Siebenborn, Axel axel.siebenborn at sap.com
Thu Mar 13 08:19:37 UTC 2014


Hi Serguei,
new webrev:
http://www.sapjvm.com/as/webrevs/8036666_2/
I should review my own changes more carefully.
Sorry for that.
Thanks,
Axel



On 12.03.2014 18:34, serguei.spitsyn at oracle.com wrote:
> Hi Axel,
> 
> Thank you for the changes! It looks good, but one more place need a
> fix (expected must be 4 now):
> 
> 230         if (recursionCount != 4) { 231             throw new
> AssertionError("recursions: expected 3, but was " + recursionCount); 
> 232         }
> 
> 
> Thanks, Serguei
> 
> 
> On 3/12/14 8:21 AM, Siebenborn, Axel wrote:
>> Hi Serguei, I created a new webrev:
>> 
>> http://www.sapjvm.com/as/webrevs/8036666_1/
>> 
>> I incorporated your suggestions and moved the test files.
>> 
>> Thanks, Axel
>> 
>> 
>> On 11.03.2014 20:25, serguei.spitsyn at oracle.com wrote:
>>> 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
> 
> 



More information about the serviceability-dev mailing list