RFR 6946101: ShellScaffold.sh based tests can issue "write error: Broken pipe" messages
Daniel D. Daugherty
daniel.daugherty at oracle.com
Fri Feb 28 11:22:51 PST 2014
On 2/28/14 7:36 AM, Pavel Punegov wrote:
> New wevrev, thanks to Igor I.:
> http://cr.openjdk.java.net/~iignatyev/ppunegov/6946101/webrev.01/
Thumbs up.
Dan
>
> Fixed typos/grammar
> Added next string to catch the situation when jdb exited with
> input stream closed prematurely (break in a while loop before the check) :
> 996 # jdb exited because its input stream closed prematurely
> 997 jdbFailIfPresent "Input stream closed"
>
> It could happen if dojdbCmds() subshell was killed or exited prematurely.
> Without this check test fails with no complains about Input stream.
>
>
> On Fri, 28 of Feb 2014 09:31:29 Staffan Larsen wrote:
>> Very nice change - looks good!
>>
>> test/com/sun/jdi/ShellScaffold.sh
>> line 1000: # mydojdbCmds() didn't finished because it waits for JDB
>> message nit: finished -> finish
> Fixed
>
>> Just a note that this should be pushed through jdk9/dev and not jdk9/hs-comp
>> (where the webrev was made).
> Igor made a webrev based on jdk9/dev and will sponsor me.
>
>
> On 27 feb 2014, at 23:47, Daniel D. Daugherty <daniel.daugherty at oracle.com>
> wrote:
>>> On 2/27/14 9:20 AM, Pavel Punegov wrote:
>>>> Please review the fix for:
>>>> https://bugs.openjdk.java.net/browse/JDK-6946101
>>>>
>>>> webrev:
>>>> http://cr.openjdk.java.net/~iignatyev/ppunegov/6946101/webrev.00/
>>> test/com/sun/jdi/ShellScaffold.sh
>>>
>>> line 531: # allows JDB to exit"
>>>
>>> stray double-quote at end of comment
>>>
>>> line 563: dofail "It's not allowed to send quit and exit commands from
>>> the test">
>>> 'and' should be 'or'
>>>
>>> line 819: # Kill debugger, it could be hang
>>>
>>> Typo: 'hang' -> 'hung'
>>>
> Fixed
>
>>> I _think_ I understand the new test driver style:
>>>
>>> - get rid of all explicit 'cmd quit' usages because mydojdbCmds()
>>> now wraps the test's dojdbCmds with a 'quit' cmd
> Yep
>
>>> - any test that previously ended with a 'cmd cont' is presumed to
>>> be OK of that 'cmd cont' caused jdb to execute off the end of
>>> main(); sounds reasonable to me
> The test JdbMethodExitTest.sh doesn't have allowExit set for the last
> 'cmd cont'. This 'cont' should run jdb to breakpoint set with bkpt();
> See java file inside the test:
> 183 // test trace method exit
> 184 traceExit1();
> 185 bkpt();
> 186
> 187 }
>
>>> - perfect example of the new logic to catch an errant run off the
>>> end is test/com/sun/jdi/WatchFramePop.sh
>>> - the last jdb cmd is 'next'
>>> - and jdb is NOT supposed to run off the end
>>> - the new logic should catch this nicely; I _think_ the old
>>> logic would only catch a run off the end if someone manually
>>> checked the test result
> My testing (see in the bug comments) shows that old logic can only catch the
> message absence with failIfNotPresent() functions. If I remove these checks
> tests will silently pass even though we have sent 'cmd exit' inside the test.
>
More information about the serviceability-dev
mailing list