web-dev-qa-db-fra.com

Crashes inexpliqués liés à ntdll.dll

J'ai une application que j'ai écrite qui se bloque de façon intermittente, mais je ne parviens pas à capturer une exception au niveau de la couche application. J'ai toujours une entrée dans le journal des événements mais ne me donne pas beaucoup d'informations:

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 

Comme vous pouvez le voir, je comprends ceci: 

Chemin du module défaillant: C:\WINDOWS\SYSTEM32\ntdll.dll. 

Je ne sais pas de quoi il s'agit ni quel est son lien avec les accidents, mais j'ai pu le reproduire sur plusieurs machines et je ne sais pas comment déterminer la cause ou éviter que cela se produise. 

Mise à jour: j'ai atteint un point où l'application se bloque au démarrage avec la raison ci-dessus. Il arrive à la fin du constructeur MainWindow (il s’agit d’une application WPF), y reste environ 10 secondes sur un écran blanc, puis meurt. J'ai restauré les anciennes versions du logiciel et reproduit ce problème. Je l'ai également déplacé vers une autre machine et je n'ai PAS vu ce comportement, donc ma théorie actuelle est en accord avec ce qui a été dit dans les commentaires - que quelque chose a corrompu le tas et qu'il ne soit clarifié qu'au redémarrage. 

Mise à jour 2: Je peux produire ce message d'erreur lorsque je suis en dehors du débogueur, mais je ne parviens pas à l'arrêter à une exception:

une erreur générique s'est produite dans GDI +

C'est donc ce que je vais chasser aujourd'hui. Fait intéressant et assez inquiétant, l'application se bloque chaque fois au démarrage, même après le redémarrage. Le même comportement ne se produit pas sur d'autres machines à ce moment.

2
Jesse Roper

Pour résoudre ce type de problèmes internes au système, je vous suggère d'essayer Process Monitor

Process Monitor est un outil de surveillance avancé pour Windows qui indique l'activité du système de fichiers, du registre et des processus/threads en temps réel.

enter image description here

En gros, vous devez rechercher les erreurs "NOM NON TROUVÉ", ce qui signifie des DLL ou des clés de registre manquantes ou toute autre erreur suspecte sur l'écran du moniteur. 

4
Zhao Hainan

La dernière fois que j'ai eu un crash similaire dans mon application qui désignait ntdll.dll comme étant le module défaillant, la réalité était que mon propre code avait une fuite de mémoire. J'ai fait une strcpy sur une chaîne qui n'était pas allouée à la mémoire. Quelque chose comme,

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

Je l'ai trouvé après une procédure pénible de mon code. 

Vérifiez votre code pour les fuites.

1
Viddo