首藤です。 このメイルが、自己紹介に続く ruby-list への 2度目のメイルかもしれません。 手元の ruby を 1.1c1 から 1.1c2 にしたところ、 多量の配列を扱うスクリプトが `[BUG] Segmentation fault' と動かなくなりました。 私の手元では次のコードで再現します。 array = Array.new(100000) GC.start printf() と gdb で原因を追いました。 配列の allocate のため、array.c の ary_s_new() が呼ばれます。 で、array.c l.191 ary->ptr = ALLOC_N(VALUE, ary->capa); つまり、gc.c l.51 xmalloc(sizeof(VALUE), ary->capa) が呼ばれます。 xmalloc() 中で malloc() に失敗すると、gc_gc() と GC を起動するようです。 このごみ集めの最中に、GC が作りかけの配列オブジェクトを触ります。 gc.c l.508 gc_mark(*ptr++) と、作りかけの配列の要素を mark しようとして、 SIGSEGV が発生します。 …しかし、1.1c1 -> 1.1c2 でスクリプトが動かなくなったのはなぜだろう??? 1.1c1 と 1.1c2 の diff を取ってみたのですが、わかりません… 自分の好きにできる、自分好みな言語をお持ちのまつもとさん、 心底うらやましいです。 SHUDO Kazuyuki/首藤一幸 私をたばねないで あらせいとうの花のように shudoh / muraoka.info.waseda.ac.jp