永井@知能.九工大です.

From: Yukihiro Matsumoto <matz / ruby-lang.org>
Subject: [ruby-dev:25714] Re: pthread trouble on sighandler
Date: Fri, 18 Feb 2005 16:36:34 +0900
Message-ID: <1108712180.295727.8083.nullmailer / x31.priv.netlab.jp>
> In message "Re: [ruby-dev:25713] pthread trouble on sighandler"
>     on Fri, 18 Feb 2005 12:13:27 +0900, Hidetoshi NAGAI <nagai / ai.kyutech.ac.jp> writes:
> |暫く前から「 enable-pthread の Ruby 上で Tk インタープリタを
> |複数動かしている状況で,bgerror によるエラーダイアログが
> |表示されている際に Interrupt をかけると SEGV で落ちる」という
> |結構マイナーな状況 (^_^; の問題の解消を試みていたのですが,
> |Ruby の sighandler で,Ruby インタープリタが動いている
> |native thread 以外でのシグナルを無視することしか
> |確実な回避方法はなさそうです.
> 
> ふうむ。

最初は tcltklib の上でハンドラを再定義しようとしていたのですが,

 ・他所で変更されることに抵抗できない.

 ・Ruby/Tk に限らず,他でも生じる問題では?

ということから,signal.c の方を直接変更すべきではないかというのが
先の案です.

> |Ruby レベルでのハンドラでは無視でも問題ないのではないかと
> |思うのですが,場合によっては C レベルで native thread 対応の 
> |sighandler を独自に登録することもありうると考えて,
> |それ用の関数も用意してみたパッチが添付のものです.
> |
> |本当に「無視」で問題ないかについてはあまり自信はないのですが,
> |いかがなものでしょうか?
> 
> 試してみるというのはありだと思います。やってみてダメなら別の
> 手を考えるということで。ただ、posix_signal()って関数名はあん
> まり良くないんじゃないですかねえ。

え〜っと,posix_signal() って名前は元々存在していたもので,
私が作ったわけではありません.(^_^;

私が付けたのは ruby_signal だとか install_sighandler だとかで
_nativethread_ を間に挟んで ruby_nativethread_signal だとかに
しただけです.
既存のものと1対1対応するものを作っただけで,全くの新設というのは
していないはずです.

# 面倒くさかったので手抜きをしたというのが正解です.;;;^_^;;;
-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai / ai.kyutech.ac.jp