[#26266] pragma on ripper — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
こんにちは、なかむら(う)です。
なかだです。
[#26284] ext/tk/sample/tkextlib/tile/demo.rb で TypeError — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26298] ext/tk/sample/tkextlib/tile/themes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26305] ext/tk/sample/tkextlib/ICONS/viewIcons.rb — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
永井@知能.九工大です.
[#26312] rb_gc_mark_threads spin — Tanaka Akira <akr@...17n.org>
最近、とあるプログラム(五月雨)が、無限ループに陥ることが何回かありました。
なかだです。
In article <TYOMLEM04FRaqbC8wSA00000024@tyomlvem02.e2k.ad.ge.com>,
なかだです。
In article <TYOMLEM04FRaqbC8wSA00000025@tyomlvem02.e2k.ad.ge.com>,
なかだです。
In article <TYOMLEM04Rqf69aZbLA0000002d@tyomlvem02.e2k.ad.ge.com>,
なかだです。
In article <200506101543.j5AFhToG009328@sharui.nakada.niregi.kanuma.tochigi.jp>,
In article <8764wlil9l.fsf@m17n.org>,
なかだです。
In article <200506111335.j5BDZkoG019423@sharui.nakada.niregi.kanuma.tochigi.jp>,
まつもと ゆきひろです
In article <1118583170.298416.26464.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1118586617.180748.27381.nullmailer@x31.priv.netlab.jp>,
[#26324] XMLRPC charset — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#26358] test failures and errors — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#26387] warningを減らす — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#26405] WEBrick DoS vulnerability — Tanaka Akira <akr@...17n.org>
NetBSD 2.0 で WEBrick を使って HTTP サーバを動かした場合、クライアント
ごとうゆうぞうです。
In article <20050708.175802.957830318.gotoyuzo@sawara.does.notwork.org>,
In message <87fyupzgcq.fsf@m17n.org>,
In article <20050708.211519.179953950.gotoyuzo@sawara.does.notwork.org>,
In message <87d5ptzdpc.fsf@m17n.org>,
前田です。
In article <42CF1AF2.5000407@ruby-lang.org>,
In message <878y0erpv7.fsf@m17n.org>,
[#26410] irbのlexerが数値認識に失敗 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#26417] test.rb failed 167W: ruby 1.9.0 (2005-06-30) [i686-linux] (boron) — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#26421] Subversion — Shugo Maeda <shugo@...>
前田です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
山本です。
須藤です.
In article <20050703.152549.41008576.kou@cozmixng.org>,
[ruby-dev:26345] Re: rb_gc_mark_threads spin
まつもと ゆきひろです
In message "Re: [ruby-dev:26343] Re: rb_gc_mark_threads spin"
on Sun, 12 Jun 2005 22:53:42 +0900, Tanaka Akira <akr@m17n.org> writes:
|あるスレッドが終了した後、他のスレッドが IO 待ちだと、次に動作するスレッ
|ドが決めるのに select する必要がありますが、その select がブロックする
|と任意の長い時間存在することになります。[ruby-dev:26128] はそういうケー
|スです。つまり、少なくとも [ruby-dev:26128] が再現する環境では後者です。
|
|そして、select には fd_set が必要で、rb_fd_init 導入以降そこで GC が起
|こることがあります。そのときに curr_thread が環状リストから外れている
|ので rb_gc_mark_threads が無限ループになるというのが今回の原因です。
これは rb_gc_mark_threads でFOREACH_THREAD_FROM(main_thread)
を使うことで対応した部分ですね。これで[ruby-dev:26312]で報告
されている無限ループは対処できてると思いますが、どうですか?
|えぇと、後からいろいろと思うところが出てきたのですが、まず
| rb_thread_main_jump(ruby_errinfo, RESTORE_EXIT);
|というのをてきとうに他からコピーしてきてしまったんですが、ruby_errinfo
|を設定した覚えがないので参照するのはよろしくないように思います。
確かに。terminate_process()の中で行っているように
rb_class_new_instance(2, args, rb_eSystemExit)
を使うべきでしょうね。
|また、そもそも signal は main thread に届くという仕様なので、届いた瞬
|間に偶然動いていたスレッドを遡って終了させてから main thread に伝播す
|るのではなく、直接 main thread に送るほうが適切だと思います。
おっしゃる通りで、rb_thread_interrupt()はそのつもりで書いて
ます。今回はrb_exit()という話ですから、どこかで「signalが届
いた瞬間偶然動いたスレッドを終了させてからmain threadに伝搬
させる」ようなコードがあるということですね。それは見落としで
すから、直す必要があります。どこでしたっけ(trap以外で)。
|さらに、trap で EXIT にすると任意のタイミングで終了させられるようなの
|ですが、これは危険ではないでしょうか。まぁ、これは安全な signal
|handling とからむので、そう単純な話ではありませんが。
それでもmain_threadでexitするべきでしょうね。ちょっと考えて
みます。trap_exec()をいつもmain threadで実行するようにすれば
良いのかなあ。
# とか言ってたら中田さんが実装してくれたりして。^^;;;
まつもと ゆきひろ /:|)