Cannot stop with Ctrl+C

Issue #1952 has been updated by Akira T…

Assignee changed from Yukihiro M. to Koichi Sasada
Priority changed from High to Normal
% Done changed from 100 to 0

開発者会議で笹田さんなどと議論したところ、
以下のスクリプトで、2回め以降の ^C で 1 が表示されないのはバグであるという
結論になりました。

% ruby -ve ’
Thread.new do
begin
begin
p 1
sleep
ensure
raise
end
rescue
retry
end
end.join

ruby 2.0.0dev (2012-03-16 trunk 35049) [x86_64-linux]
1
^C1
^C^C^C^C^C^C^C

^C でメインスレッドが死んだ後、他のスレッドを殺すのに
各スレッドに例外を投げるわけですが、一発で死なない場合、
それ以降人間が ^C を送っても無視される、というのが問題で、
人間が ^C を送る度に例外を再度投げるのが適切であろう、
という点には合意に達して、笹田さんが直すとのことです。

なお、何回投げても死なない、というのはプログラムがそのように書かれているということで、
それを無理やり殺す、というのは、New Feature であろう、ということで
上記の直す範囲には入りません。


Feature #1952: cannot stop with Ctrl+C
https://bugs.ruby-lang.org/issues/1952#change-24691

Author: Usaku NAKAMURA
Status: Assigned
Priority: Normal
Assignee: Koichi Sasada
Category: core
Target version: 2.0.0

=begin
以下のスクリプトがCtrl+Cで停止せず、Ctrl+C押下後はkill -9でしか殺せません。

Thread.new do
begin
begin
sleep
ensure
raise
end
rescue
retry
end
end.join
=end

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs