diff options
author | Jean Boussier <[email protected]> | 2023-02-06 09:29:39 +0100 |
---|---|---|
committer | Jean Boussier <[email protected]> | 2023-03-06 13:10:42 +0100 |
commit | 704dd25812f34228a28f37c37757a675ad078a2b (patch) | |
tree | 2482f2434bcbf9632aaa5aaba7e16ad84d5351d5 /thread_pthread.c | |
parent | 22d944c8b76be04dc437100c46626db5fe9dd7f0 (diff) |
TestThreadInstrumentation: emit the EXIT event sooner
```
1) Failure:
TestThreadInstrumentation#test_thread_instrumentation [/tmp/ruby/src/trunk-repeat20-asserts/test/-ext-/thread/test_instrumentation_api.rb:33]:
Call counters[4]: [3, 4, 4, 4, 0].
Expected 0 to be > 0.
```
We fire the EXIT hook after the call to `thread_sched_to_dead` which
mean another thread might be running before the `EXIT` hook have been
executed.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7249
Diffstat (limited to 'thread_pthread.c')
-rw-r--r-- | thread_pthread.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/thread_pthread.c b/thread_pthread.c index 944570767e..693d8f10e8 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -450,6 +450,13 @@ thread_sched_to_waiting(struct rb_thread_sched *sched) } static void +thread_sched_to_dead(struct rb_thread_sched *sched) +{ + RB_INTERNAL_THREAD_HOOK(RUBY_INTERNAL_THREAD_EVENT_EXITED); + thread_sched_to_waiting(sched); +} + +static void thread_sched_yield(struct rb_thread_sched *sched, rb_thread_t *th) { rb_thread_t *next; @@ -1171,8 +1178,6 @@ thread_start_func_1(void *th_ptr) #else thread_start_func_2(th, &stack_start); #endif - - RB_INTERNAL_THREAD_HOOK(RUBY_INTERNAL_THREAD_EVENT_EXITED); } #if USE_THREAD_CACHE /* cache thread */ |