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 = {
            JAVA_EXE,
            "-cp",
            System.getProperty("java.class.path"),
            InheritIOEHandle.class.getName(),
            processName
        };
        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.

Regards,
-uta



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/Basic.java

Reply via email to