山本です。

条件がいまいちふめいで色々絡んでて難しそうですが、
なんとか作ってみようと思います。

----- Original Message ----- 
From: <nobu.nakada / nifty.ne.jp>
To: "ruby developers list" <ruby-dev / ruby-lang.org>
Sent: Thursday, July 03, 2003 6:13 PM
Subject: [ruby-dev:20492] Re: [BUG] evalがらみでSIGSEGV


> なかだです。
>
> At Tue, 1 Jul 2003 15:37:45 +0900,
> yamamoto madoka wrote:
> > ./foo.rb:26: [BUG] Segmentation fault
> > ruby 1.8.0 (2003-06-30) [i686-linux]
> >
> > 該当部分のコードは以下のようなものです。
> >
> > if Array != val.class
> >
> > osはredhat8です。
> >
> > 発生するスクリプトまたもスレッド、ソケット、さらにevalを使ったものです。
> > (一連のバグはすべて同じスクリプトで発見してます)
>
> すいません、これだけだとちょっと手がかりが少ないのですが、再現
> できるスクリプトなどはないでしょうか。
>
> > 出るタイミングはまたしても、たまに出る、という感じです。
> > 場所も、GC.startなどを挟むと変わります。
>
> おそらくGC絡みだと思いますが、SEGVしたときにはもう肝心の部分が
> 壊れてしまってるので。
>
> > Program received signal SIGSEGV, Segmentation fault.
> > 0x08056c27 in rb_eval (self=1075325136, n=0x6c6f6f74) at ruby.h:630
> > 630         if (SYMBOL_P(obj)) return rb_cSymbol;
>
> 実際にはその次の
>     return RBASIC(obj)->klass;
> で、既に開放されているobjをアクセスしてるんでしょう。
>
> -- 
> --- 僕の前にBugはない。
> --- 僕の後ろにBugはできる。
>     中田 伸悦
>