[PATCH] do not block SIGCHLD in normal Ruby Threads
k0kubun (Takashi Kokubun): any opinions on this? Thanks.
I blocked SIGCHLD in normal Ruby Threads for [Bug #14867] because I noticed at least two places which could not deal with spurious wakeups in our test suite. I also want to get rid of timer-thread due to resource limitations [ruby-core:87773]. MJIT causes many SIGCHLD signals so I found the following problems with cppflags=-DMJIT_FORCE_ENABLE=1 * OpenSSL::PKey::*.new does not resume on handle signals. rhenium acknowledged the problem and it should be in trunk soon: https://bugs.ruby-lang.org/issues/14882 * test/-ext-/gvl/test_last_thread.rb does not handle spurious wakeups. Original report is in Japanese: https://bugs.ruby-lang.org/issues/11237 I don't think it's a realistic expectation for code to be unable to deal with spurious wakeups. One alternative could be to handle signals with MJIT thread when MJIT is enabled, or to lazy-spawn timer thread to handle signals when MJIT is enabled (MJIT + gcc requires a lot of resources, anyways).