MinGWでのクラッシュ解決

えー、結局バグってたのは暑さで蕩けた自分の脳みそでした。
マルチスレッドのプログラムなのに、マルチスレッドのオプションがオフになっていたのが原因です。
Jamfile.v2に「<threading>multi」を書き足したら動きました。
Jamfile.v2の差分


発覚までの流れはこうです。
まず、昨日のメモリ破壊の可能性を検証するため、該当変数の前後にパディングを追加して実行してみました。→変化なし
メモリ破壊ではないっぽいので、退避する例外フレームをダンプしながらテストしていたところ、奇妙なコールスタックでクラッシュしました。
アセンブルリストと照合したところ、なんと例外を投げた後で別スレッドに切り替わっていました。
クラッシュした箇所はHamigaki.AudioのDLLの中で、そこにはシングルスレッド版の例外処理コードが存在していました。
ここにきてようやくシングルスレッドでコンパイルしていることに気が付きました。
BBv2のmsvc-8.0ツールセットはマルチスレッド用にしかコンパイルしないので問題なかったんですね。


というわけで、コルーチンは(細かいバグはありましたけど)バグってませんでした。
つまらないバグで4日も潰してしまいました。