[#40961] [Bug #3137] complex.rb changes exceptions of Math — Yusuke Endoh <redmine@...>

Bug #3137: complex.rb changes exceptions of Math

15 messages 2010/04/12
[#40967] Re: [Bug #3137] complex.rb changes exceptions of Math — keiju@... (石塚圭樹) 2010/04/13

けいじゅ@いしつかです.

[#41038] Windows と DL が使用条件の libffi — Aaron Patterson <aaron.patterson@...>

こんにちは!アーロンです。

17 messages 2010/04/22
[#41039] Re: Windows と DL が使用条件の libffi — "U.Nakamura" <usa@...> 2010/04/22

こんにちは、なかむら(う)です。

[#41040] Re: Windows と DL が使用条件の libffi — "NARUSE, Yui" <naruse@...> 2010/04/22

成瀬です。

[#41059] Re: Windows と DL が使用条件の libffi — Aaron Patterson <aaron.patterson@...> 2010/04/26

2010/4/21 NARUSE, Yui <naruse@airemix.jp>:

[#41060] Re: Windows と DL が使用条件の libffi — Yugui <yugui@...> 2010/04/26

2010/4/26 Aaron Patterson <aaron.patterson@gmail.com>:

[#41067] [Feature #3203] LazySweepGC patch — Narihiro Nakamura <redmine@...>

Feature #3203: LazySweepGC patch

15 messages 2010/04/26
[#41069] Re: [Feature #3203] LazySweepGC patch — Yusuke ENDOH <mame@...> 2010/04/27

遠藤です。

[#41104] Rails3 M17N — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

29 messages 2010/04/30
[#41111] Re: Rails3 M17N — Urabe Shyouhei <shyouhei@...> 2010/04/30

Yukihiro Matsumoto =E3=81=95=E3=82=93=E3=81=AF=E6=9B=B8=E3=81=8D=E3=81=BE=

[#41113] Re: Rails3 M17N — Yukihiro Matsumoto <matz@...> 2010/04/30

まつもと ゆきひろです

[ruby-dev:40994] Re: [Bug #1952](Open) cannot stop with Ctrl+C

From: Yusuke ENDOH <mame@...>
Date: 2010-04-15 13:48:29 UTC
List: ruby-dev #40994
遠藤です。

2010年4月14日10:20 U.Nakamura <usa@garbagecollect.jp>:
> In message "[ruby-dev:40936] [Bug #1952](Open) cannot stop with Ctrl+C"
>     on Apr.09,2010 00:47:49, <redmine@ruby-lang.org> wrote:
>> 「終了時には全スレッドに例外を投げ、死ぬまで待つ」という
>> 仕様だと考えると、その例外を潰してしまうようなスレッドが
>> いれば、終了時に固まるのは当然ではないでしょうか。
>>
>>    begin; sleep; rescue Exception; retry; end
>>
>> が Ctrl+C で止められないのと同じだと思います。
>
> 元の再現コードはCtrl+C(=Interrupt)を潰していません。
> なので、同じではないと思います。間違ってるかしら。

全く同じではないですが、「終了しろー」という例外を潰している
点が同じだと思います。

Interrupt によってメインスレッドがプロセスの終了処理を開始し、
生きているサブスレッドに eTerminateSignal (Ruby レベルからは
見えない仮想的な例外) を投げてサブスレッドを全消ししようとし
ているのに、サブスレッド側がその例外潰している、というのが、
実際に起きていることです。
そう考えると、これは仕様かなーと思うのでした。


>> ということで、当該コミットを revert し、このチケットは
>> rejected とすることを提案します。
>
> SEGVは困ったもんなので、このこと自体に反対はしません。

どうしても直したいならば、

  - サブスレッドの終了待ち状態で SIGINT を受け取ったら、
    eTerminateSignal を再送する
    - しつこく Ctrl+C を押していればいつか終了できる、かも

  - eTerminateSignal を捕捉できない例外とする
    - サブスレッドの ensure が実行されない

  - eTerminateSignal を投げて数秒しても終わってくれない場合、
    捕捉できない例外を投げる
    - サブスレッドの ensure が実行されない危険が緩和されるが
      本質的に解決はしない。あとダサい

くらいを思いつきましたが、どれも問題がある or 面倒ですね。

new feature な気もするので、やるとしても 1.9.3 以降という
ことにして、今回は revert させてもらうことにします。

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

In This Thread