web-dev-qa-db-ja.com

ntdll.dllに関連する原因不明のクラッシュ

断続的にクラッシュするアプリケーションを作成しましたが、アプリケーション層で例外をキャプチャできません。私は常にイベントログにエントリを取得しますが、多くの情報を提供しません:

Faulting application name: BCS-UI.exe, version: 1.0.11.0, time stamp: 0x5c0edcbd
Faulting module name: ntdll.dll, version: 10.0.17134.376, time stamp: 0x4358e406
Exception code: 0xc0000374
Fault offset: 0x000d8829
Faulting process id: 0x39b0
Faulting application start time: 0x01d49161c80079a0
Faulting application path: C:\Gogs Local\SMR_Windows_UI\BCS-UI\BCS-UI\bin\Release\BCS-UI.exe
Faulting module path: C:\WINDOWS\SYSTEM32\ntdll.dll
Report Id: 1fbc4761-d256-44b0-99b0-4d9d758e4fe0
Faulting package full name: 
Faulting package-relative application ID: 

    - System 

  - Provider 

   [ Name]  Application Error 

  - EventID 1000 

   [ Qualifiers]  0 

   Level 2 

   Task 100 

   Keywords 0x80000000000000 

  - TimeCreated 

   [ SystemTime]  2018-12-11T15:12:28.109191000Z 

   EventRecordID 23318 

   Channel Application 

   Computer Leviathan 

   Security 


- EventData 

   BCS-UI.exe 
   1.0.11.0 
   5c0edcbd 
   ntdll.dll 
   10.0.17134.376 
   4358e406 
   c0000374 
   000d8829 
   39b0 
   01d49161c80079a0 
   C:\Gogs Local\SMR_Windows_UI\BCS-UI\BCS-UI\bin\Release\BCS-UI.exe 
   C:\WINDOWS\SYSTEM32\ntdll.dll 
   1fbc4761-d256-44b0-99b0-4d9d758e4fe0 

あなたが見ることができるように、私はこれを得る:

障害のあるモジュールパス:C:\ WINDOWS\SYSTEM32\ntdll.dll。

それが何であるか、またはクラッシュにどのように関係するのかはわかりませんが、複数のマシンで再現することができました。

更新:上記の理由により、起動時にアプリケーションがクラッシュするようになりました。 MainWindowコンストラクター(WPFアプリケーション)の最後に到達し、そこに約10秒間白い画面で座ってから終了します。ソフトウェアの古いバージョンにロールバックし、この動作を再現しました。また、別のマシンに移動しましたが、この動作は見られませんでしたので、私の現在の理論はコメントで言われたことに同意しています-何かがヒープを破損し、再起動時にのみクリアされます。

更新2:デバッガーの外部で実行しているときにこのエラーメッセージを生成できますが、デバッガーで実行している場合、例外で停止することはできません。

gDI +で一般的なエラーが発生しました

それが今日私が狩りをすることです。おもしろくて不思議なことに、アプリは起動時に毎回、再起動後でもクラッシュします。現時点では、他のマシンでは同じ動作は発生しません。

6
Jesse Roper

この種のシステム内部の問題をデバッグするには、 プロセスモニター を試すことをお勧めします。

Process Monitorは、リアルタイムのファイルシステム、レジストリ、プロセス/スレッドアクティビティを表示するWindows用の高度な監視ツールです。

enter image description here

基本的に、「NAME NOT FOUND」エラーに注意する必要があります。これは、dllやレジストリキーの欠落、またはモニター画面にあるその他の疑わしいエラーを意味します。

6
Hainan.Z

前回、アプリで同様のクラッシュが発生し、ntdll.dllがエラーモジュールとして指定されたとき、現実には、自分のコードにメモリリークがありました。メモリが割り当てられていない文字列でstrcpyを実行しました。何かのようなもの、

char * str;
strcpy(str, "Hello");

これは、コードを徹底的に調べた後に発見されました。

コードに漏れがないか確認してください。

2
Viddo