1

.NET 3.5 コンパクト フレームワーク上で完全に C# で記述されたアプリケーションがあり、ネイティブ例外でランダムな瞬間にクラッシュしているようです。私のアプリケーションは、これらの例外をログに記録せず、ただ終了します。アプリケーションが何時間も実行されることもあれば、アプリケーションを起動して 5 分後にクラッシュすることもあります。

時々生成されるダンプ ファイルを保存してきましたが、スローしている dll (netcfagl3_5.dll) のデバッグ シンボルがないため、何が問題なのか理解するのが困難です。エラーはアクセス違反ですが、WinDbg からの出力を読み込もうとするとイライラします。

FAULTING_IP: 
netcfagl3_5_7b37d000+152b4
7b3922b4 043092e5 ldr         r3,[r2,#4]

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 7b3922b4 (netcfagl3_5_7b37d000+0x000152b4)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000000
   Parameter[1]: ffffffd4
Attempt to read from address ffffffd4

FAULTING_THREAD:  890fa60a

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.

EXCEPTION_PARAMETER1:  00000000

EXCEPTION_PARAMETER2:  ffffffd4

READ_ADDRESS:  ffffffd4 

FOLLOWUP_IP: 
netcfagl3_5_7b37d000+152b4
7b3922b4 043092e5 ldr         r3,[r2,#4]

APP:  nk.exe

BUGCHECK_STR:  APPLICATION_FAULT_INVALID_POINTER_READ_ZEROED_STACK

PRIMARY_PROBLEM_CLASS:  INVALID_POINTER_READ

DEFAULT_BUCKET_ID:  INVALID_POINTER_READ

LAST_CONTROL_TRANSFER:  from 7b394094 to 7b3922b4

STACK_TEXT:  
2546ec78 7b394094 : 01d5ebec 890fa60a ffffffd0 ffffffd0 : netcfagl3_5_7b37d000+0x152b4
2546ec84 2551cc4c : 01d5ebec 890fa60a ffffffd0 ffffffd0 : netcfagl3_5_7b37d000+0x17094
2546ec90 7b385280 : 01d5ebec 890fa60a ffffffd0 ffffffd0 : 0x2551cc4c
2546ec9c 7b38536c : 01d5ebec 890fa60a ffffffd0 ffffffd0 : netcfagl3_5_7b37d000+0x8280
2546ece8 7b38eb2c : 01d5ebec 890fa60a ffffffd0 ffffffd0 : netcfagl3_5_7b37d000+0x836c
2546ed20 7b38ed84 : 01d5ebec 890fa60a ffffffd0 ffffffd0 : netcfagl3_5_7b37d000+0x11b2c
2546ed5c 7b38f0c4 : 01d5ebec 890fa60a ffffffd0 ffffffd0 : netcfagl3_5_7b37d000+0x11d84
2546eda4 00000000 : 01d5ebec 890fa60a ffffffd0 ffffffd0 : netcfagl3_5_7b37d000+0x120c4

ここに 4 つのダンプ ファイルがありますhttps://www.dropbox.com/s/9g6zjbxh4ghv5v3/DumpFiles.zipですが、さらに取得できます。

副次的な質問として、私はインターネットを精査して、netcfagl3_5.dll のデバッグ シンボルがどこにあるかを見つけようとしましたが、成功は限られていました。

特にこれは ES400 デバイスの問題であると思われるため、Motorola を追跡しており、この問題に関する更新があればここで更新します。

どんな助けでも本当に感謝しています。

4

1 に答える 1

4

問題を何時間もデバッグした後、問題を再現してアプリケーションの原因を特定できたと思います。

すべてのフォームの上に配置される TitleBar コントロールがあります。これは、現在のフォームのタイトル、バッテリーの状態、およびサーバーとの現在の同期の状態を示します。

コントロールは、同期エンジンによって公開されたイベントをサブスクライブして、最新の状態を取得します。このイベントが発生すると、進行状況を示すアイコンでコントロールを更新します。

クロス スレッド アクセスに関するすべてのルールに従い、コントロールが UI スレッドを使用してのみ操作されるようにしていますが、常に状態が変化すると、内部で AccessViolation が発生するようです。

状態が変化したときではなく、タイマーを使用して数秒ごとにコントロールを更新すると、問題はなくなり、プロセスがランダムに終了することはなくなります。

何よりも役立つ上記のスタック トレースの重要な部分は、netcfagl3_5 が Windows フォームのネイティブ dll であるため、パズルのビットがすべて揃っているように見えるという事実です。

于 2013-01-26T00:14:15.603 に答える