diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-06-27 10:09:33 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-06-27 10:09:33 +0000 |
commit | 92f5653f452e28ff6094fdcc35e280e27470f8ce (patch) | |
tree | dcaaf733121369149883e957766260c1fdc2a0af /process.c | |
parent | 6b534134a78e3e43c344682c3585e1abab015216 (diff) | |
download | ruby-92f5653f452e28ff6094fdcc35e280e27470f8ce.tar.gz |
process.c (waitpid_wait): do not set ECHILD prematurely
It is possible to have both MJIT and normal child processes
alive, so we cannot set ECHILD based on such a guess. We can
still elide waitpid(PID <= 0) calls if we have callers in
vm->waiting_pids, however.
For specs, ensure Process.waitall does not leak MJIT
PIDs to Rubyspace.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63764 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r-- | process.c | 6 |
1 files changed, 0 insertions, 6 deletions
@@ -1074,12 +1074,6 @@ waitpid_wait(struct waitpid_state *w) } else if (w->options & WNOHANG) { w->cond = 0; - - /* MJIT must be waiting, but don't tell Ruby callers about it */ - if (w->pid < 0 && !list_empty(&vm->waiting_pids)) { - w->ret = -1; - w->errnum = ECHILD; - } } else { w->cond = rb_sleep_cond_get(w->ec); |