On 25 sep 2014, at 12:24, Jaroslav Bachorik <jaroslav.bacho...@oracle.com> 
wrote:

> On 09/25/2014 12:13 PM, Staffan Larsen wrote:
>> I wonder if the p.waitFor() is needed? What if the process launching expired 
>> with a timeout and now we are still waiting for the process to end - 
>> wouldn’t that kind of defeat the timeout? In any case, the destroyForcibly() 
>> should end the process whether we wait for it or not.
> 
> It would be wonderful but the javadoc states that the result of 
> destroyForcibly() call depends on the implementation and may actually not 
> force close the process and one should use waitFor() to make sure that the 
> process has in fact died.

It also mentions that Processes returned by ProcessBuilder.start() will be 
terminated forcibly so we can rely on that. I don’t know how much it helps to 
wait for the process. If it wasn’t terminated, then we risk blocking forever 
here - still without having terminated the process.

> I wonder whether JTReg kills the process tree on timeout - in case it does 
> using waitFor() would guarantee that there would be no zombies left. Without 
> using waitFor() and semantics of destroyForcibly() there might be situations 
> when non-functional stuck processes are left behind (not sure how probable, 
> however).

JTreg currently has no process tree handling - there is work in progress to add 
it as it is clearly desirable. 

/Staffan


> 
> -JB-
> 
>> 
>> /Staffan
>> 
>> 
>> On 25 sep 2014, at 11:54, Jaroslav Bachorik <jaroslav.bacho...@oracle.com> 
>> wrote:
>> 
>>> Please, review the following change to the JDK test library class
>>> 
>>> Issue : https://bugs.openjdk.java.net/browse/JDK-8059034
>>> Webrev: http://cr.openjdk.java.net/~jbachorik/8059034/webrev.00
>>> 
>>> Currently, the ProcessTools.startProcess() might leave a dangling process 
>>> behind when a timeout or interrupt happens. The solution is to try and 
>>> forcibly terminate the forked process when this happens.
>>> 
>>> Thanks,
>>> 
>>> -JB-
>> 
> 

Reply via email to