From 92f5653f452e28ff6094fdcc35e280e27470f8ce Mon Sep 17 00:00:00 2001 From: normal Date: Wed, 27 Jun 2018 10:09:33 +0000 Subject: 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 --- process.c | 6 ------ 1 file changed, 6 deletions(-) (limited to 'process.c') diff --git a/process.c b/process.c index dbdcade71a..69b6632955 100644 --- a/process.c +++ b/process.c @@ -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); -- cgit v1.2.3