[#13087] importing forwardable — "Akinori MUSHA" <knu@...>

 石塚さんの forwardable.rb を標準添付ライブラリにするべく、

11 messages 2001/05/02

[#13169] SizedQueue#pop causes deadlock — "Okada Jun" <yun@...>

岡田です。

18 messages 2001/05/13
[#13171] Re: SizedQueue#pop causes deadlock — "Akinori MUSHA" <knu@...> 2001/05/13

At Sun, 13 May 2001 14:11:18 +0900,

[#13176] Re: SizedQueue#pop causes deadlock — matz@... (Yukihiro Matsumoto) 2001/05/13

まつもと ゆきひろです

[#13177] Re: SizedQueue#pop causes deadlock — "Akinori MUSHA" <knu@...> 2001/05/13

At Mon, 14 May 2001 00:24:45 +0900,

[#13187] Re: SizedQueue#pop causes deadlock — matz@... (Yukihiro Matsumoto) 2001/05/13

まつもと ゆきひろです

[#13202] Re: [ruby-list:29672] Re: Enumerator — "Akinori MUSHA" <knu@...>

 ruby-dev に移ります。

26 messages 2001/05/15
[#13208] Re: [ruby-list:29672] Re: Enumerator — matz@... (Yukihiro Matsumoto) 2001/05/15

まつもと ゆきひろです

[#13259] Enumerator -- Round 2 — "Akinori MUSHA" <knu@...>

 もう一度、 Enumerable/Enumerator についてみなさんのご意見を

29 messages 2001/05/20
[#13260] Re: Enumerator -- Round 2 — matz@... (Yukihiro Matsumoto) 2001/05/20

まつもと ゆきひろです

[#13265] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/21

At Mon, 21 May 2001 06:04:32 +0900,

[#13268] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/21

原です。

[#13270] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/21

At Mon, 21 May 2001 15:00:11 +0900,

[#13289] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/22

原です。

[#13290] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/22

At Tue, 22 May 2001 19:02:10 +0900,

[#13291] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/22

原です。

[#13293] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/22

At Tue, 22 May 2001 20:57:02 +0900,

[#13305] Re: Enumerator -- Round 2 — Shin-ichiro HARA <sinara@...> 2001/05/24

原です。

[#13322] Re: Enumerator -- Round 2 — "Akinori MUSHA" <knu@...> 2001/05/24

At Thu, 24 May 2001 15:44:14 +0900,

[#13277] ext/dbm in ruby 1.7 — Kazuhiro NISHIYAMA <zn@...>

ruby 1.7のext/dbmですが、

16 messages 2001/05/21
[#13280] Re: ext/dbm in ruby 1.7 — matz@... (Yukihiro Matsumoto) 2001/05/21

まつもと ゆきひろです

[#13292] Integer("X") rescue -1 が parse error — YASUI Kentarow <kenyasui@...>

安井です。

18 messages 2001/05/22
[#13294] Re: Integer("X") rescue -1 が parse error — matz@... (Yukihiro Matsumoto) 2001/05/22

まつもと ゆきひろです

[#13295] Re: Integer("X") rescue -1 が parse error — "Akinori MUSHA" <knu@...> 2001/05/23

At Wed, 23 May 2001 08:59:50 +0900,

[#13300] 1.6.4 preview3 (Re: Re: Integer("X") rescue -1 が parse error) — matz@... (Yukihiro Matsumoto) 2001/05/24

[#13304] Re: 1.6.4 preview3 (Re: Re: Integer("X") rescue -1 が parse error) — "Akinori MUSHA" <knu@...> 2001/05/24

At Thu, 24 May 2001 14:15:04 +0900,

[#13428] mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...>

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

19 messages 2001/05/31
[#13435] Re: mswin32/ming32 system patch (experimental) — nobu.nakada@... 2001/06/01

なかだです。

[#13442] Re: mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...> 2001/06/01

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

[#13446] Re: mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...> 2001/06/02

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

[#13450] Re: mswin32/ming32 system patch (experimental) — nobu.nakada@... 2001/06/04

なかだです。

[ruby-dev:13204] rb_thread_wait_other_threads() never end

From: Shugo Maeda <shugo@...>
Date: 2001-05-15 15:09:54 UTC
List: ruby-dev #13204
前田です。

At Tue, 15 May 2001 18:49:30 +0900,
matz@zetabits.com (Yukihiro Matsumoto) wrote:
> |Queueを同期に使っているとInterruptによって
> |Queueをにぎったままスレッドが死んでしまう一方で
> |それなのにメインスレッドだけ生きのこっていてアレレ…
> |と, そんなようなことが起こっていたように思っています
> |(rb_thread_{stop,run,schedule}あたりをぐるぐるまわっているようでした).
> 
> ふうむ。

ちょっと調べてみました。

1. rb_thread_cleanup()ですべてのスレッドのstatusがTHREAD_TO_KILL
になる。
2. rb_thread_wait_other_threads()でTHREAD_TO_KILLなスレッドに制御
がわたった時、ensureブロックでcontext switchがおこる。
3. 同じスレッドにふたたび制御がもどった時にはnext->flags &
THREAD_TERMINATINGが真なのでRESTORE_NORMALでコンテクストの復帰が
行われる。
4. そのスレッドでrb_thread_stopが呼ばれて、statusがTHREAD_STOPPED
になる。
5. main_thread以外にはTHREAD_STOPPEDなスレッドしかいないのでいつ
までたってもrb_thread_wait_other_threads()がおわらない。

ということのようです。

> やっぱりバグだと思う。でも、どうしたら良いのかはちょっと分か
> りませんけど。

rb_thread_wait_other_threads()でTHREAD_STOPPEDなスレッドのみになっ
た場合には、あきらめてしまってはどうでしょう。

--- eval.c.orig	Tue May 15 23:35:38 2001
+++ eval.c	Wed May 16 00:04:47 2001
@@ -8321,8 +8321,19 @@
 static void
 rb_thread_wait_other_threads()
 {
+    rb_thread_t th;
+    int found;
+
     /* wait other threads to terminate */
     while (curr_thread != curr_thread->next) {
+	found = 0;
+	th = curr_thread->next;
+	while (th != curr_thread) {
+	    if (th->status != THREAD_STOPPED)
+		found = 1;
+	    th = th->next;
+	}
+	if (!found) return;
 	rb_thread_schedule();
     }
 }


-- 
前田 修吾
スレッドは難しい。

In This Thread