[#15067] rb_eval_string — OJ <oj@...7.com>

OJです。

39 messages 2001/11/08
[#15068] Re: rb_eval_string — nobu.nakada@... 2001/11/08

なかだです。

[#15069] Re: rb_eval_string — OJ <oj@...7.com> 2001/11/08

OJです。

[#15071] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15077] Re: rb_eval_string — OJ <oj@...7.com> 2001/11/09

OJです。

[#15078] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/09

わたなべです。

[#15083] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

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

[#15088] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15089] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

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

[#15092] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15096] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

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

[#15109] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15112] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

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

[#15114] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15115] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

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

[#15119] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15121] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

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

[#15124] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15126] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

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

[#15174] strange behavior about PTY.spawn — akira yamada / やまだあきら <akira@...>

18 messages 2001/11/15
[#15176] Re: strange behavior about PTY.spawn — matz@... (Yukihiro Matsumoto) 2001/11/15

まつもと ゆきひろです

[#15251] Re: [ruby-ext:01999] Re: syslog module is becoming ready — "Akinori MUSHA" <knu@...>

 というわけで 1.7 に syslog モジュールを入れました。

43 messages 2001/11/26

[#15270] ruby on NetBSD — "U.Nakamura" <usa@...>

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

25 messages 2001/11/28
[#15271] Re: ruby on NetBSD — Takahiro Kambe <taca@...> 2001/11/28

In message <20011128181510.3D11.USA@osb.att.ne.jp>

[#15272] Re: ruby on NetBSD — "U.Nakamura" <usa@...> 2001/11/28

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

[#15278] Re: ruby on NetBSD — Takahiro Kambe <taca@...> 2001/11/28

In message <20011128182726.3D14.USA@osb.att.ne.jp>

[#15296] Re: ruby on NetBSD — "U.Nakamura" <usa@...> 2001/11/29

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

[#15298] time.rb — Tanaka Akira <akr@...17n.org>

というわけで、timex.rb 改め time.rb が rough に入ったのでご意見募集です。

27 messages 2001/11/29

[ruby-dev:15239] gc.c (gc_mark_rest): declare work area as static

From: "K.Kosako" <kosako@...>
Date: 2001-11-22 07:21:17 UTC
List: ruby-dev #15239
現在のGCのアルゴリズム(matz-sheepman)を少し変更しようと思って、
テスト用スクリプトを書いているうちに、GCが永遠に戻ってこない
現象を発見しました。(最新版です)

gc_mark_rest()から再帰的に呼ぶ事のできるrb_gc_mark()の深さが、
この現象が起こる場合、一段階だけになっているのが原因で永久に
終わらないようです。
本来、一段階だけでも処理は進む筈ですが、要素に自己参照をもつ配列オブジェクトが
存在しているらしく(但しこのオブジェクトがどこで作られたものかは調べきれません
でした。すみません。スクリプト実行中ではないような)、絶対に進まなくなって
しまいます。

一段階しか呼べない原因は、gc_mark_rest()でローカルに定義している
tmp_arryが大きいからのようなので、添付のパッチのように修正してみました。
(この現象がなくても、gc_mark_rest()が呼ばれるのはスタックに余裕がないときなので、
この修正は行ったほうが、きっと速度的にも良いと思います)

Linux i386です。同じ環境でないと再現させるのは難しいかもしれません。
nestの深さを変えればできるかも。

GC::disable

gc = lambda {
  puts "GC start..."
  GC::enable
  GC::start
  GC::disable
  puts "GC end"
}

def nest(level, what)
  if level == 0
    what.call
  else
    nest(level - 1, what)
  end
end

x = nil
for i in 1..100
  x = [x]
end

nest(4470, gc)


--- gc.c.orig	Thu Nov 22 00:41:26 2001
+++ gc.c	Thu Nov 22 15:33:27 2001
@@ -454,7 +454,7 @@
 static void
 gc_mark_rest()
 {
-    VALUE tmp_arry[MARK_STACK_MAX];
+    static VALUE tmp_arry[MARK_STACK_MAX];
     VALUE *p;
 
     p = (mark_stack_ptr - mark_stack) + tmp_arry;

--
小迫@ソフネック   渋谷区恵比寿1-15-1

In This Thread

Prev Next