[ruby-dev:50189] Re: [Ruby trunk Bug#13768] SIGCHLD and Thread dead-lock problem

From: keiju@... (keiju ISHITSUKA)
Date: 2017-07-27 05:54:56 UTC
List: ruby-dev #50189
けいじゅ@いしつかです.

ko1@atdot.net wrote:

> Issue #13768 has been updated by ko1 (Koichi Sasada).
> これ、dead-lock の定義の問題なので、ちょっと議論が要るような気がして
> います。

signalで外部イベントをを待つのも, selectとかで外部入力を待っている(た
めにデッドロックしているように見える)のも外部から何らかの通知を待って
いることには変わらないと思いうのですが?

> > Signal.trapを設定していたら常にデッドロックではない、とすべきというところでしょうか。
> 
> いいんかな、これで。例えば、webrick 使ってたらデッドロック検出出来な
> いとか。

たしかに, SIGINTを設定しただけでデッドロックが検出できなくなるのも不便
かも知れません.

シグナルに関しては, そのあとの処理内容にもよるので, trap時に何らかの指
定をすれば, デッドロックの検出をしなくなるととか?

あとは, singanl専用のConditionVariable(SigCV)みたいなのを用意するとい
うのもあるかも.

待つ方は SigCVでwaitして, signalハンドラ側でSigCVにsignalする. デッド
ロック検知側はSigCV.waitで待っている場合はデッドロックとしない.

いかがでしょう? 仕様はもっとつめる必要があるとは思いますが?

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---

In This Thread

Prev Next