RFR: JDK-8215243: JShell tests failing intermitently with "Problem cleaning up the following threads:"
Jan Lahoda
jan.lahoda at oracle.com
Wed Dec 12 12:09:35 UTC 2018
Hi,
After the JLine upgrade, the JShell tests tend to randomly fail with
errors like:
JavaTest Message: Problem cleaning up the following threads:
Thread-74
at java.base at 12-internal/java.lang.Object.wait(Native Method)
at java.base at 12-internal/java.lang.Object.wait(Object.java:328)
at
app/jdk.jshell at 12-internal/jdk.internal.jshell.tool.StopDetectingInputStream.read(StopDetectingInputStream.java:98)
at
app/jdk.jshell at 12-internal/jdk.internal.jshell.tool.ConsoleIOContext$TestTerminal.lambda$new$0(ConsoleIOContext.java:1212)
at
app/jdk.jshell at 12-internal/jdk.internal.jshell.tool.ConsoleIOContext$TestTerminal$$Lambda$245/0x0000000100236040.run(Unknown
Source)
at java.base at 12-internal/java.lang.Thread.run(Thread.java:835)
Sadly, I didn't see that on my runs so far, but it seems to happen
frequently enough on the continuous builders. I was looking at the
StopDetectingInputStream and related classes for potential problems.
When the ConsoleIOContext is closed, it shutdowns the
StopDetectingInputStream, which sets its state to CLOSED, and the read
method then returns with -1. I didn't find a problem with this part.
But, in StopDetecctingInputStream.write, there is:
if (state != State.BUFFER) {
state = State.WAIT;
}
This could potentially un-close the StopDetectingInputStream if the
write method is called on a closed instance, the instance would be
"reopened", and if things would happen in a wrong sequence/order, the
"read" method could wait indefinitely, presumably leading to the problem
with cleaning up the thread.
My proposal is to fix this by not re-setting the state CLOSED back to
WAIT even if write is called on a closed StopDetectingInputStream. I am
not sure if it will help with the problem on builders, but appears to be
a correct thing to do anyway.
Webrev:
http://cr.openjdk.java.net/~jlahoda/8215243/webrev.00/
JBS:
https://bugs.openjdk.java.net/browse/JDK-8215243
What do you think?
Thanks!
Jan
More information about the kulla-dev
mailing list