In article <704d5db90805221615u363dea36h4dbc5382768f08b7 / mail.gmail.com>,
  "Shugo Maeda" <shugo / ruby-lang.org> writes:

> disconnectではソケットをcloseしているのでreceiver_threadは終了するはず
> です。
> そうなっていないとすると、killを呼ぶようにする前に、他に修正すべきところが
> あるんじゃないかと思います。

disconnect を越えて receiver_thread が生き残らないという性質
はあっていいんじゃないかと思います。

今回は receiver_thread が Thread#raise を使っていたので変な
ことが起きましたが、これを使わなくても、
* 誰かが Thread.abort_on_exception を設定しており、
* receiver_thread が例外で終了する
場合に、同様のことが起こります。

disconnect は close でエラーが起こると join しませんが、
エラーが起きても join するというのはどうですかねぇ。

あ、kill は避けたほうがいいと私も思います。
-- 
[田中 哲][たなか あきら][Tanaka Akira]