From: matz@... (Yukihiro Matsumoto) Date: 1997-04-25T18:18:11+09:00 Subject: [ruby-list:2862] Re: ruby 1.0-970425 released まつもと ゆきひろです. In message "[ruby-list:2861] Re: ruby 1.0-970425 released" on 97/04/25, Jun Kuroda writes: |黒田です。 | | >まつもと ゆきひろです | > | >こんどはいつものlinux 1.2.13(a.out),SunOS 4.1.3に加えて, | >freebsdでの動作を確認しました. | |linux2.0.28, SunOS5.5, IRIX6.2 で例の症状はみられなくなりま |した。ありがとうございました。 ああ,よかった.ことの顛末を報告すると (1) GCでマークし忘れのオブジェクトがあったが,新規にメンバ を入れる余地が無かった → 配列を1つずらして-1番目の要 素から参照するようにした. VALUE *vars = malloc((n+1)*sizeof(VALUE)); *vars++ = (VALUE)object_to_be_marked; scope->local_vars = vars; これにともないメモリリークを無くすようにした(実はまだ ちょっと残っている). (2) しかし,この1要素分ずれた配列をそのままreallocにかけて いた. scope->local_vars = realloc(scope->local_vars, new_size); freebsdでの最初のwarningはこれ.本当は VALUE *vars = scope->local_vars-1; vars = realloc(vars, new_size+1); scope->local_vars = vars+1; でないと(めんどうくさい). (3) しかも,1要素ずらしわすれていた場所もあった.わたなべさん のcore dumpはこれ. (4) 上記2点を直してやれやれとおもったら,今度はまだ使って いるメモリまで開放していた. (5) これらと格闘してから,友人のところのマシンでfreebsdで コンパイルした.今度はちゃんと動いたらしい. という次第でした.大変でした.しかも私が普段使っているマシン はこの辺がルーズみたいでちゃんと動いていたんでなおさらでした. 教訓: * 動いているプログラムに手を入れると動かなくなる * メモリ周りのバグはどえらい苦労する まつもと ゆきひろ /:|)