[#37679] [FEATURE:trunk] EncDet again — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

23 messages 2009/01/03

[#37748] $LOAD_PATHとバージョンの運用の関係 — akira yamada / やまだあきら <akira@...>

1.9系でのバージョンの運用と$LOAD_PATHの値について質問です。

12 messages 2009/01/09
[#37758] Re: $LOAD_PATHとバージョンの運用の関係 — "NARUSE, Yui" <naruse@...> 2009/01/11

成瀬です。

[ruby-dev:37685] [Bug #968] trap may fail to handle signals

From: Yusuke Endoh <redmine@...>
Date: 2009-01-03 15:57:25 UTC
List: ruby-dev #37685
チケット #968 が更新されました。 (by Yusuke Endoh)


遠藤です。

補足です。

シグナルが連続して送られたとき、その回数だけシグナルハンドラが呼ばれる
という保障は OS レベルで存在しないと聞きました。
ただ今の Ruby は、せっかくシグナルハンドラが呼ばれた場合でも trap を
呼び損ねる場合があります。

また、種類が異なるシグナルでも trap を呼び損ねる場合があるのですが、
Unix ではこれすら保障されないのでしょうか。

$ ./ruby -e '
n = 0
trap(:USR1) { n += 1 }
trap(:USR2) { n += 1 }

pid = $$
fork do
  sleep 0.5
  p "send start"
  Process.kill(:USR1, pid)
  Process.kill(:USR2, pid)
  p "send end"
end

p "calc start"
1000**100000 # wait
p "calc end"

p n
'
"calc start"
"send start"
"send end"
"calc end"
1


現在 test-all の TestSignal#test_exit_action が結構な確率で失敗しますが、
これも同じ問題のようで、前述のパッチを当てると通るようになります。
私の環境で高確率で 0F0E になるので、うれしいです (Rinda のテストが
稀に失敗しますが) 。


というわけで、積極的な反対がなければとりあえずコミットしてしまおう
と思います。

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

----------------------------------------
http://redmine.ruby-lang.org/issues/show/968

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

In This Thread