RFR(XXS): 8213902: com/sun/jdi/SetLocalWhileThreadInNative.java times out
David Holmes
david.holmes at oracle.com
Sat Nov 17 23:06:47 UTC 2018
Version 2 pushed.
Richard: I'm unclear about your Author status as you are somehow only
listed as a JDK 9 Author ? And I thought all existing Authors were
automatically added to the JDK project.
Cheers,
David
On 17/11/2018 8:34 am, David Holmes wrote:
> Hi Richard,
>
> I'll sponsor this over the weekend.
>
> Thanks,
> David
>
> On 17/11/2018 1:37 am, Reingruber, Richard wrote:
>> Hi Jc, David, Chris,
>>
>> >> Is this not a test that's failing due to a real bug?
>>
>> I would not consider this a bug, but rather a limitation. I don't see
>> a way to
>> work around it in the TestScaffold, though (looking at [1]).
>>
>> So an enhancement would have to happen in the jdi implementation. To
>> me it does
>> not seem worth the effort. I'd say the tracing is not necessary for
>> regression
>> testing. In the case of a test error where all that output is
>> required, I'd
>> start the debuggee in a shell and do the debugging manually.
>>
>> Regarding -Xcomp: makes a lot of sense for tests that are indifferent
>> about the
>> execution mode. The test at hand triggers compilation of the central test
>> method. It does not help that much, to compile everything else, too.
>>
>> Anyway, here is another webrev without excluding -Xcomp:
>>
>> http://cr.openjdk.java.net/~rrich/webrevs/2018/8213902/webrev.02/
>>
>> I'd prefer the original webrev, because it's greener ;)
>>
>> I would need a sponsor, too. Please take either one of the patches.
>>
>> Thanks for reviewing,
>> Richard.
>>
>> [1] Debugger stack
>>
>> java.lang.Object.wait(long) line: not available [native method]
>> com.sun.tools.jdi.AbstractLauncher$Helper(java.lang.Object).wait()
>> line: 328
>> com.sun.tools.jdi.AbstractLauncher$Helper.launchAndAccept() line: 197
>> com.sun.tools.jdi.SunCommandLineLauncher(com.sun.tools.jdi.AbstractLauncher).launch(java.lang.String[],
>> java.lang.String, com.sun.jdi.connect.spi.TransportService$ListenKey,
>> com.sun.jdi.connect.spi.TransportService) line: 140
>> com.sun.tools.jdi.SunCommandLineLauncher.launch(java.util.Map<java.lang.String,?
>> extends com.sun.jdi.connect.Connector.Argument>) line: 229
>> VMConnection.launchTarget() line: 314
>> VMConnection.open() line: 149
>> SetLocalWhileThreadInNative(TestScaffold).connect(java.lang.String[])
>> line: 637
>> SetLocalWhileThreadInNative(TestScaffold).startUp(java.lang.String)
>> line: 364
>> SetLocalWhileThreadInNative(TestScaffold).startTo(java.lang.String,
>> java.lang.String, java.lang.String) line: 374
>> SetLocalWhileThreadInNative(TestScaffold).startToMain(java.lang.String) line:
>> 369
>> SetLocalWhileThreadInNative.runTests() line: 132
>> SetLocalWhileThreadInNative(TestScaffold).startTests() line: 431
>> SetLocalWhileThreadInNative.main(java.lang.String[]) line: 120
>>
>> -----Original Message-----
>> From: Chris Plummer <chris.plummer at oracle.com>
>> Sent: Freitag, 16. November 2018 06:23
>> To: David Holmes <david.holmes at oracle.com>; JC Beyler
>> <jcbeyler at google.com>; Reingruber, Richard <richard.reingruber at sap.com>
>> Cc: serviceability-dev at openjdk.java.net
>> Subject: Re: RFR(XXS): 8213902:
>> com/sun/jdi/SetLocalWhileThreadInNative.java times out
>>
>> See https://bugs.openjdk.java.net/browse/JDK-8173304 and also
>> https://bugs.openjdk.java.net/browse/JDK-4368399, which dates back to
>> 2000.
>>
>> Chris
>>
>> On 11/15/18 8:40 PM, David Holmes wrote:
>>> Hi Jc,
>>>
>>> If I may put in my 2c ...
>>>
>>> On 16/11/2018 2:13 pm, JC Beyler wrote:
>>>> Hi Richard,
>>>>
>>>> Is this not a test that's failing due to a real bug? Ie: if someone
>>>> were to really be running the program in this configuration (with
>>>> printcompilation and printinlining) and attaching a debugger, would
>>>> they not reach the same issue?
>>>
>>> This is just a limitation of connecting process streams via finite
>>> pipes. If the pipe can fill before the target process reaches the
>>> point where it communicates back to the initial process (which would
>>> trigger the initial process to start draining the pipe) then you
>>> effectively deadlock.
>>>
>>> So you either structure the tests so that they work correctly with the
>>> finite pipes provided by the test scaffold, or you modify the test
>>> scaffold to either provide a bigger pipe or else rework it to ensure
>>> pipes can't fill and cause indefinite blocking.
>>>
>>> For the case at hand fixing the test to not be so verbose is
>>> reasonable in my opinion, though I'm not sure I'd remove Xcomp
>>> altogether as Xcomp likes a range of programs to put it through its
>>> paces.
>>>
>>> But it wouldn't be unreasonable to file a RFE to make the TestScaffold
>>> handle this better.
>>>
>>> Cheers,
>>> David
>>>
>>>> Should that not be fixed in some way instead? Or is this such an
>>>> improbable case that we just consider it ludicrous?
>>>>
>>>> Thanks,
>>>> Jc
>>>>
>>>> On Thu, Nov 15, 2018 at 2:32 PM Reingruber, Richard
>>>> <richard.reingruber at sap.com <mailto:richard.reingruber at sap.com>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> could I please get reviews for the following small patch? It
>>>> fixes a
>>>> bug in the test
>>>> com/sun/jdi/SetLocalWhileThreadInNative.java that causes a
>>>> deadlock
>>>> when executed with
>>>> -vmoption:-Xcomp.
>>>>
>>>> Deadlock:
>>>>
>>>> Debuggee (SetLocalWhileThreadInNativeTarget):
>>>> - running with -Xcomp
>>>> - still in early start-up
>>>> - printed a lot on tty already, because -XX:+PrintCompilation
>>>> -XX:+PrintInlining are given
>>>> - java thread waits for compiler thread to finish compile task
>>>> - compiler thread is blocked in write on tty. tty buffer is
>>>> full,
>>>> because debugger is not yet
>>>> reading debuggee's output
>>>>
>>>> Debugger
>>>> - waiting until connection to debugger is established
>>>>
>>>> The fix is to remove -XX:+PrintCompilation -XX:+PrintInlining. In
>>>> addition it excludes the test if
>>>> running with -Xcomp, because that mode does not add a lot of
>>>> value,
>>>> as the test actually only needs
>>>> dontinline_testMethod() to be compiled. Running with -Xcomp just
>>>> wastes energy.
>>>>
>>>> Webrev:
>>>> http://cr.openjdk.java.net/~rrich/webrevs/2018/8213902/webrev.01/
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8213902
>>>>
>>>> The contribution needs to be sponsored as well, please.
>>>>
>>>> Thanks, Richard.
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Thanks,
>>>> Jc
>>
>>
>>
More information about the serviceability-dev
mailing list