RFR 8080569: (process) java/lang/ProcessBuilder/DestroyTest.java fails with "Process terminated prematurely"
Roger.Riggs at oracle.com
Mon Jan 14 20:05:18 UTC 2019
Thanks for the reviews.
As suggested, cleaned up a bit more dead wood.
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()
> On 1/14/19 8:56 AM, Roger Riggs wrote:
>> Please review removing a test for Process.destroy(). 
>> 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 has been created to consider documenting the
>> Process implementations' closing of the streams.
>> Thanks, Roger
>>  https://bugs.openjdk.java.net/browse/JDK-8080569
>>  https://bugs.openjdk.java.net/browse/JDK-8216990
More information about the core-libs-dev