From: Motohiro KOSAKI Date: 2011-06-05T22:45:24+09:00 Subject: [ruby-core:36759] [Ruby 1.9 - Bug #4777] Ruby 1.9.2-p180 ignoring INT, TERM, and QUIT until it receives CONT Issue #4777 has been updated by Motohiro KOSAKI. OK, I and Endoh-san investigated more. I bet the guilty linux regression is below. Ruby's timer thread is using pthread_cond_timedwait() and it is using futex_wait() internally. And, more importantly, this fixing patch was already backported to 2.6.38.4. Thus, the issue is really Ubuntu specific, unfortunately. see https://bugzilla.kernel.org/show_bug.cgi?id=32922 --------------------------------------------------------------------- commit 0cd9c6494ee5c19aef085152bc37f3a4e774a9e1 Author: Darren Hart Date: Thu Apr 14 15:41:57 2011 -0700 futex: Set FLAGS_HAS_TIMEOUT during futex_wait restart setup The FLAGS_HAS_TIMEOUT flag was not getting set, causing the restart_block to restart futex_wait() without a timeout after a signal. Commit b41277dc7a18ee332d in 2.6.38 introduced the regression by accidentally removing the the FLAGS_HAS_TIMEOUT assignment from futex_wait() during the setup of the restart block. Restore the originaly behavior. Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=32922 Reported-by: Tim Smith Reported-by: Torsten Hilbrich Signed-off-by: Darren Hart Signed-off-by: Eric Dumazet Cc: Peter Zijlstra Cc: John Kacur Cc: stable@kernel.org Link: http://lkml.kernel.org/r/%3Cdaac0eb3af607f72b9a4d3126b2ba8fb5ed3b883.1302820917.git.dvhart%40linux.intel.com%3E Signed-off-by: Thomas Gleixner ---------------------------------------- Bug #4777: Ruby 1.9.2-p180 ignoring INT, TERM, and QUIT until it receives CONT http://redmine.ruby-lang.org/issues/4777 Author: Nathan Sobo Status: Third Party's Issue Priority: Normal Assignee: Category: Target version: ruby -v: - We're having an intermittent but fairly frequent issue with a resque worker process that we're daemonizing with daemontools on Ubuntu 10.04 LTS When we send a QUIT or TERM signal to the process, it is not handled. When we send a CONT, the process traps and handles QUIT and TERM signals that were ignored just before handling the CONT. It's as if the CONT frees the signals that were previously ignored. -- http://redmine.ruby-lang.org