Visual Studio 2010でイベント(、、)を使用して同期された2つのスレッドを実行するプログラムを作成しました。次のようになりSetEvent()
ます。WaitForSingleObject()
WaitForMultipleObjects()
デバッガーを使用してこのプログラムを実行すると、一定時間実行されてからクラッシュします
デバッグせずにこのプログラム(.exeファイル)を実行すると、直接クラッシュします
デバッガーを使用して別のコンピューターでこのプログラムを実行すると、すぐにクラッシュし、.exeファイルを介してしばらくするとクラッシュします
デバッグ時に次のエラーが報告されています。
Unhandled exception at 0x5eafcaf7 (msvcr100d.dll) in test.exe: 0xC0000005: Access violation reading location 0x0036f000.
どこから検索を開始すればよいかわからないので、誰かがこのトピックに光を当てることができますか?デバッガーでコードを実行する場合と実行しない場合の違いはどれですか?(どの種類のコードが追加されますか?)同じコードを実行すると、異なるコンピューターの動作が異なるのはなぜですか?
両方のコンピューターにまったく同じオペレーティングシステム(Windows 7)があり、同じライブラリとパッチを想定しています。
ご協力ありがとうございました!
2012年12月11日編集
Application Verifierをインストールしましたが、VisualStudioで次のようなエラーが表示されます。
===========================================================
VERIFIER STOP 0000000000000013: pid 0x1E18: first chance access violation for
current stack trace
000000000874F000 : Invalid address being accessed
000000005201CAF7 : Code performing invalid access
000000000009E440 : Exception record. Use .exr to display it.
000000000009DF50 : Context record. Use .cxr to display it.
===========================================================
どのアドレスがどのコード行に属しているかを確認して、例外が発生した場所を正確に知る方法を誰かが知っていますか?また、プログラムのヘルプで、コマンド「!heap p -a ACCESS_ADDRESS」を使用すると、エラーの性質とどのヒープブロックがオーバーランするかについての詳細が表示されることを読みました。Visual Studioを使用してこのコマンドをどこに配置する必要がありますか?