RFR: JDK-8147447: [TESTBUG] serviceability/tmtools/jstack/WaitNotifyThreadTest.java test fails
serguei.spitsyn at oracle.com
serguei.spitsyn at oracle.com
Fri Jan 22 00:42:19 UTC 2016
On 1/21/16 16:37, serguei.spitsyn at oracle.com wrote:
> On 1/21/16 07:36, Daniel D. Daugherty wrote:
>> On 1/21/16 8:11 AM, Staffan Larsen wrote:
>>>> On 21 jan. 2016, at 15:33, Alexander Kulyakhtin
>>>> <alexander.kulyakhtin at oracle.com> wrote:
>>>>
>>>> Staffan,
>>>>
>>>> Would it be sufficient to modify the code so that isCompMode()
>>>> returns true if and only if the -Xcomp option is present and is not
>>>> followed by the -Xmixed option?
>>> Maybe, but that looks fragile. What if there is another option that
>>> implicitly enables compile mode?
>>
>> Even if the VM is in -Xmixed mode, code could get compiled and
>> the stack trace output would show the compiled frame version
>> and not the interpreted frame version. So:
>>
>> -Xint mode - the compiled frame version will not be seen
>> -Xmixed mode - both versions may be seen depending on compile
>> thresholds and other factors
>> -Xcomp mode - the compiled frame version will be seen
>
> We need to be careful here.
> It is only true if the JVMTI is not used.
I hope, it is always the case for the purpose the Alexander is going to
use the isCompMode().
Thanks,
Serguei
>
> It is still possible to see the interpreted frames if some JVMTI
> events like SingleStep or MethodEntry are enabled.
> In such cases, no matter what options the VM was started with, the
> interpreted frames still can be observed.
>
> http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html#capability
>
> Frequently, the addition of a capability may incur a cost in execution
> speed, start up time, and/or memory footprint. Note that the overhead
> of using a capability is completely different than the overhead of
> possessing a capability. Take single stepping as an example. When
> single stepping is on (that is, when the event is enabled and thus
> actively sending events) the overhead of sending and processing an
> event on each instruction is huge in any implementation. However, the
> overhead of possessing the capability may be small or large, depending
> on the implementation. Also, when and if a capability is potentially
> available depends on the implementation. Some examples:
>
> * One VM might perform all execution by compiling bytecodes into
> native code and be unable to generate single step instructions. In
> this implementation the capability can not be added.
> * Another VM may be able to switch execution to a single stepping
> *interpreter* at any time. In this implementation, having the
> capability has no overhead and could be added at any time.
> * Yet another VM might be able to choose a bytecode compiling or
> single stepping capable *interpreted* execution engine at start
> up, but be unable to switch between them. In this implementation
> the capability would need to be added during the |OnLoad| phase
> (before bytecode execution begins) and would have a large impact
> on execution speed even if single stepping was never used.
> * Still another VM might be able to add an "is single stepping on"
> check into compiled bytecodes or a generated *interpreter*. Again
> in this implementation the capability would need to be added
> during the |OnLoad| phase but the overhead (a test and branch on
> each instruction) would be considerably l
>
>
> Thanks,
> Serguei
>
>>
>> Dan
>>
>>
>>>
>>>> Best regards,
>>>> Alexander
>>>>
>>>> ----- Original Message -----
>>>> From: staffan.larsen at oracle.com
>>>> To: alexander.kulyakhtin at oracle.com
>>>> Cc: serviceability-dev at openjdk.java.net
>>>> Sent: Thursday, January 21, 2016 5:20:14 PM GMT +03:00 Iraq
>>>> Subject: Re: RFR: JDK-8147447: [TESTBUG]
>>>> serviceability/tmtools/jstack/WaitNotifyThreadTest.java test fails
>>>>
>>>> isCompMode() will fail if the VM is started with both -Xcomp and
>>>> -Xmixed.
>>>>
>>>> We need to find a better way to check if compiled mode is being
>>>> used. Perhaps
>>>> System.getProperty("java.vm.info").contains("compiled”) ?
>>>>
>>>> /Staffan
>>>>
>>>>> On 19 jan. 2016, at 11:59, Alexander Kulyakhtin
>>>>> <alexander.kulyakhtin at oracle.com> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> Could you, please, review this minor test-only change
>>>>>
>>>>> CR: https://bugs.openjdk.java.net/browse/JDK-8147447 "[TESTBUG]
>>>>> serviceability/tmtools/jstack/WaitNotifyThreadTest.java test fails"
>>>>> Webrev: http://cr.openjdk.java.net/~akulyakh/8147447/index.html
>>>>>
>>>>> The test WaitNotifyThreadTest.java tries expects to find in the
>>>>> jstack output the string similar to:
>>>>> 'waiting on <0x000000008f64e6d0> (a java.lang.Object)'
>>>>> However, with the -Xcomp option turned on there is no object
>>>>> reference available and the same strings look like:
>>>>> 'waiting on <no object reference available>'
>>>>> This causes the false failures of the test when executed with the
>>>>> -Xcomp option.
>>>>>
>>>>> We are modifying the test so it takes into account the possible
>>>>> difference between the jstack outputs.
>>>>>
>>>>> The same issue has been present in the legacy test from which this
>>>>> test has been ported, so it is not a new and not a regression issue.
>>>>>
>>>>> Best regards,
>>>>> Alexander
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20160121/d42ff623/attachment-0001.html>
More information about the serviceability-dev
mailing list