Project

General

Profile

Actions

Bug #362

closed

Signal handling meets threading

Added by senotrusov (Stanislav Senotrusov) almost 14 years ago. Updated about 11 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
-
[ruby-core:17970]

Description

=begin
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

------------------------------

=end

Actions

Also available in: Atom PDF