From 08ddc335ea34829df756c164ceb13c56f0377d37 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Fri, 30 Oct 2020 16:47:08 +0900 Subject: [PATCH] sync vm->waiting_fds correctly. vm->waiting_fds is global resource so we need to lock it correctly. (forgot to sync one place) --- thread.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/thread.c b/thread.c index 007a5cbc7b..1512d645ed 100644 --- a/thread.c +++ b/thread.c @@ -4504,7 +4504,13 @@ rb_thread_wait_for_single_fd(int fd, int events, struct timeval *timeout) } while (wait_retryable(&result, lerrno, to, end)); } EC_POP_TAG(); - list_del(&wfd.wfd_node); + + RB_VM_LOCK_ENTER(); + { + list_del(&wfd.wfd_node); + } + RB_VM_LOCK_LEAVE(); + if (state) { EC_JUMP_TAG(wfd.th->ec, state); }