Bug #11060
load(fifo) blocks whole process
Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0dev (2015-04-12 trunk 50257) [x86_64-linux]
Backport:
Description
fifo を load しようとすると、プロセス全体がブロックします。
以下では、0.1 秒毎に表示を行うスレッドを作っていますが、
0.5 秒後に load が呼ばれると表示が途切れます。
% mkfifo fifo.rb % ls -l fifo.rb prw-r--r-- 1 akr akr 0 Apr 12 17:13 fifo.rb % ./ruby -ve 'Thread.new { 0.step {|i| p i; sleep 0.1 } }; sleep 0.5; load "fifo.rb"' ruby 2.3.0dev (2015-04-12 trunk 50257) [x86_64-linux] 0 1 2 3 4 ^C5 -e:1:in `new': Interrupt from -e:1:in `load' from -e:1:in `<main>'
当然、timeout も効きません。
% ./ruby -rtimeout -ve 'Thread.new { 0.step {|i| p i; sleep 0.1 } }; sleep 0.5; timeout(1) { load "fifo.rb" }' ruby 2.3.0dev (2015-04-12 trunk 50257) [x86_64-linux] 0 1 2 3 4 ^C5 -e:1:in `new': Interrupt from -e:1:in `load' from -e:1:in `block in <main>' from /home/ruby/tst1/lib/ruby/2.3.0/timeout.rb:89:in `block in timeout' from /home/ruby/tst1/lib/ruby/2.3.0/timeout.rb:34:in `block in catch' from /home/ruby/tst1/lib/ruby/2.3.0/timeout.rb:34:in `catch' from /home/ruby/tst1/lib/ruby/2.3.0/timeout.rb:34:in `catch' from /home/ruby/tst1/lib/ruby/2.3.0/timeout.rb:104:in `timeout' from /home/ruby/tst1/lib/ruby/2.3.0/timeout.rb:125:in `timeout' from -e:1:in `<main>'
この挙動をバグと考えるべきかどうかはいまひとつ確信が持てないのですが、
いまのところバグであってもおかしくないと思っています。
Files
Related issues