Project

General

Profile

Bug #6128

Thread#run does not work within signal handler

Added by mperham (Mike Perham) about 7 years ago. Updated about 7 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0]
Backport:
[ruby-core:43168]

Description

If I stop Thread.main, calling Thread.main.run in a signal handler does not wake up the main thread.

Please see this gist with a simple reproducible example:
https://gist.github.com/2014773

History

Updated by ko1 (Koichi Sasada) about 7 years ago

  • Status changed from Open to Rejected

trap handler (registered block) run on main thread. So Thread#run for main thread doesn't work.

You should use other ways to communicate trap handler and main thread, for example, Queue.

$q = Queue.new
trap(:INT){$q.push nil}

...
$q.pop # wait for trap handler

Also available in: Atom PDF