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

ruby-changes:72536

From: Jean <ko1@a...>
Date: Thu, 14 Jul 2022 02:40:03 +0900 (JST)
Subject: [ruby-changes:72536] 664c23db79 (master): GVL Instrumentation: remove the EXITED count assertion

https://git.ruby-lang.org/ruby.git/commit/?id=664c23db79

From 664c23db79dd0d500a834ef0ec8da443d95ddfd6 Mon Sep 17 00:00:00 2001
From: Jean Boussier <jean.boussier@g...>
Date: Wed, 13 Jul 2022 18:49:27 +0200
Subject: GVL Instrumentation: remove the EXITED count assertion

It's very flaky for some unknown reason. Something we have
an extra EXITED event. I suspect some other test is causing this.
---
 test/-ext-/thread/test_instrumentation_api.rb | 1 -
 thread.c                                      | 1 +
 thread_none.c                                 | 2 --
 thread_pthread.c                              | 9 ++-------
 thread_win32.c                                | 2 --
 5 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/test/-ext-/thread/test_instrumentation_api.rb b/test/-ext-/thread/test_instrumentation_api.rb
index a187a3c13f..dd620e7380 100644
--- a/test/-ext-/thread/test_instrumentation_api.rb
+++ b/test/-ext-/thread/test_instrumentation_api.rb
@@ -87,6 +87,5 @@ class TestThreadInstrumentation < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/-ext-/thread/test_instrumentation_api.rb#L87
 
   def assert_global_join_counters(counters)
     assert_equal THREADS_COUNT, counters.first
-    assert_include 0..THREADS_COUNT, counters.last # It's possible that a thread didn't execute its EXIT hook yet.
   end
 end
diff --git a/thread.c b/thread.c
index 7d1a4ee3fb..b9e9323801 100644
--- a/thread.c
+++ b/thread.c
@@ -631,6 +631,7 @@ thread_do_start(rb_thread_t *th) https://github.com/ruby/ruby/blob/trunk/thread.c#L631
 }
 
 void rb_ec_clear_current_thread_trace_func(const rb_execution_context_t *ec);
+#define thread_sched_to_dead thread_sched_to_waiting
 
 static int
 thread_start_func_2(rb_thread_t *th, VALUE *stack_start)
diff --git a/thread_none.c b/thread_none.c
index 00004ed4dd..cf4658e571 100644
--- a/thread_none.c
+++ b/thread_none.c
@@ -30,8 +30,6 @@ thread_sched_to_waiting(struct rb_thread_sched *sched) https://github.com/ruby/ruby/blob/trunk/thread_none.c#L30
 {
 }
 
-#define thread_sched_to_dead thread_sched_to_waiting
-
 static void
 thread_sched_yield(struct rb_thread_sched *sched, rb_thread_t *th)
 {
diff --git a/thread_pthread.c b/thread_pthread.c
index 8597479765..86ad279d7c 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -448,13 +448,6 @@ thread_sched_to_waiting(struct rb_thread_sched *sched) https://github.com/ruby/ruby/blob/trunk/thread_pthread.c#L448
     rb_native_mutex_unlock(&sched->lock);
 }
 
-static void
-thread_sched_to_dead(struct rb_thread_sched *sched)
-{
-    thread_sched_to_waiting(sched);
-    RB_INTERNAL_THREAD_HOOK(RUBY_INTERNAL_THREAD_EVENT_EXITED);
-}
-
 static void
 thread_sched_yield(struct rb_thread_sched *sched, rb_thread_t *th)
 {
@@ -1177,6 +1170,8 @@ thread_start_func_1(void *th_ptr) https://github.com/ruby/ruby/blob/trunk/thread_pthread.c#L1170
 #else
         thread_start_func_2(th, &stack_start);
 #endif
+
+        RB_INTERNAL_THREAD_HOOK(RUBY_INTERNAL_THREAD_EVENT_EXITED);
     }
 #if USE_THREAD_CACHE
     /* cache thread */
diff --git a/thread_win32.c b/thread_win32.c
index 714d601340..81fea585ac 100644
--- a/thread_win32.c
+++ b/thread_win32.c
@@ -137,8 +137,6 @@ thread_sched_to_waiting(struct rb_thread_sched *sched) https://github.com/ruby/ruby/blob/trunk/thread_win32.c#L137
     ReleaseMutex(sched->lock);
 }
 
-#define thread_sched_to_dead thread_sched_to_waiting
-
 static void
 thread_sched_yield(struct rb_thread_sched *sched, rb_thread_t *th)
 {
-- 
cgit v1.2.1


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

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