3

私のアプリケーションは、適切なメッセージなしで突然クラッシュし始めました。

アプリケーションは任意の CPU で構築され、64 ビット マシンで実行されていました。

クラッシュ時、1.5GBメモリを約使用していました。

プロジェクトはすべての運用プロセスSQLCe4.0をバックエンド データベースとして格納しており、プロジェクトのサイズはほぼ2.8 GB.

Windows イベント ビューアーを確認すると、次のようなメッセージが表示されました。

Problem signature: 
  Problem Event Name: APPCRASH 
  Application Name: MyApp.exe 
  Application Version: 2.7.710.1137 
  Application Timestamp: 51dcf6b1 
  **Fault Module Name: StackHash_6bac** 
  Fault Module Version: 0.0.0.0 
  Fault Module Timestamp: 00000000 
  Exception Code: c0000005 
  Exception Offset: 000000007782000a 
  OS Version: 6.1.7601.2.1.0.256.1 
  Locale ID: 1033 
  Additional Information 1: 6bac 
  Additional Information 2: 6bac59273bcf6f09b20009b5873b0c76 
  Additional Information 3: 2600 
  Additional Information 4: 2600c3cc88a8c9bf041ae82fe9962258 

プライバシーに関する声明をオンラインで読む: http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409

オンラインのプライバシーに関する声明が利用できない場合は、オフラインでプライバシーに関する声明をお読みください。

C:\Windows\system32\en-US\erofflps.txt

失敗の正確な原因が何であるかを理解することはできません。

どんな助けでも大歓迎です。

4

1 に答える 1

5

Exception Code: c0000005ACCESS_VIOLATION です。つまり、プログラムが自身の外部のメモリ領域にアクセスしようとしています。障害アドレスにモジュールがロードさFault Module Name: StackHash_6bacれていないことを意味します。

答えは、アプリケーションがクラッシュしたとき、Windows の幹部は私たちがいたモジュールを特定できなかったということです (実行中のコードを判断するために命令ポインターを使用します)。この場合、カーネルは単にスタックのハッシュを取得するだけなので、少なくとも、これとまったく同じクラッシュが以前に発生したことがあるかどうかを特定できる可能性があります。Microsoft のエンジニアがまとめた回答は次のとおりです。

OS で障害のあるモジュール名を取得しようとすると、そのアドレスにモジュールがロードされていない (sic) 可能性があります。たとえば、この場合、EIP はゼロでした。したがって、モジュールがロードされておらず、アンロードされたモジュールのリストにもない場合は、スタックのスタック ハッシュを取得して、モジュールが不明な他のクラッシュからこのクラッシュを識別できるようにします。

これらすべてを考えると、おそらく何らかのリソース リークが発生しており、最終的にこのアクセス違反エラーにつながる可能性があります。

于 2013-07-10T11:35:27.643 に答える