最初の ca で問題なく動作するマルチスレッド サーバー アプリケーションがあります。40 秒 (この間、アプリケーションは着信パケットを待っているだけです)。この 40 秒後、何も変更されていない、クライアントが接続されていない、データが送信されていないなどのにもかかわらず、突然クラッシュします。
Windows から受け取ったクラッシュ レポートは次のとおりです。
Problem signature:
Problem Event Name: APPCRASH
Application Name: myapplicationname.exe
Application Version: 0.0.0.0
Application Timestamp: 508d2a0b
Fault Module Name: StackHash_58df
Fault Module Version: 6.1.7600.16385
Fault Module Timestamp: 4a5bdb3b
Exception Code: c0000374
Exception Offset: 000cdcbb
OS Version: 6.1.7600.2.0.0.256.48
Locale ID: 1031
Additional Information 1: 58df
Additional Information 2: 58df710f17985997dec7b600103e4fd6
Additional Information 3: bc2b
Additional Information 4: bc2b581ed6e84cb4442c19134e8081d3
バッファ オーバーフローやメモリ リークの可能性をチェックしましたが、そうではありませんでした (少なくとも私は何も気づきませんでした)。
それとは別に、私をさらに混乱させたのは、コンパイルしてVisual Studio(ローカルWindowsデバッガー)で実行すると、このエラーは発生せず、クラッシュもせず、すべてが想定どおりに機能することです。このような問題が発生したことがないため、これを修正するためにどこから始めればよいかわかりません。
コードがないと何かを診断するのは難しいことはわかっていますが、コードが多すぎて、このエラーが何を意味し、何に関連しているのかわからないため、制限することはできません。誰かが似たようなことに遭遇したか、このエラーの意味を知っていることを願っています。これまでのところ、他のプログラムの同様の問題を修正する方法しか見つかりませんでした (アプリケーションを再インストールすることが答えでした)。
ワイルドな推測: コード全体を実装するところまで到達していないため、スレッドの 1 つに多くのストレスを与えているポーリング ループがあります。CPU の 1 つを保護するために、DEP が呼び出されてアプリケーションが停止する可能性はありますか? - 睡眠を追加しましたが、何も変わりませんでした.