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.gerasi...@oracle.com <mailto:ivan.gerasi...@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



Reply via email to