[#27919] 1.8.4 Preview2 検証 — "URABE Shyouhei aka. mput" <root@...>
卜部です。
まつもと ゆきひろです
[#27944] Ruby 1.8.3 on FreeBSD — Masayoshi Takahashi <maki@...>
高橋征義です。
[#27991] GC.always — Tanaka Akira <akr@...17n.org>
というように、GC を常に動かすというのは GC 関連の問題を発見
まつもと ゆきひろです
In article <1134314081.457781.8573.nullmailer@x31.priv.netlab.jp>,
[#27997] 1.8.4 documents? — "URABE Shyouhei aka. mput" <root@...>
卜部です。
新井です。
新井です。
[#28010] IA64 BSPSTORE — Tanaka Akira <akr@...17n.org>
そういえば、IA64 で gc.c や eval.c に BSPSTORE レジスタの値
まつもと ゆきひろです
In article <1134478762.181062.2779.nullmailer@x31.priv.netlab.jp>,
[#28045] 1.8.4 what remains? — "URABE Shyouhei aka. mput" <root@...>
卜部です。
[#28082] ruby_1_8 Segmentation fault on Cygwin — yanagi@...
柳田です。
山本です。
こんにちは、なかむら(う)です。
山本です。
こんにちは、なかむら(う)です。
柳田です。
山本です。
[#28087] test(?-, file1, file2) — Tanaka Akira <akr@...17n.org>
マニュアルの test(?-, file1, file2) の説明に、
[#28109] Kernel#fail — "URABE Shyouhei aka. mput" <root@...>
さすがにもう誰も使ってないのではないかと思います。Kernel#failは廃止にし
[#28121] post_connection_check with javacc.dev.java.net — Tanaka Akira <akr@...17n.org>
ふと、https://javacc.dev.java.net/ を open-uri でアクセスすると、
[#28127] Intel C++ Compiler and HP aC++/ANSI C on IA64 — Tanaka Akira <akr@...17n.org>
TestDrive で IA64 上の Intel C++ Compiler and HP aC++/ANSI C
渡辺哲也です。
[#28140] ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — Tanaka Akira <akr@...17n.org>
HP-UX で HP aC++/ANSI C を使って作った ruby で、openssl や drb のテストをすると、
渡辺哲也です。
In article <200512280307.jBS37nnj005909@pbsg500.nifty.com>,
In message "[ruby-dev:28142] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError)"
山本です。
In article <20051228210640.13C71A10.ocean@m2.ccsnet.ne.jp>,
渡辺哲也です。
山本です。
山本です。
In article <20051229114438.44D19F00.ocean@m2.ccsnet.ne.jp>,
なかだです。
In article <ypvtr77wv7q9.wl%nobuyoshi.nakada@ge.com>,
なかだです。
In article <ypvtoe30v1zk.wl%nobuyoshi.nakada@ge.com>,
なかだです。
In article <ypvtmzikv11x.wl%nobuyoshi.nakada@ge.com>,
なかだです。
In article <ypvtwthol15x.wl%nobuyoshi.nakada@ge.com>,
[#28177] Generator dumps core — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#28178] accessing ruby_cbase (nil) dumps core — SASADA Koichi <ko1@...>
ささだです。
[#28181] zsuper (with define_method) dumps core — SASADA Koichi <ko1@...>
ささだです。
[#28182] generator.rb deadlocks — Tanaka Akira <akr@...17n.org>
RUBY_ALWAYS_GC= つきで test_generator.rb を動かすと deadlock が起きます。
[#28184] test_each(TC_SyncEnumerator) fails. — Tanaka Akira <akr@...17n.org>
deadlock は解決しましたが次のようにテストが失敗します。
[ruby-dev:28171] Re: thread based generator.rb
なかだです。
At Thu, 29 Dec 2005 16:12:38 +0900,
Tanaka Akira wrote in [ruby-dev:28166]:
> そして、Thread.list は呼び出されるたびに毎回生きているスレッ
> ドを集めて array を生成していますから、その結果に回収済みの
> オブジェクトを含むことはありません。
そういやそうでした。しかし、ちょっと面倒な感じ。
Index: eval.c
===================================================================
RCS file: /src/ruby/eval.c,v
retrieving revision 1.859
diff -U2 -p -r1.859 eval.c
--- eval.c 27 Dec 2005 16:35:57 -0000 1.859
+++ eval.c 29 Dec 2005 09:03:23 -0000
@@ -9756,4 +9756,17 @@ struct thread {
#define END_FOREACH(x) END_FOREACH_FROM(curr_thread,x)
+#define FOREACH_LIVE_THREAD_FROM(f, x) \
+ FOREACH_THREAD_FROM(f, x) \
+ switch ((x)->status) { \
+ case THREAD_TO_KILL: \
+ case THREAD_RUNNABLE: \
+ break; \
+ case THREAD_STOPPED: \
+ if ((x)->wait_for) break; \
+ default: \
+ continue; \
+ }
+#define FOREACH_LIVE_THREAD(x) FOREACH_LIVE_THREAD_FROM(curr_thread,x)
+
struct thread_status_t {
NODE *node;
@@ -9985,4 +9998,19 @@ static struct {
} new_thread;
+static int
+mark_loading_thread(ID key, VALUE value, int lev)
+{
+ rb_thread_t th = (rb_thread_t)value;
+ rb_gc_mark(th->thread);
+ return ST_CONTINUE;
+}
+
+static void
+mark_loading_tbl()
+{
+ if (!loading_tbl) return;
+ st_foreach(loading_tbl, mark_loading_thread, 0);
+}
+
void
rb_gc_mark_threads(void)
@@ -9994,5 +10022,7 @@ rb_gc_mark_threads(void)
if (!curr_thread) return;
- FOREACH_THREAD_FROM(main_thread, th) {
+ rb_gc_mark(main_thread->thread);
+ rb_gc_mark(curr_thread->thread);
+ FOREACH_LIVE_THREAD_FROM(main_thread, th) {
rb_gc_mark(th->thread);
} END_FOREACH_FROM(main_thread, th);
@@ -10002,4 +10032,5 @@ rb_gc_mark_threads(void)
rb_gc_mark(new_thread.arg);
}
+ mark_loading_tbl();
}
@@ -12528,4 +12559,5 @@ rb_callcc(VALUE self)
THREAD_ALLOC(th);
+ th->status = THREAD_STOPPED;
cont = Data_Wrap_Struct(rb_cCont, thread_mark, thread_free, th);
@@ -12645,5 +12677,5 @@ thgroup_list(VALUE group)
ary = rb_ary_new();
- FOREACH_THREAD(th) {
+ FOREACH_LIVE_THREAD(th) {
if (th->thgroup == data->group) {
rb_ary_push(ary, th->thread);
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦