From: nagachika00@... Date: 2019-08-18T04:33:35+00:00 Subject: [ruby-core:94407] [Ruby master Bug#15992] An exception breaks monitor state and cause deadlock Issue #15992 has been updated by nagachika (Tomoyuki Chikanaga). Backport changed from 2.5: REQUIRED, 2.6: REQUIRED to 2.5: REQUIRED, 2.6: DONE ruby_2_6 r67742 merged revision(s) f91879a7b548284c93743168acfd11e3d2aeefac. ---------------------------------------- Bug #15992: An exception breaks monitor state and cause deadlock https://bugs.ruby-lang.org/issues/15992#change-80827 * Author: naruse (Yui NARUSE) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: * Backport: 2.5: REQUIRED, 2.6: DONE ---------------------------------------- lib/monitor.rb provides Monitor. But its state handling is weak for interrupts caused by Thread.kill for example timeout libraries. Timeout exception may happen everywhere. If it raised when the thread is executing ```ruby def mon_exit mon_check_owner @mon_count -=1 if @mon_count == 0 @mon_owner = nil # HERE!!! @mon_mutex.unlock end end ``` It breaks the state of the monitor and it causes deadlock. -- https://bugs.ruby-lang.org/ Unsubscribe: