RFR 8080569: (process) java/lang/ProcessBuilder/DestroyTest.java fails with "Process terminated prematurely"
Roger Riggs
Roger.Riggs at oracle.com
Mon Jan 14 16:56:48 UTC 2019
Please review removing a test for Process.destroy(). [1]
It fails intermittently and is based on an incorrect assumption.
The child is a bash script that uses trap to ignore SIGTERM. The child
is started and then sent SIGTERM.
The child should not terminate. However, there is a race in which in
some cases the child does terminate
with SIGPIPE (not SIGTERM) as a result of destroy() closing the streams.
The Process implementation on Unix closes the streams after sending the
SIGTERM signal
and has since (forever...). But this behavior is not documented.
This test of destroy() is invalid and should be removed. Since both Mac
OS and Windows
already skip the testing of destroy() the test is simplified to remove
it from all cases.
A separate issue[2] has been created to consider documenting the
Process implementations' closing of the streams.
Webrev:
http://cr.openjdk.java.net/~rriggs/webrev-destroytest-8080569-2/
Thanks, Roger
[1] https://bugs.openjdk.java.net/browse/JDK-8080569
[2] https://bugs.openjdk.java.net/browse/JDK-8216990
More information about the core-libs-dev
mailing list