Issue #22096 has been updated by luke-gru (Luke Gruber). mame (Yusuke Endoh) wrote in #note-3:
Is it difficult to write a regression test for this?
I have [another PR](https://github.com/ruby/ruby/pull/17208/) for a similar issue that has 2 regressions tests. Those tests also cover this bug, but the fix itself is more involved so I made it a separate PR. This fix is for a code issue, whereas the other fixes a design issue. When that PR lands it will also need to be backported. ---------------------------------------- Bug #22096: Freeing a mutex locked by a fiber inside fiber scheduler can crash https://bugs.ruby-lang.org/issues/22096#change-117510 * Author: luke-gru (Luke Gruber) * Status: Open * Assignee: luke-gru (Luke Gruber) * Target version: 4.1 * Backport: 3.3: UNKNOWN, 3.4: UNKNOWN, 4.0: REQUIRED ---------------------------------------- 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) -- https://bugs.ruby-lang.org/