年末から悩んでいたバグを修正
手続きの呼び出し回数が閾値を超えた場合に JIT コンパイラが発動する。という機能を組み込んだところ、エラー手続きが再帰してスタックがガンガン拡張する不具合に遭遇。
調べていくと (current-exception-handler) の値がおかしくなる事が判明。この時点で全く原因分からず悩む。(current-exception-handler) は parameterize を使っているのでその内部状態を調べると、突然データが壊れる。そりゃエラーハンドラが壊れたらバグが分かりにくくなるよね。
結果としては JIT コンパイル結果が不正になるパターンがあって、その呼び出しで値が壊れてた。こういうバグを防いだり検知する方法を考えるべきだ。