Re: [Sablevm-developer] Fixed(?) problem with exec()
Brought to you by:
egagnon
From: Etienne G. <gag...@uq...> - 2004-03-04 05:20:32
|
Hi Greg, You and David now have write access to create 1.1.x tags: /sablevm/tags/sablevm-1\.1\.[^/]+/ = @sablevm-staging(add,remove,properties) (same for sablevm-test-suite, sablevm-classpath, and sablejit). So, feel free to make development releases when you wish. Etienne Grzegorz B. Prokopski wrote: > Hi all, > > I need a confirmation, as I haven't touched this stuff yet and > I might be just missing something. > > exec() is broken in current staging and 1.1.0. If you tried to run > such a simple program: > > public class ExecTest { > public static void main(String []args) { > try { > Process child = Runtime.getRuntime().exec("/bin/sleep 1"); > child.waitFor(); > } > catch(Exception e) { > System.out.println("Execution exception catched"); > } > System.out.println("Execution finished"); > } > } > > $ sablevm -Y ExecTest > Java_java_lang_ProcessImpl_nativeWaitFor: No child processes > Child did not exit normally. > > strace showed that waitpid() is called twice, second time after > the child exited. So I scratched my head and after 3 minutes in > src/libsablevm/java_lang_ProcessImpl.c in ..._nativeWaitFor > i saw more less such thing: > > waitpid(pid, &status, 0); > > if (nonblocking) { > waitpid(pid, &status, WNOHANG); > } else { > waitpid(pid, &status, 0); > } > > Existence of the first waitpid makes no sense to me. I commented > it out in just-uploaded sablevm Debian packages as it seemed to > solve the problem. > > Am I missing anything or should it get to staging too? > > It's quite "grave" thing, I'd say. If it wasn't me who'd have to > make the next release, I'd push for 1.1.1 ASAP :-/ > > Cheers, > > Grzegorz B. Prokopski > -- Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |