c++ builder > debug > スレッドが突然終わる症状


動作確認
C++ Builder XE4

TThreadを使ってスレッドで処理するプログラムがある。3ヶ月くらい大きなトラブルもなく動いていたが、突然そのプログラムのスレッドが停止するようになった。

スレッドの途中の処理においてログを見ていると、なぜか突然デストラクタが呼ばれてしまい終了している、という症状が何回も発生するようになっている。

仮に外部からTerminate関数がコールされてTerminateされるとしても、後処理の経路のログが出力されないといけないが出力されていない。何かよくわからないが突然デストラクタに飛んでいる。

そのスレッドが終了後も別のスレッドは普通に動いている。

結局行った対応は、Windowsのファイルシステムの修復だった (管理者権限でDosプロンプトにおいて sfc /scannow)。
修復を行った理由として、Explorer操作時に固まることが数回発生したため。

修復を行ってからは上記の症状が出ていないが、まだしばらく様子を見ている。
数時間でスレッドが落ちていた症状が27時間連続正常動作になった。

処理の途中でメモリ破壊をするような状況になっている可能性もゼロではない。