続 コルーチンのバグ調査

なぜかバグの発生確率が下がってしまって、なかなかデバッグが捗りません。
クラッシュ時にgdbも道連れにするので、逆アセンブルリストと睨めっこしながらVC++のデバッガで調べています。
デバッガで追った限り、コルーチンの例外フレームに関するロジックは上手く動いているように見えます。
クラッシュ時はlibgccのW32_EH_SHARED::sjlj_fc_staticが壊れていて、W32_EH_SHAREDの他のメンバが壊れていないことから、コンテキスト切り替え時に退避しておいた例外フレームのポインタがコルーチン以外の処理で破壊されているんじゃないかと思います。


で、そこにブレーク張ってクラッシュを再現できればいいんですが、ソースレベルのデバッガが使えないせいで変数(多重ラップ&スマートポインタ内部)のアドレスを調べるのも一苦労です。
だんだん疲れてきました、、、。