Ignore the result of pthread_kill in ubf_wakeup_thread

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
be1bbd5b7d (MaNy).

I have not yet been able to create a minimal self-contained example,
but it should be safe to remove the checks.
This commit is contained in:
Jeremy Evans 2024-04-21 18:51:25 -07:00
Родитель 8ec1c416f7
Коммит ef3803ed40
1 изменённых файлов: 1 добавлений и 4 удалений

Просмотреть файл

@ -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