From: matz@... (Yukihiro Matsumoto) Date: 1998-11-02T18:29:49+09:00 Subject: [ruby-list:10581] Re: syntax error in thread まつもと ゆきひろです In message "[ruby-list:10546] Re: syntax error in thread" on 98/11/01, Shin-ichro Hara writes: |原です。 |同感です。「スレッドに親子関係はない」というのがポリシーらしいですが、 |例外に関しては「大親」が存在しているしていて子の例外を食ってしまう様 |な印象があります。 大親がいるってより,一度スタートしたスレッドはなにがあっても 密かに死んでしまうっていうイメージなんですが. |ところで、上の raise をパラメータなしで | | parent.raise | |としたばあい、parent に例外が渡らない仕様になっているのは、何か |理由があったんでしたっけ? デフォルトの例外ってのは省略値があるからこそのデフォルトです から.健康なスレッドにいきなり例外を送りつけるこのメソッドは なにがあったのかくらい明示すべきだと考えました. |----------------------- |1.1c6 では、 中略 |が Illegal Instruction になったり、Segmentation fault になるのは |バグですかね。 バグです.パッチ. PATCH: thread raise --- eval.c 1998/09/08 09:17:32 1.1.1.2.2.80 +++ eval.c 1998/11/02 09:18:37 @@ -6253,2 +6252,3 @@ int state; + enum thread_status status; @@ -6290,4 +6290,5 @@ POP_TAG(); + status = th->status; thread_remove(); - if (state && th->status != THREAD_TO_KILL && !NIL_P(errinfo)) { + if (state && status != THREAD_TO_KILL && !NIL_P(errinfo)) { if (state == TAG_FATAL) {