Review request: JDK-7147084 (process) appA hangs when read output stream of appB which starts appC that runs forever

Alexey Utkin alexey.utkin at
Mon May 13 14:44:36 UTC 2013

Thanks, Martin!

You are right. The approach

     private static String JAVA_EXE = System.getProperty("java.home")
         + File.separator + "bin"
         + File.separator + "java";

     private static String[] getCommandArray(String processName) {
         String[] cmdArray = {
         return cmdArray;

is better. There is one more problem with raise-condition for the file 
handles. In current edition there is delta when the file handle could be 
inherited by the concurrent process. That is not fatal for read/write, 
but not good for delete. Synchronized call does not cover the file.close 
in finalized block.

I will prepare new edition soon.


On 5/8/2013 10:20 PM, Martin Buchholz wrote:
> Alexey,
> Thanks for working on the scary windows process stuff.
> I only have time for superficial review.
> It looks like you know what you're doing.
> +        String[] cmdArray = {
> +            "java",
> +            "-cp",
> This looks like it's invoking whatever "java" is on the path.  But 
> there's no guarantee there is such a java, or that it's the right one. 
>  Consider invoking the java we're in, as in other jtreg tests like 
> IIRC ProcessBuilder/

More information about the core-libs-dev mailing list