RFR 8080569: (process) java/lang/ProcessBuilder/DestroyTest.java fails with "Process terminated prematurely"

Brent Christian brent.christian at oracle.com
Mon Jan 14 18:56:27 UTC 2019


Hi, Roger

On Windows, the test did not check liveness, but will check it now; 
seems desirable.

I think the changes look fine as they are.  Additional refactoring 
possibilities for your consideration, to take or leave:
     * ProcessTest::isAlive() is not used
     * killProc() no longer needs a boolean argument
     * the killProc() code could be moved into runTest()

-Brent

On 1/14/19 8:56 AM, Roger Riggs wrote:
> 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