Project

General

Profile

Bug #22096

Updated by luke-gru (Luke Gruber) 4 months ago

While freeing a locked mutex, if there is a waiter for the mutex it could call `rb_fiber_scheduler_unblock` which calls into Ruby code. 

 The function `rb_mutex_unlock_th` was a footgun because it was used during normal Ruby code and also during GC. The fix is to not call this function during GC and simply remove the mutex from `th->keeping_mutexes`. 

 [PR](https://github.com/ruby/ruby/pull/17204) 

 [Backport PR](https://github.com/ruby/ruby/pull/17241) 

Back