[前][次][番号順一覧][スレッド一覧]

ruby-changes:73587

From: nagachika <ko1@a...>
Date: Sat, 17 Sep 2022 14:05:44 +0900 (JST)
Subject: [ruby-changes:73587] 99d254d8b0 (ruby_3_1): merge revision(s) de51bbcb544651fb499dd4cc757a2bf6f3b439cf: [Backport #18816]

https://git.ruby-lang.org/ruby.git/commit/?id=99d254d8b0

From 99d254d8b025fd952375ed15c345ecc1b806652a Mon Sep 17 00:00:00 2001
From: nagachika <nagachika@r...>
Date: Sat, 17 Sep 2022 14:05:23 +0900
Subject: merge revision(s) de51bbcb544651fb499dd4cc757a2bf6f3b439cf: [Backport
 #18816]

	Use VM Lock when mutating waiting threads list

	`rb_thread_wait_for_single_fd` needs to mutate the `waiting_fds` list
	that is stored on the VM.  We need to delete the FD from the list before
	returning, and deleting from the list requires a VM lock (because the
	list is a global).

	[Bug #18816] [ruby-core:108771]

	Co-Authored-By: Alan Wu <alanwu@r...>
	---
	 thread.c | 6 +++++-
	 1 file changed, 5 insertions(+), 1 deletion(-)
---
 thread.c  | 6 +++++-
 version.h | 4 ++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/thread.c b/thread.c
index cf6e89327e..9476a7986a 100644
--- a/thread.c
+++ b/thread.c
@@ -4501,7 +4501,11 @@ select_single_cleanup(VALUE ptr) https://github.com/ruby/ruby/blob/trunk/thread.c#L4501
 {
     struct select_args *args = (struct select_args *)ptr;
 
-    list_del(&args->wfd.wfd_node);
+    RB_VM_LOCK_ENTER();
+    {
+        list_del(&args->wfd.wfd_node);
+    }
+    RB_VM_LOCK_LEAVE();
     if (args->read) rb_fd_term(args->read);
     if (args->write) rb_fd_term(args->write);
     if (args->except) rb_fd_term(args->except);
diff --git a/version.h b/version.h
index 838c82a9a1..70067b31ca 100644
--- a/version.h
+++ b/version.h
@@ -11,11 +11,11 @@ https://github.com/ruby/ruby/blob/trunk/version.h#L11
 # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
 #define RUBY_VERSION_TEENY 3
 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 52
+#define RUBY_PATCHLEVEL 53
 
 #define RUBY_RELEASE_YEAR 2022
 #define RUBY_RELEASE_MONTH 9
-#define RUBY_RELEASE_DAY 16
+#define RUBY_RELEASE_DAY 17
 
 #include "ruby/version.h"
 
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]