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