[#24536] 「Rubyの落し方」 v.s. ruby_1_8 — akira yamada / やまだあきら <akira@...>

<URL:http://jp.rubyist.net/magazine/?0002-RubyCore>

40 messages 2004/10/20
[#24541] Re: 「Rubyの落し方」 v.s. ruby_1_8 — Yukihiro Matsumoto <matz@...> 2004/10/20

まつもと ゆきひろです

[#24599] 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/26

2004-10-20 (水) の 21:38 +0900 に Yukihiro Matsumoto さんは書きました:

[#24605] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-26 (火) の 16:16 +0900 に akira yamada / やまだあきら さんは書きました:

[#24606] Re: 1.8.2 preview3? — Yukihiro Matsumoto <matz@...> 2004/10/27

まつもと ゆきひろです

[#24608] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-27 (水) の 11:48 +0900 に Yukihiro Matsumoto さんは書きました:

[#24620] Re: 1.8.2 preview3? — akira yamada / やまだあきら <akira@...> 2004/10/27

2004-10-27 (水) の 12:42 +0900 に akira yamada / やまだあきら さんは書きました:

[#24629] Re: 1.8.2 preview3? — Tanaka Akira <akr@...17n.org> 2004/10/29

In article <1098888819.9446.14.camel@rice.p.arika.org>,

[ruby-dev:24427] Re: Auto stack growing on Mac OS X

From: Mitsuhiro Kondo <miche@...>
Date: 2004-10-04 06:08:30 UTC
List: ruby-dev #24427
近藤です。

On 2004/10/04, at 13:15, Tanaka Akira wrote:
>> Mac OS X(Darwin)ではLinuxのようにスタックが自動伸長しないので、racc等で
>> スタックが溢れてしまうことがあります。
>
> 誤解があるように思うのですが、Linux でもべつにスタックは自動的には伸長しません。
あ、これはまさに誤解していました。

> 思ったんですが、制限をなくしたいなら、なぜ RLIM_INFINITY にしないんで
> すか?  あるいは、soft limit を hard limit と同じにするとか。
たしかにその方が簡単ですね。
制限をなくしたい(減らしたい)と思ったのは、デフォルトのスタックサイズが小さめ
だったのとrubyの様な言語処理系の場合、実行時のスタックサイズを許容されている
範囲で大きくした方がよいのでは? と思ったからです。
Linux等でも、この変更は利便性を上げるものになるでしょうか?
それとも、なんらかの不具合の原因となる可能性があるでしょうか?

このパッチの場合、eval.cの変更は不要です。
またsetrlimitが失敗した場合は今まで通りです。

--- gc.c.orig   Sun Oct  3 01:34:33 2004
+++ gc.c        Mon Oct  4 14:42:50 2004
@@ -1455,4 +1455,10 @@ Init_stack(addr)
         struct rlimit rlim;

+#ifdef __APPLE__
+       if (getrlimit(RLIMIT_STACK, &rlim) == 0) {
+           rlim.rlim_cur = rlim.rlim_max;
+           setrlimit(RLIMIT_STACK, &rlim);     /* ignore errors */
+        }
+#endif
         if (getrlimit(RLIMIT_STACK, &rlim) == 0) {
             unsigned int space = rlim.rlim_cur/5;

---
近藤充弘


In This Thread