[#19457] equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org>

ふと気がついたのですが、

39 messages 2003/02/02
[#19460] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/03

まつもと ゆきひろです

[#19473] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044245817.592933.31973.nullmailer@picachu.netlab.jp>,

[#19474] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19475] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044329220.257740.28127.nullmailer@picachu.netlab.jp>,

[#19476] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19477] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044331431.138035.28173.nullmailer@picachu.netlab.jp>,

[#19478] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19479] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044332948.099873.28206.nullmailer@picachu.netlab.jp>,

[#19482] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19486] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044338964.502066.28474.nullmailer@picachu.netlab.jp>,

[#19491] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19493] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19556] compare between String and Exception — Tanaka Akira <akr@...17n.org> 2003/02/12

さらに気が付いたのですが、

[#19514] [Oniguruma] Version 1.7.1 — "K.Kosako" <kosako@...>

ftp.ruby-lang.orgに、onigd20030207.tar.gzを置きました。

19 messages 2003/02/07

[#19548] [PATCH] file.c for (PR#389) and (PR#390) — nobu.nakada@...

なかだです。

20 messages 2003/02/11
[#19572] Re: [PATCH] file.c for (PR#389) and (PR#390) — pegacorn@... 2003/02/14

From: nobu.nakada@nifty.ne.jp

[#19648] Re: SEGV at search_method in eval.c (PR#400) — nobu.nakada@...

なかだです。

13 messages 2003/02/24

[ruby-dev:19629] Re: [ruby-cvs] ruby: * eval.c (rb_thread_remove): thread may die in the process of

From: matz@... (Yukihiro Matsumoto)
Date: 2003-02-21 03:18:34 UTC
List: ruby-dev #19629
In message "[ruby-dev:19626] Re: [ruby-cvs] ruby: * eval.c (rb_thread_remove): thread may die in the process of"
    on 03/02/21, nobu.nakada@nifty.ne.jp <nobu.nakada@nifty.ne.jp> writes:
|
|なかだです。
|
|At Thu, 20 Feb 2003 10:09:32 +0000,
|matz wrote:
|>   Log:
|>     * eval.c (rb_thread_remove): thread may die in the process of
|>       rb_thread_die().  this change was suggested by Rudi Cilibrasi
|>       <cilibrar@drachma.ugcs.caltech.edu>.
|
|たぶんこれだと思うんですが、rb_thread_wait_other_threads()で無
|限ループになります。
|
|$ ruby -e 'Thread.new {}'
|
|というか、そもそもrb_thread_die()はスレッドをTHREAD_KILLEDにす
|るための関数なので、mayじゃなくてmustだろうと思うんですが、どう
|いう指摘だったんでしょうか。

こんな感じ。MPI Rubyで動かないってことですね。でも、言われて
みれば確かにそうですよねえ。

				まつもと ゆきひろ /:|)




In message "Thread bug + fix for ruby 1.8.0 CVS snapshot / MPI-Ruby fix"
    on 03/02/13, Rudi Cilibrasi <cilibrar@drachma.ugcs.caltech.edu> writes:
|
|
|Hi Matz,
|
|I must compliment you on your excellent language Ruby which I use
|enthusiastically at work.  I have noticed that there seems to be a
|bug with thread scheduling and cleanup, and have found a fix which
|may be useful to you.  In particular, I am using MPI Ruby, which works
|fine until the program cleans up ready to exit, and then segfaults.
|I am working against the latest CVS snapshot, Ruby version 1.8.0.
|After adding the two lines I detail below to eval.c, I find that MPI-Ruby
|works fine as hoped.  Please look for 'cilibrar' marker.
|
|Best regards,
|
|Rudi
|
|--------------------------------------------------------------------------
|
|In eval.c, two lines are added; the first is in rb_thread_remove,
|on line 7909:
|static void
|rb_thread_remove(th)
|    rb_thread_t th;
|{
|    if (th->status == THREAD_KILLED) return;
|
|    rb_thread_ready(th);
|    rb_thread_die(th);
|    if (th->status == THREAD_KILLED) return; /* cilibrar */
|    th->prev->next = th->next;
|    th->next->prev = th->prev;
|}
|This double check is necessary, because a thread may be killed extraneously.
|
|Secondly, on line 8937 in rb_thread_start_0:
|   rb_thread_schedule();
|   exit(0); /* cilibrar */
|   return 0;\\/* not reached */
|
|This seems helpful because the not-reached part of code can be reached
|on termination of last Ruby thread.

In This Thread