harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leo Li" <liyilei1...@gmail.com>
Subject [classlib][luni]Runtime.exec fails on Linux
Date Mon, 16 Oct 2006 08:17:09 GMT
Hi, all:
     The harmony Runtime.exec fails on Linux with ENOMEM.
     Here is the testcase:

public class Exec {
    public static void main(String[] args) throws Exception {

       Runtime.getRuntime().exec("ls");    }
}

    I have tried it on RedHat Enterprise 4 and Unbuntu, both get ENOMEM in
native code.

    After digging into it, I found it fails in procimpl.c, line 135:

        grdpid = fork ();

    If the call to fork is changed to vfork, the testcase will pass but
still get exitcode = 1 which indicates that some error has happened. The
difference between fork and vfork is just whether page tables is copied to
child process or not. But I do not think it is the main cause. Besides,
vfork has become outdated since it main usage is supplied by fork with
copy-on-write function implemented in modern linux kernel. Furthermore,
vfork is also not so safe as fork. So I do not think it is the accepted way
to solve the problem.

   I will try whether it can be reproduced on drlvm of linux since I am not
sure whether it is relevent to VM or classlib. If any drlvm man can tell me
the result, it can avoid my trouble to build it on linux. :)







-- 
Leo Li
China Software Development Lab, IBM

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message