Skip to content

Commit

Permalink
Ignore the result of pthread_kill in ubf_wakeup_thread
Browse files Browse the repository at this point in the history
After an upgrade to Ruby 3.3.0, I experienced reproducible production crashes
of the form:

[BUG] pthread_kill: No such process (ESRCH)

This is the only pthread_kill call in Ruby. The result of pthread_kill was
previously ignored in Ruby 3.2 and below. Checking the result was added in
be1bbd5 (MaNy).

I have not yet been able to create a minimal self-contained example,
but it should be safe to remove the checks.
  • Loading branch information
jeremyevans committed May 7, 2024
1 parent 8ec1c41 commit ef3803e
Showing 1 changed file with 1 addition and 4 deletions.
5 changes: 1 addition & 4 deletions thread_pthread.c
Expand Up @@ -2569,10 +2569,7 @@ ubf_wakeup_thread(rb_thread_t *th)
{
RUBY_DEBUG_LOG("th:%u thread_id:%p", rb_th_serial(th), (void *)th->nt->thread_id);

int r = pthread_kill(th->nt->thread_id, SIGVTALRM);
if (r != 0) {
rb_bug_errno("pthread_kill", r);
}
pthread_kill(th->nt->thread_id, SIGVTALRM);
}

static void
Expand Down

0 comments on commit ef3803e

Please sign in to comment.