«前の日記(2003年11月27日) 最新 次の日記(2003年11月29日)» 編集

Matzにっき


2003年11月28日 [長年日記]

_ [OSS]オープンソースウェイ2003

のスライドは完成。公開は発表後ね。

_ [Ruby]GCデバッグ

最初月曜に出すと言ったpreview3だが、月曜は休日ということで火曜に変更。 しかし、まだ出ていないのだった*1

気になっていたのがGCのバグ。手元でtest suiteを実行するとセグメンテーションフォールトを起こすのだ。 さすがに手元のテストに合格しないままpreviewを出すのは心苦しい。

SEGVの原因はGCマーク。どうやら、こういうことらしい。

  • test suiteではGCをいじめるため非常に長いリンク(10000リンク長)のオブジェクト群を作っている
  • それをマークすると再帰が深くなる
  • GCマークはスタックの深さを調査して深くなり過ぎるとアルゴリズムを切り替えるようになっている
  • ...はずだったが、なにかの加減で予想よりはるかに浅いところでSEGVする

最初は-lpthreadをリンクしたせいだと思っていたのだが、-lpthreadのリンクを外しても問題は依然として発生する。 libc6のバージョンの問題かなあ(libc6 2.3.2.ds1-9)。

もともとGCマークはそんなに深い再帰をしなくても構わないはずなので、 自力で再帰レベルを管理して、ある程度(現状250)以上深くなれば再起を使うのをあきらめることにする。

これでtestは通るようになった..けど、明日のソフトウェア特許研究会も気になるし、 previewリリースにはもうちょっとかかるかな。

*1  12月1日現在まだリリースされてません


«前の日記(2003年11月27日) 最新 次の日記(2003年11月29日)» 編集