From: "kosaki (Motohiro KOSAKI)" Date: 2012-11-06T04:40:38+09:00 Subject: [ruby-core:48951] [ruby-trunk - Bug #7134] Signal handling bug in Mac OS X Issue #7134 has been updated by kosaki (Motohiro KOSAKI). File mutex_notrap.patch added Attached my fixing proposal. This patch masks trap handler invocation during IO lock held. But, I guess ko1 might dislike this approach because it slow down CHECK_INTS performance.... ---------------------------------------- Bug #7134: Signal handling bug in Mac OS X https://bugs.ruby-lang.org/issues/7134#change-32455 Author: auastro (Andy Kitchen) Status: Assigned Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: Target version: 2.0.0 ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12] On Mac OS X, running the attached program causes the exception below about 1/10 times it is run. $ ruby hup.rb hup.rb:2:in `write': deadlock; recursive locking (ThreadError) from hup.rb:2:in `puts' from hup.rb:2:in `puts' from hup.rb:2:in `block in
' from hup.rb:6:in `call' from hup.rb:6:in `write' from hup.rb:6:in `puts' from hup.rb:6:in `puts' from hup.rb:6:in `
' The expected output is: > In Hup Handler >Finished... or > Finished... > In Hup Handler My ruby is compiled with clang: $ clang --version Apple clang version 4.1 (tags/Apple/clang-421.11.65) (based on LLVM 3.1svn) Target: x86_64-apple-darwin12.2.0 Thread model: posix -- http://bugs.ruby-lang.org/