harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin Zhou (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-6004) [classlib] [luni] System.exec() gets interruption will cause InternalError
Date Thu, 30 Oct 2008 03:23:44 GMT
[classlib] [luni] System.exec() gets interruption will cause InternalError
--------------------------------------------------------------------------

                 Key: HARMONY-6004
                 URL: https://issues.apache.org/jira/browse/HARMONY-6004
             Project: Harmony
          Issue Type: Bug
          Components: Classlib
    Affects Versions: 5.0M7
            Reporter: Kevin Zhou
             Fix For: 5.0M8


Conduct a test case [1] on HY5 and RI. 
Modify the final part of Support_Exec from [2] to [3].

RI works well while HY5 throws InternalError.

[1]. SystemProcessTest
 public void test_interrupt() throws Exception {
        Object[] execArgs = null;
        Process process = null;
        try {
            Thread.currentThread().interrupt();
            execArgs = Support_Exec.execJava2(
                    new String[] { "tests.support.Support_AvailTest" }, null,
                    true);
            process = (Process) execArgs[0];
            OutputStream os = process.getOutputStream();
            os.write("10 5 abcde".getBytes());
            os.close();
            process.waitFor();
            fail("Should throw InterruptedException");
        } catch (InterruptedException e) {
            // Expected
        }
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // Ignored
        }        
        process.waitFor();
        Support_Exec.checkStderr(execArgs);
        process.destroy();
    }

[2]. 
synchronized (proc) {
    errThread.start();
    // wait for errThread to start
    proc.wait();

[3].
synchronized (proc) {
    errThread.start();
    // wait for errThread to start
    int count = 0;
    boolean isFinished = false;
    while(!isFinished) {
        try {
            proc.wait();
            isFinished = true;
        } catch (InterruptedException e) {
            if(++count == 2) {
                throw e;
            }
        }
    }
    if(count > 0) {
        Thread.currentThread().interrupt();
    }
}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message