Leo Li wrote:
It seems not quite related to actual memory stress although the reported error is ENOMEM. I have run it both in eclipse and console. And there are enough memory available. Furthermore, the case can be repeated even though in the same time a C program runs well when using fork(). I suspect that it is related with VM since it can be only reproduced by VM calling it. I am not sure whether vm does something behind me, but I have not thought out of a way that a user-space program have such effect.:)
I used to be able to consistently reproduce a similar bug (fork() failing...) by just having eclipse running at the same time.
IOW, with no other programs running, the fork() worked. With Eclipse running, it failed.
The only thing I could think of was that there was some problem with ulimit that I never could figure out...
geir
On 10/16/06, Geir Magnusson Jr. <[EMAIL PROTECTED]> wrote:I'm confused. Didn't you just report this on Ubuntu? I have had similar forking problems on Ubuntu 6 (I once found a bug in classlib related to forking...). I never figured out why Unbuntu does this, but it seemed that under memory stress, Ubuntu's fork() fails. Try this - close Eclipse and run the test again... geir Leo Li wrote: > Thank you. > I have just run it on drlvm of unbuntu, it works. > What a qurious problem! > > > On 10/16/06, Alexey Varlamov <[EMAIL PROTECTED]> wrote: >> >> Both DRLVM and J9 works for me (SUSE9). >> >> -- >> Alexey >> >> 2006/10/16, Leo Li <[EMAIL PROTECTED]>: >> > 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 >> > >> > >> >> --------------------------------------------------------------------- >> Terms of use : http://incubator.apache.org/harmony/mailing.html >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
