[#37050] [Feature #735] Date#inspect — "rubikitch ." <redmine@...>

Feature #735: Date#inspect

14 messages 2008/11/09

[#37075] [Feature #747] /\A/u ignores BOM — Shyouhei Urabe <redmine@...>

Feature #747: /\A/u ignores BOM

14 messages 2008/11/12

[#37161] m17n of irb — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

35 messages 2008/11/24
[#37183] Re: m17n of irb — keiju@... (keiju ISHITSUKA) 2008/11/25

けいじゅ@いしつかです.

[#37203] Re: m17n of irb — "Yugui (Yuki Sonoda)" <yugui@...> 2008/11/26

keiju ISHITSUKA さんは書きました:

[#37292] Re: m17n of irb — Yukihiro Matsumoto <matz@...> 2008/12/06

まつもと ゆきひろです

[#37293] Re: m17n of irb — "Yugui (Yuki Sonoda)" <yugui@...> 2008/12/07

Yuguiです。

[#37298] Re: m17n of irb — Yukihiro Matsumoto <matz@...> 2008/12/07

まつもと ゆきひろです

[#37210] RSS::Maker.create(version) — "Akinori MUSHA" <knu@...>

 RSS::Maker で、 "2.0" 等の文字列でフィードのフォーマットを渡す

15 messages 2008/11/27

[#37213] Re: [ruby-cvs:27586] Ruby:r20368 (trunk): * ext/bigdecimal/bigdecimal.c (BigDecimal_div2): should return — Tadayoshi Funaba <tadf@...>

> * ext/bigdecimal/bigdecimal.c (BigDecimal_div2): should return

8 messages 2008/11/27

[ruby-dev:37102] Re: [Bug:1.9] 1+1+1+...+1 dumps core

From: Hiro Yoshioka <hyoshiok@...>
Date: 2008-11-16 15:04:12 UTC
List: ruby-dev #37102
はじめまして、よしおかと申します。

下記のバグなんですが、スタックオーバーフローでSIGSEGVの場合
リソースを使いきってしまうので、シグナルハンドラが動くリソース
すらなくなってしまって落るのではないかと思います。

対処法はBINARY HACKSなどに載っているsigaltstack(2)という代替
スタックを用意してあげれば対処できるのではないかと思います。

いずれにせよ、落ることにはかわりないんですが、どこで落ちて
いるかがわかる程度のことはあるかと。

下記はsigaltstack(2)を使って実装した例です。

$ ./ruby -e 'p eval("1+" * 14154 + "1")'
-e:1: [BUG] Segmentation fault
ruby 1.9.0 (2008-11-01 revision 20086) [i686-linux]

-- control frame ----------
c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC  :eval
c:0003 p:0018 s:0007 b:0006 l:000005 d:000005 TOP    -e:1
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH :inherited
c:0001 p:0000 s:0002 b:0002 l:000001 d:000001 TOP    <dummy toplevel>:17
---------------------------
-e:1:in `eval': stack level too deep (SystemStackError)
	from -e:1:in `<main>'

どのように対処したかは日記に記しましたので、ご笑覧ください。
http://d.hatena.ne.jp/hyoshiok/20081116

rubyのお作法を全然わかっていないので、変なコードになっている
とは思いますが、コメントいただけるとうれしいです。

よ
--
Hiro Yoshioka
Miracle Linux Corporation
http://blog.miraclelinux.com/yume/
http://d.hatena.ne.jp/hyoshiok/


From: "Yusuke ENDOH" <mame@tsg.ne.jp>
Subject: [ruby-dev:37007] [Bug:1.9] 1+1+1+...+1 dumps core
Date: Sat, 1 Nov 2008 00:07:42 +0900
Message-ID: <e0b1e5700810310807u103c8a18p7eda6a86af5eb7ae@mail.gmail.com>

> 遠藤です。
> 
> 以下で SEGV します。
> 
> 
> $ ./ruby -e 'eval("1+" * 100000 + "1")'
> セグメンテーション違反です
> 
> 
> iseq_compile_each の再帰でスタックオーバーフローするためです。
> 再帰数のチェックを入れれば例外にできると思いますが、こんな
> ケースのためにコンパイルを遅くするのはもったいない気もします。
> どんなものでしょう。WontFix 行き?
> 
> また、MVM 版だと SystemStackError として検知できるらしいです。
> 
> 
> ちなみに、パーサの方でスタックオーバーフローする場合は例外に
> なります (bison に依存するかもしれませんが) 。
> 
> 
> $ ./ruby -e 'eval("1+(" * 100000 + "1" + ")" * 100000)'
> -e:1:in `eval': (eval):1: memory exhausted (SyntaxError)
> ...+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1+(1...
> ...                               ^
>         from -e:1:in `<main>'
> 
> -- 
> Yusuke ENDOH <mame@tsg.ne.jp>
> 

In This Thread