[#46908] [ruby-trunk - Bug #7774][Assigned] IFUNC上のbinding呼び出しでSEGV — "ktsj (Kazuki Tsujimoto)" <kazuki@...>

16 messages 2013/02/03

[#47075] [ruby-trunk - Bug #7924][Open] r39232 以降 net/http で正しく reponse を取得出来ないケースがある — "hsbt (Hiroshi SHIBATA)" <shibata.hiroshi@...>

15 messages 2013/02/23

[ruby-dev:47006] [ruby-trunk - Bug #5368] ensure節でsleepするようなThreadがあるとインタプリタが終了しない

From: "ko1 (Koichi Sasada)" <redmine@...>
Date: 2013-02-17 06:19:49 UTC
List: ruby-dev #47006
Issue #5368 has been updated by ko1 (Koichi Sasada).

Assignee changed from matz (Yukihiro Matsumoto) to kosaki (Motohiro KOSAKI)
Target version changed from 2.0.0 to 2.1.0

2.1 で結論を付けたいところ。
多分、まつもとさんはこの辺気にしないと思うので、小崎さん、たるいさん(と私かなぁ)で決めると良いと思います。
----------------------------------------
Bug #5368: ensure節でsleepするようなThreadがあるとインタプリタが終了しない
https://bugs.ruby-lang.org/issues/5368#change-36400

Author: Glass_saga (Masaki Matsushita)
Status: Assigned
Priority: Normal
Assignee: kosaki (Motohiro KOSAKI)
Category: core
Target version: 2.1.0
ruby -v: -


=begin
次のコードを実行するとCPU使用率が跳ね上がった状態になりインタプリタが終了しません。

 Thread.new do
   begin
     sleep
   ensure
     sleep
   end
 end

現在のrb_thread_terminate_allでは最初に1回だけ生きているスレッドに対してterminate_iを実行していますが、ensure節でsleepするようなThreadがあると、そのThreadは寝たままになってしまいwhile(!rb_thread_alone())が無限ループになってしまいます。

while(!rb_thread_alone())の毎回のループでカレントスレッドがメインスレッドであった場合に、生きているスレッドに対してterminate_iを実行するようなpatchを書いたところ、このバグは再現しなくなりました。
patchを添付します。patchの適用後もtest-allをパスします。
=end


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

In This Thread