📚
[bugs.ruby][Bug #20314] タイムアウトがネストしているときにブロックの後で例外が発生する可能性があるバグ報告
[Bug #20314] Simultaneous Timeout expires may raise an exception after the block
- 以下のように同時刻にタイムアウトの期限が切れたときにブロックの後に例外が発生する可能性がある、というバグ報告
require "timeout"
class A < Exception
end
class B < Exception
end
begin
Timeout.timeout(0.1, A) do
Timeout.timeout(0.1, B) do
nil while true
end
end
rescue A, B
p $! #=> #<A: execution expired>
# 上記の呼び出しが返ってきた後に例外 B が発生する
#=> test.rb:16:in `p': execution expired (B)
p :end # not reach
end
- いくつかの解決策も提示されていますが今の所これといった対応はまだされてないようですね
Discussion