不可解バグの原因判明
id:mjt:20090310:p3 などでお騒がせしている trunk 版 Mosh の不可解なバグの原因が分かった。
原因
Fasl シリアライズ時に intern されたシンボルとされていないシンボルを区別せず、全て intern されたシンボルとして読み書きしていた。
これにより同じ文字列を持つシンボルに対して eq? が成り立ってしまい label->binding のテーブルが上書きされていた。
このバグの原因見つけるのが難しかった理由
観察用のコードを挿入すると gensym の index がずれることにより、現象が再現しなくなる。
修正
Fasl の read/write を直す予定。