From: mail@... Date: 2014-05-16T19:13:14+00:00 Subject: [ruby-core:62631] [ruby-trunk - Bug #9835] IGNORE signal handler has possible race condition in Ruby 2.1.2 Issue #9835 has been updated by Marc Seeger. Thanks for the answer, Eric! If you look at the attached example (test.rb), you will see that there IS already a signal handler for USR1 registered (very bottom, before .run!). So even before we set IGNORE in the child, there is an inherited handler present that should circumvent the SignalException. (besides that, this would also fail to explain why an empty block fixes the issue and with IGNORE it keeps crashing.) ---------------------------------------- Bug #9835: IGNORE signal handler has possible race condition in Ruby 2.1.2 https://bugs.ruby-lang.org/issues/9835#change-46767 * Author: Kyle Smith * Status: Rejected * Priority: Low * Assignee: * Category: core * Target version: * ruby -v: ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- I'm migrating an application from 1.8.7 to 2.1.1/2.1.2, so I'm not sure when this was introduced. Attached is a demo program with some notes about how the IGNORE option to Signal.trap seems to have a race condition whereby receiving that signal shortly after that call, it raises a SignalException with the message including only the name of the signal it received. However, if you trap the signal with an empty block, that race does not occur. I've tested the attached program on 1.8.7 (no issue), 2.1.1 (issue) and 2.1.2 (issue) on a Linux system (Ubuntu lucid). ---Files-------------------------------- test.rb (1.37 KB) -- https://bugs.ruby-lang.org/