зеркало из https://github.com/github/ruby.git
process.c (waitpid_cleanup): unconditionally remove from waiters
This is the safer option, as there seems to be cases where checking waitpid_state.ret is insufficient in ensure. I'm not 100% sure why this is, but this change was required for my work-in-progress Thread::Light patch series, too... git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64782 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
f0f13cff72
Коммит
41cf596dfd
|
@ -1106,7 +1106,11 @@ waitpid_cleanup(VALUE x)
|
|||
{
|
||||
struct waitpid_state *w = (struct waitpid_state *)x;
|
||||
|
||||
if (w->ret == 0) {
|
||||
/*
|
||||
* XXX w->ret is sometimes set but list_del is still needed, here,
|
||||
* Not sure why, so we unconditionally do list_del here:
|
||||
*/
|
||||
if (TRUE || w->ret == 0) {
|
||||
rb_vm_t *vm = rb_ec_vm_ptr(w->ec);
|
||||
|
||||
rb_native_mutex_lock(&vm->waitpid_lock);
|
||||
|
|
Загрузка…
Ссылка в новой задаче