From: normalperson@... Date: 2018-07-08T02:53:24+00:00 Subject: [ruby-core:87869] [Ruby trunk Misc#14901] [PATCH] do not block SIGCHLD in normal Ruby Threads Issue #14901 has been reported by normalperson (Eric Wong). ---------------------------------------- Misc #14901: [PATCH] do not block SIGCHLD in normal Ruby Threads https://bugs.ruby-lang.org/issues/14901 * Author: normalperson (Eric Wong) * Status: Open * Priority: Normal * Assignee: k0kubun (Takashi Kokubun) ---------------------------------------- @k0kubun: 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). ``` ---Files-------------------------------- 0001-do-not-block-SIGCHLD-in-normal-Ruby-Threads.patch (2.5 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: