Issue #362 has been reported by Stanislav Senotrusov.

----------------------------------------
Bug #362: Signal handling meets threading
http://redmine.ruby-lang.org/issues/show/362

Author: Stanislav Senotrusov
Status: Open
Priority: Normal
Assigned to: 
Category: 
Target version: 


I found a bug and some workaround while trying to implement
termination watchdog.

ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux] on Ubuntu 8.04

Bug:
  # Run me and press Ctrl+C
  
  Signal.trap('INT') do
   Thread.new do
     puts "Got SIGINT"
     Thread.main.join(1)
     puts "Timeout is never reached!"
   end
  end
  
  sleep 100

And a workaround

  # Run me and press Ctrl+C
  
  killer = Thread.new do
   Thread.stop
  
   puts "Got SIGINT"
   Thread.main.join(1)
  
   puts "Timeout is reached!"
   Thread.main.raise "Timeout!"
  end
  
  Signal.trap('INT') do
   killer.run
  end
  
  sleep 100
  # ------------------------------


----------------------------------------
http://redmine.ruby-lang.org