RFR [8034262] Test java/lang/ProcessBuilder/CloseRace.java fails

Ivan Gerasimov ivan.gerasimov at oracle.com
Tue Mar 11 18:03:50 UTC 2014


Thank you Martin!

On 11.03.2014 19:04, Martin Buchholz wrote:
> Thanks for working on my brittle racy tests.
>
> Adding a latch as you did is a good improvement, although there's a 
> good chance the real problem lies elsewhere.
>
> My standard name for such latches is "threadsStarted", which I think 
> is a bit better than "startedSignal".  Please rename.
>
No problem, renamed.

> My simple calls to Thread.join are too optimistic.
> More likely to be helpful is code like (pseudocode follows):
>
> thread.join(10, SECONDS);
> if (thread.isAlive()) {
>   dumpAllStacks();
>   fail();
> }
>
Yes, it was a good idea to do that!
After implementing your suggestion, I could finally reproduce the failure.
The OpenLoop child thread was spinning in the do-while loop, waiting for 
'count of fds in use' to become 3.
The simple solution is to add a check weather the current thread is 
interrupted to this and other loops.

Would you please take a look at the updated webrev?
http://cr.openjdk.java.net/~igerasim/8034262/1/webrev/

Sincerely yours,
Ivan

> That's  more work to implement - optional.
>
>
> On Tue, Mar 11, 2014 at 5:24 AM, Ivan Gerasimov 
> <ivan.gerasimov at oracle.com <mailto:ivan.gerasimov at oracle.com>> wrote:
>
>     Hello everybody!
>
>     The test java/lang/ProcessBuilder/CloseRace.java was reported to
>     intermittently fail.
>     The test timed out, which should mean that at least one of the
>     child threads was never interrupted.
>
>     I couldn't reproduce the failure, but I suspect it might happen
>     due to call to interrupt() before the child thread became alive
>     (I'm not really sure if it's possible to be non-alive after call
>     to start()).
>     The fix is to explicitly synchronize children with the parent.
>
>     Would you please help review the fix?
>
>     BUGURL: https://bugs.openjdk.java.net/browse/JDK-8034262
>     WEBREV: http://cr.openjdk.java.net/~igerasim/8034262/0/webrev/
>     <http://cr.openjdk.java.net/%7Eigerasim/8034262/0/webrev/>
>
>     Sincerely yours,
>     Ivan
>
>




More information about the core-libs-dev mailing list