RFR 8080569: (process) java/lang/ProcessBuilder/DestroyTest.java fails with "Process terminated prematurely"
Roger Riggs
Roger.Riggs at oracle.com
Mon Jan 14 20:05:18 UTC 2019
Hi,
Thanks for the reviews.
As suggested, cleaned up a bit more dead wood.
http://cr.openjdk.java.net/~rriggs/webrev-destroytest-8080569-4/
Thanks, Roger
On 01/14/2019 01:56 PM, Brent Christian wrote:
> 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