David Holmes
2018-10-15 04:23:50 UTC
bug: https://bugs.openjdk.java.net/browse/JDK-8048215
webrev: http://cr.openjdk.java.net/~dholmes/8048215/webrev/
Simple race condition in the test. The main thread does checks that are
only valid once the target thread has called o.wait() but there's
nothing to ensure that point of execution is reached. The failure is
easily reprodcued by just putting in a sleep after:
Object o = new Object();
Fix is to add a shared 'waiter' Object that the target waits upon and
for which the main also synchronizes on such that the main thread can't
proceed until wait() has been called and released the monitor.
Thanks,
David
webrev: http://cr.openjdk.java.net/~dholmes/8048215/webrev/
Simple race condition in the test. The main thread does checks that are
only valid once the target thread has called o.wait() but there's
nothing to ensure that point of execution is reached. The failure is
easily reprodcued by just putting in a sleep after:
Object o = new Object();
Fix is to add a shared 'waiter' Object that the target waits upon and
for which the main also synchronizes on such that the main thread can't
proceed until wait() has been called and released the monitor.
Thanks,
David