diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2020-05-10 00:52:54 -0700 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2020-05-10 00:59:55 -0700 |
commit | 967ae6278f8429dc268f8d3252de048eba86fe29 (patch) | |
tree | f2af0853cf4476e5b649bfa97bd2a92bc3f54b4d /process.c | |
parent | 50a6d292c0ebfc2f35ee66efbb3b7ea44d5a0f94 (diff) | |
download | ruby-967ae6278f8429dc268f8d3252de048eba86fe29.tar.gz |
Run rb_syswait on exec failure
not only when !w but also when w == WAITPID_LOCK_ONLY.
See also: f7c0cc36920a4ed14a3ab1ca6cfdf18ceff1e5d5 and a2264342063260d660b99872eaf5080f6ab08e81.
We thought this change was an oversight in the latter commit.
Without this change, the test fails like:
$ make test-all TESTS="../test/ruby/test_process.rb -n test_exec_failure_leaves_no_child" RUN_OPTS="--jit"
...
1) Failure:
TestProcess#test_exec_failure_leaves_no_child [/home/k0kubun/src/github.com/ruby/ruby/test/ruby/test_process.rb:2493]:
Expected [[26799, #<Process::Status: pid 26799 exit 127>]] to be empty.
Co-Authored-By: Yusuke Endoh <mame@ruby-lang.org>
Diffstat (limited to 'process.c')
-rw-r--r-- | process.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -4046,7 +4046,7 @@ fork_check_err(int *status, int (*chfunc)(void*, char *, size_t), void *charg, "only used by extensions"); rb_protect(proc_syswait, (VALUE)pid, status); } - else if (!w) { + else if (!w || w == WAITPID_LOCK_ONLY) { rb_syswait(pid); } errno = err; |