harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vera Petrashkova (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-1800) Harmony bug [classlib][drlvm] VM crashes when started via Runtime.exec(...) with null in cmd or envp elements
Date Tue, 10 Oct 2006 08:19:21 GMT
Harmony bug [classlib][drlvm] VM crashes when started via Runtime.exec(...) with null in cmd
or envp elements
-------------------------------------------------------------------------------------------------------------

                 Key: HARMONY-1800
                 URL: http://issues.apache.org/jira/browse/HARMONY-1800
             Project: Harmony
          Issue Type: Bug
          Components: DRLVM
         Environment: Windows and Linux
            Reporter: Vera Petrashkova


According to J2SE API specifications of java.lang.Runtime
exec(String[] cmdarray)
Throws:
    NullPointerException - If cmdarray is null, or one of the elements of cmdarray is null

exec(String[] cmdarray, String[] envp)
exec(String[] cmdarray, String [] envp, File dir)
Throws: 
    NullPointerException - If cmdarray is null, or one of the elements of cmdarray is null,
or one of the elements of envp is null

But, exec(...) do not throw NullPointerException when some element of cmdarray is null or
one of the element
of envp is null. Besides, started VM crashes.


Code for reproducing:

import junit.framework.TestCase;
import java.io.*;
public class testExec1 extends TestCase {
    
    public void testExec() {
        String [] cmdL = new String[5];
        cmdL[0] = System.getProperty("java.home")+File.separator+"bin"+File.separator+"java";
        cmdL[1] = "-classpath";
        cmdL[2] = ".";
        cmdL[3] = "testExec1_App"; 
        cmdL[4] = null;
        try {
            Process p = Runtime.getRuntime().exec(cmdL);
            p.waitFor();
            int ans = p.exitValue();
            InputStream is = p.getErrorStream();
            int toRead = is.available();
            byte[] out = new byte[100]; 
            int sz = 0;
            while (true) {
                int r = is.read();
                if (r == -1) {
                    break;
                }
                out[sz] = (byte)r;
                sz++;
                if (sz == 100) {
                    break;
                }
            }
            System.out.println("========Application error message======");
            System.out.println(new String (out, 0, sz));
            System.out.println("=======================================");

            fail("NullPointerException was not thrown. exitValue = " + ans);
        } catch (NullPointerException e) {
        } catch (Exception e) {
            e.printStackTrace();
            fail("Unexpected exception was thrown: " + e);     
        }
     }
}

class testExec1_App {
    public static void main(String[] args) {
System.out.println("-----------Ok----------");
         System.exit(0);
    }
}

Output on RI:
================== 
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)

.
Time: 0

OK (1 test)

Output on Harmony:
================
Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors,
as applicable.
java version "1.5.0"
pre-alpha : not complete or compatible
svn = r453981, (Oct  9 2006), Windows/ia32/msvc 1310, release build
http://incubator.apache.org/harmony
....VM Crashed!
Windows reported exception: ACCESS_VIOLATION
Registers:
    EAX: 0x00000000, EBX: 0x00000004, ECX: 0x006d6808, EDX=0x0013e600
    ESI: 0x00000400, EDI: 0x00000000, ESP: 0x0013e560, EBP=0x006d6bb8
    EIP: 0x005296f6
Stack trace:
        1: Java_java_lang_Runtime_00024SubProcess_createProcess0 (??:-1)
        2: apr_day_snames (??:-1)
<end of stack trace>



Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors,
as applicable.
java version "1.5.0" 
pre-alpha : not complete or compatible
svn = r453981, (Oct  9 2006), Linux/ia32/gcc 3.3.3, release build
http://incubator.apache.org/harmony
.========Application error message======
SIGSEGV in VM code.
Stack trace:
        1: strlen (??:-1)
        2: IP is 0x4113E77D <native code>
        3: java/lang
=======================================
F
Time: 0.325
There was 1 failure:
1) testExec(testExec1)junit.framework.AssertionFailedError: NullPointerException was not thrown.
exitValue = 129
        at testExec1.testExec(testExec1.java:35)
        at java.lang.reflect.VMReflection.invokeMethod(Native Method)
 
FAILURES!!!
Tests run: 1,  Failures: 1,  Errors: 0


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message