Vérificateur d’application - Codes d’arrêt - Divers
Les codes stop suivants sont contenus dans cet ensemble de tests.
Appel dangereux à TerminateThread.
Cause probableCet arrêt est généré si un thread (l’ID de thread est parameter1) est arrêté explicitement à l’aide de TerminateThread.Cette fonction est très dangereuse, car elle introduit une altération des données et des interblocages (conformément à MSDN).
Informations affichées par Application Verifier- Paramètre 1 - ID de thread pour l’appelant de Terminatethread.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Dangereux
- ID d’arrêt : TERMINATE_THREAD_CALL
- Arrêter le code : 100NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Dépassement de capacité de la pile dans des conditions de mémoire insuffisantes.
Cause probableCet arrêt est généré si la taille de validation de la pile initiale d’un thread est telle qu’un dépassement de capacité de pile peut être déclenché dans des conditions de mémoire faible si la pile ne peut pas être étendue.
Informations affichées par Application Verifier- Paramètre 1 - Non utilisé.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Dangereux
- ID d’arrêt : STACK_OVERFLOW
- Arrêter le code : 100NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
ExitProcess appelé alors que plusieurs threads sont toujours en cours d’exécution.
Cause probableCet arrêt est généré si un thread appelle ExitProcess alors que plusieurs threads sont en cours d’exécution. Dans ce cas, TerminateThread est appelé en interne pour chaque thread, ce qui peut créer des interblocages ou des altérations de données.
Informations affichées par Application Verifier- Paramètre 1 - Nombre de threads en cours d’exécution.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Dangereux
- ID d’arrêt : INVALID_EXIT_PROCESS_CALL
- Arrêter le code : 100NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
LoadLibrary est appelé pendant DllMain.
Cause probableCet arrêt est généré si le code à l’intérieur de DllMain appelle LoadLibrary ou FreeLibary. Il s’agit du comportement interdit par MSDN.
Informations affichées par Application Verifier- Paramètre 1 - Nom de dll (utilisez du pour vidage).
- Paramètre 2 - Dll adresse de base.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Dangereux
- ID d’arrêt : INVALID_LOAD_LIBRARY_CALL
- Arrêter le code : 100NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
FreeLibrary est appelé pendant DllMain.
Cause probableCet arrêt est généré si le code à l’intérieur de DllMain appelle LoadLibrary ou FreeLibary. Il s’agit du comportement interdit par MSDN.
Informations affichées par Application Verifier- Paramètre 1 - Nom de dll (utilisez du pour vidage).
- Paramètre 2 - Dll adresse de base.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Dangereux
- ID d’arrêt : INVALID_FREE_LIBRARY_CALL
- Arrêter le code : 100NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
SetProcessWorkingSetSize est appelé avec MinimumWorkingSetSize = 0xFFFFFFFF.
Cause probableUtilisez MinimumWorkingSetSize = (SIZE_T) -1.
Informations affichées par Application Verifier- Paramètre 1 - Non utilisé.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Dangereux
- ID d’arrêt : INVALID_MINIMUM_PROCESS_WORKING_SIZE
- Arrêter le code : 100NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
SetProcessWorkingSetSize est appelé avec MaximumWorkingSetSize = 0xFFFFFFFF.
Cause probableUtilisez MaximumWorkingSetSize = (SIZE_T) -1.
Informations affichées par Application Verifier- Paramètre 1 - Non utilisé.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Dangereux
- ID d’arrêt : INVALID_MAXIMUM_PROCESS_WORKING_SIZE
- Arrêter le code : 100NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
SetProcessWorkingSetSizeEx est appelé avec MinimumWorkingSetSize = 0xFFFFFFFF.
Cause probableUtilisez MinimumWorkingSetSize = (SIZE_T) -1.
Informations affichées par Application Verifier- Paramètre 1 - Non utilisé.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Dangereux
- ID d’arrêt : INVALID_MINIMUM_PROCESS_WORKING_SIZE_EX
- Arrêter le code : 100NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
SetProcessWorkingSetSizeEx est appelé avec MaximumWorkingSetSize = 0xFFFFFFFF.
Cause probableUtilisez MaximumWorkingSetSize = (SIZE_T) -1.
Informations affichées par Application Verifier- Paramètre 1 - Non utilisé.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Dangereux
- ID d’arrêt : INVALID_MAXIMUM_PROCESS_WORKING_SIZE_EX
- Arrêter le code : 100NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Le thread ne peut pas posséder une section critique.
Cause probableCet arrêt est généré si un thread (l’ID de thread est parameter1) est arrêté, suspendu ou est dans un état (le thread de travail a terminé un élément de travail) dans lequel il ne peut pas contenir une section critique. Le thread actuel est le coupable. Pour déboguer cet arrêt, utilisez les commandes de débogueur suivantes : $ kb - pour obtenir la trace de pile actuelle. Si le thread actuel est le propriétaire de la section critique, il appelle probablement ExitThread. Le thread actuel doit avoir publié la section critique avant de quitter. Si le thread actuel appelle TerminateThread ou SuspendThread, il ne doit pas le faire pour un thread contenant une section critique. $ !cs -s parameter2 - informations de vidage sur cette section critique. $ ln parameter2 : pour afficher les symboles près de l’adresse de la section critique. Cela devrait vous aider à identifier la section critique qui a fait l’objet d’une fuite. $ dps parameter4 : pour vider la trace de pile pour cette initialisation de section critique.
Informations affichées par Application Verifier- Paramètre 1 - ID de thread.
- Paramètre 2 - Adresse de section critique.
- Paramètre 3 - Adresse des informations de débogage de section critique.
- Paramètre 4 - Suivi de la pile d’initialisation de section critique.
- Couche de test : Serrures
- ID d’arrêt : EXIT_THREAD_OWNS_LOCK
- Arrêter le code : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Déchargement d’une DLL contenant une section critique active.
Cause probableCet arrêt est généré si une DLL a une variable globale contenant une section critique et si la DLL est déchargée, mais que la section critique n’a pas été supprimée. Pour déboguer cet arrêt, utilisez les commandes de débogueur suivantes : $ du parameter3 - pour vider le nom de la DLL coupable. $ .reload dllname ou .reload dllname = parameter4 : pour recharger les symboles de cette DLL. $ !cs -s parameter1 - informations de vidage sur cette section critique. $ ln parameter1 : pour afficher les symboles près de l’adresse de la section critique. Cela devrait vous aider à identifier la section critique qui a fait l’objet d’une fuite. $ dps parameter2 : pour vider la trace de pile pour cette initialisation de section critique.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Trace de pile d’initialisation de section critique.
- Paramètre 3 - Adresse du nom de LA DLL.
- Paramètre 4 - ADRESSE de base DLL.
- Couche de test : Serrures
- ID d’arrêt : LOCK_IN_UNLOADED_DLL
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Libérer un bloc de tas contenant une section critique active.
Cause probableCet arrêt est généré si une allocation de tas contient une section critique, si l’allocation est libérée et si la section critique n’a pas été supprimée. Pour déboguer cet arrêt, utilisez les commandes de débogueur suivantes : $ !cs -s parameter1 - informations de vidage sur cette section critique. $ ln parameter1 : pour afficher des symboles près de l’adresse de la section critique. Cela devrait aider à identifier la section critique divulguée. $ dps parameter2 : pour vider la trace de pile pour cette initialisation de section critique. $ parameter3 et parameter4 peuvent aider à comprendre où ce bloc de tas a été alloué (la taille de l’allocation est probablement significative).
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Trace de pile d’initialisation de section critique.
- Paramètre 3 - Adresse de bloc de tas.
- Paramètre 4 -Taille du bloc de tas.
- Couche de test : Serrures
- ID d’arrêt : LOCK_IN_FREED_HEAP
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Section critique à double initialisation ou endommagée.
Cause probableEn règle générale, cet arrêt est généré si une section critique a été initialisée plusieurs fois. Dans ce cas, parameter3 et parameter4 sont les adresses de trace de pile pour deux de ces initialisations. Dans d’autres cas, il est possible d’obtenir cet arrêt si la section critique ou sa structure d’informations de débogage ont été endommagées. Dans ce deuxième cas, il est possible que parameter3 et parameter4 ne soient pas valides et inutiles. Pour déboguer cet arrêt : $ !cs -s -d parameter2 - vidage des informations sur cette section critique. $ ln parameter1 : pour afficher des symboles près de l’adresse de la section critique. Cela peut aider à identifier la section critique s’il s’agit d’une variable globale. $ dps parameter3 et dps parameter4 : pour identifier les deux chemins de code pour l’initialisation de cette section critique.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Adresse de la structure d’informations de débogage trouvée dans la liste active.
- Paramètre 3 - Première trace de pile d’initialisation.
- Paramètre 4 - Deuxième trace de pile d’initialisation.
- Couche de test : Serrures
- ID d’arrêt : LOCK_DOUBLE_INITIALIZE
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Mémoire libre contenant une section critique active.
Cause probableCet arrêt est généré si la mémoire contenant une section critique a été libérée, mais que la section critique n’a pas été supprimée à l’aide de DeleteCriticalSection. Pour déboguer cet arrêt, utilisez les commandes de débogueur suivantes : $ !cs -s -d parameter2 - informations de vidage sur cette section critique. $ dps parameter3 : pour identifier le chemin du code pour l’initialisation de cette section critique. Dans la plupart des cas, le vérificateur de verrou détecte les sections critiques immédiatement divulguées contenues dans une allocation de tas, une plage DE DLL, une allocation de mémoire virtuelle ou une plage de mémoire mappée MapViewOfFile et émet différents arrêts dans ces cas. Il reste donc très peu de cas pour cet arrêt de vérificateur. Le verrou doit se trouver dans une plage de mémoire libérée par le code en mode noyau ou libérée entre processus par des API telles que VirtualFreeEx. Généralement, cet arrêt se produit si un arrêt précédent (par exemple, LOCK_IN_FREED_HEAP ou LOCK_IN_UNLOADED_DLL) a été poursuivi en appuyant sur « g » dans la console du débogueur.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Adresse des informations de débogage de section critique.
- Paramètre 3 - Trace de pile d’initialisation de section critique.
- Paramètre 4 - Non utilisé.
- Couche de test : Serrures
- ID d’arrêt : LOCK_IN_FREED_MEMORY
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Section critique endommagée.
Cause probableCet arrêt est généré si le champ DebugInfo de la section critique pointe vers la mémoire libérée. En règle générale, une autre structure DebugInfo valide se trouve dans la liste des sections critiques actives. Sans altération, les deux pointeurs doivent être identiques. Pour déboguer cet arrêt, utilisez les commandes de débogueur suivantes : $ !cs -s -d parameter3 - vidage d’informations sur cette section critique en fonction du contenu actuel de la structure d’informations de débogage trouvée dans la liste active (cette structure est rarement endommagée, donc généralement, ces informations sont fiables). $ !cs -s parameter1 - vidage d’informations sur cette section critique en fonction du contenu actuel de la structure de section critique (la structure est déjà endommagée. Parfois, ces informations ne sont PAS dignes de confiance). $ dps parameter4 : pour identifier le chemin du code pour l’initialisation de cette section critique. Videz la section critique sur address parameter1 et recherchez le modèle d’endommagement. Avec de bons symboles pour ntdll.dl, vous pouvez utiliser les commandes suivantes : $ dt ntdll!_RTL_CRITICAL_SECTION LOCK_ADDRESS $ dt ntdll!_RTL_CRITICAL_SECTION_DEBUG DEBUG_ADDRESS
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Adresse d’informations de débogage non valide de cette section critique.
- Paramètre 3 - Adresse des informations de débogage trouvées dans la liste active.
- Paramètre 4 - Trace de pile d’initialisation.
- Couche de test : Serrures
- ID d’arrêt : LOCK_CORRUPTED
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Thread de propriétaire de section critique non valide.
Cause probableCet arrêt est généré si l’ID de thread propriétaire n’est pas valide dans le contexte actuel. Pour déboguer ce stop : $ !cs -s parameter1 - dump information about this critical section. $ ln parameter1 : pour afficher des symboles près de l’adresse de la section critique. Cela devrait vous aider à identifier la section critique.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Propriétaire du thread.
- Paramètre 3 - Thread propriétaire attendu.
- Paramètre 4 - Adresse d’informations de débogage de section critique.
- Couche de test : Serrures
- ID d’arrêt : LOCK_INVALID_OWNER
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Nombre de récursivités de section critique non valide.
Cause probableCet arrêt est généré si le champ nombre de récursivités de la structure de section critique n’est pas valide dans le contexte actuel. Pour déboguer ce stop : $ !cs -s parameter1 - dump information about this critical section. $ ln parameter1 : pour afficher des symboles près de l’adresse de la section critique. Cela devrait vous aider à identifier la section critique.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Nombre de récursivités.
- Paramètre 3 - Nombre de récursivités attendues.
- Paramètre 4 - Adresse d’informations de débogage de section critique.
- Couche de test : Serrures
- ID d’arrêt : LOCK_INVALID_RECURSION_COUNT
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Suppression de la section critique avec un nombre de verrous non valide.
Cause probableCet arrêt est généré si une section critique appartient à un thread si elle est supprimée ou si la section critique est non initialisée. Pour déboguer ce stop : $ !cs -s parameter1 - dump information about this critical section. Si le thread propriétaire est 0, la section critique n’a pas été initialisée. $ ln parameter1 : pour afficher des symboles près de l’adresse de la section critique. Cela devrait vous aider à identifier la section critique.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Nombre de verrous.
- Paramètre 3 - Nombre de verrous attendu.
- Paramètre 4 - Propriétaire du thread.
- Couche de test : Serrures
- ID d’arrêt : LOCK_INVALID_LOCK_COUNT
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Section critique sur-libérée ou endommagée.
Cause probableCet arrêt est généré si une section critique est publiée plus de fois que le thread actuel l’a acquise. Pour déboguer ce stop : $ !cs -s parameter1 - dump information about this critical section. $ !cs -s -d parameter4 - vidage des informations sur cette section critique. $ ln parameter1 : pour afficher des symboles près de l’adresse de la section critique. Cela devrait vous aider à identifier la section critique.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Nombre de verrous.
- Paramètre 3 - Nombre de verrous attendu.
- Paramètre 4 - Adresse d’informations de débogage de section critique.
- Couche de test : Serrures
- ID d’arrêt : LOCK_OVER_RELEASED
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Section critique non initialisée.
Cause probableCet arrêt est généré si une section critique est utilisée sans être initialisée ou après sa suppression. Pour déboguer ce stop : $ ln parameter1 - pour afficher les symboles près de l’adresse de la section critique. Cela devrait vous aider à identifier la section critique.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Adresse d’informations de débogage de section critique.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Serrures
- ID d’arrêt : LOCK_NOT_INITIALIZED
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
La section critique est déjà initialisée.
Cause probableCet arrêt est généré si une section critique est réinitialisée par le thread actuel. Pour déboguer ce arrêt : $ !cs -s parameter1 ou !cs -s -d parameter2 - dump information about this critical section. $ ln parameter1 : pour afficher des symboles près de l’adresse de la section critique. Cela peut aider à identifier la section critique s’il s’agit d’une variable globale. $ dps parameter3 : pour identifier le chemin du code pour la première initialisation de cette section critique. $ kb : pour afficher la trace de pile actuelle, qui réinitialise cette section critique.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Adresse d’informations de débogage de section critique.
- Paramètre 3 - Première trace de pile d’initialisation. Utiliser dps pour le vider s’il n’est pas NULL
- Paramètre 4 - Non utilisé.
- Couche de test : Serrures
- ID d’arrêt : LOCK_ALREADY_INITIALIZED
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Libérer de la mémoire virtuelle contenant une section critique active.
Cause probableCet arrêt est généré si le thread actuel appelle VirtualFree sur un bloc de mémoire qui contient une section critique active. L’application doit appeler DeleteCriticalSection sur cette section critique avant si libère cette mémoire. $ kb : pour afficher la trace de pile actuelle, qui appelle VirtualFree. Le coupable probable est la DLL qui appelle VirtualFree. $ !cs -s parameter1 : informations de vidage sur cette section critique. $ dps parameter2 : pour identifier le chemin du code pour l’initialisation de cette section critique.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Trace de pile d’initialisation de section critique.
- Paramètre 3 - Adresse du bloc de mémoire.
- Paramètre 4 - Taille du bloc de mémoire.
- Couche de test : Serrures
- ID d’arrêt : LOCK_IN_FREED_VMEM
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Démappage de la région de mémoire contenant une section critique active.
Cause probableCet arrêt est généré si le thread actuel appelle UnmapViewOfFile sur un bloc de mémoire qui contient une section critique active. L’application doit appeler DeleteCriticalSection sur cette section critique avant si annule le mappage de cette mémoire. $ kb : pour afficher la trace de pile actuelle, qui appelle UnmapViewOfFile . Le coupable probable est la DLL qui appelle UnmapViewOfFile. $ !cs -s parameter1 : informations de vidage sur cette section critique. $ dps parameter2 : pour identifier le chemin du code pour l’initialisation de cette section critique.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Trace de pile d’initialisation de section critique.
- Paramètre 3 - Adresse du bloc de mémoire.
- Paramètre 4 - Taille du bloc de mémoire.
- Couche de test : Serrures
- ID d’arrêt : LOCK_IN_UNMAPPED_MEM
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Le thread actuel ne possède aucune section critique.
Cause probableCet arrêt est généré si le thread actuel appelle LeaveCriticalSection, mais que, selon la comptabilité du vérificateur interne, il ne possède aucune section critique. Si parameter2 est égal à zéro, il s’agit probablement d’un bogue dans le thread actuel. Il tente soit de laisser une section critique qu’il n’a pas entrée, soit il appelle Peut-être LeaveCriticalSection plus de fois qu’il a appelé EnterCriticalSection pour la même section critique. Si parameter2 n’est pas égal à zéro (il s’agit d’un nombre entier négatif), les structures de données du vérificateur interne sont probablement endommagées.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Nombre de sections critiques appartenant au thread actuel.
- Paramètre 3 - Non utilisé
- Paramètre 4 - Non utilisé
- Couche de test : Serrures
- ID d’arrêt : THREAD_NOT_LOCK_OWNER
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Utilisation de la section critique qui est privée à une autre DLL.
Cause probableCet arrêt est généré si le thread actuel tente d’utiliser un verrou privé qui se trouve à l’intérieur d’une autre DLL. Par exemple, a.dll tente d’entrer une section critique définie dans ntdll.dll. Les verrous privés ne peuvent pas être utilisés sur les DLL.
Informations affichées par application Verifier- Paramètre 1 - Adresse de section critique.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé
- Paramètre 4 - Non utilisé
- Couche de test : Serrures
- ID d’arrêt : LOCK_PRIVATE
- Code d’arrêt : 200NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Le verrou SRW n’est pas initialisé.
Cause probableCet arrêt est généré si un thread tente d’utiliser le verrou SRW (Param1) qui n’est pas initialisé. $ kb : pour obtenir la trace de pile actuelle. C’est là que le verrou SRW est utilisé. Le verrou SRW doit être initialisé à l’aide de InitializeSRWLock avant de pouvoir être utilisé.
Informations affichées par application Verifier- Paramètre 1 - SRW Lock
- Paramètre 2 - Non utilisé
- Paramètre 3 - Non utilisé
- Paramètre 4 - Non utilisé
- Couche de test : SRWLock
- ID d’arrêt : NOT_INITIALIZED
- Code d’arrêt : 250NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Le verrou SRW est déjà initialisé.
Cause probableCet arrêt est généré si le verrou SRW (Param1) est réin initialisé. Si le verrou SRW est activement utilisé par d’autres threads, la réin initialisation du verrou entraîne un comportement imprévisible de la part de l’application, y compris des blocages et des blocages. La trace de la pile d’initialisation peut indiquer une acquisition si le verrou SRW a été initialisé de manière statique. $ kb : pour obtenir la trace de pile actuelle. C’est là que le verrou SRW est réin initialisé. $ dps Param3 : pour obtenir la trace de la pile d’initialisation de verrou SRW. Cette trace de pile peut afficher une acquisition si le verrou a été initialisé de manière statique.
Informations affichées par application Verifier- Paramètre 1 - SRW Lock
- Paramètre 2 - ThreadId du thread qui a initialisé le verrou SRW.
- Paramètre 3 - Adresse de la trace de la pile d’initialisation. Utilisez l’adresse> dps <pour voir où le verrou SRW a été initialisé.
- Paramètre 4 - Non utilisé
- Couche de test : SRWLock
- ID d’arrêt : ALREADY_INITIALIZED
- Code d’arrêt : 250NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Des Acquire-Release incompatibles sur le verrou SRW.
Cause probableCet arrêt est généré si le verrou SRW (Param1) est libéré avec une API de mise en production incorrecte. Si le verrou SRW a été acquis pour l’accès partagé et est en cours de publication à l’aide de l’API de mise en production exclusive ou si le verrou SRW a été acquis pour l’accès exclusif et est en cours de publication à l’aide de l’API de mise en production partagée. Cela peut entraîner un comportement imprévisible de l’application, y compris des blocages et des plantages. $ kb : pour obtenir la trace de pile actuelle. C’est là que le verrou SRW est libéré à l’aide de la mauvaise API. $ dps Param3 : pour obtenir la trace de pile d’acquisition du verrou SRW.
Informations affichées par application Verifier- Paramètre 1 - SRW Lock
- Paramètre 2 - ThreadId du thread qui a acquis le verrou SRW.
- Paramètre 3 - Adresse de la trace de pile d’acquisition. Utilisez l’adresse> dps <pour voir où le verrou SRW a été acquis.
- Paramètre 4 - Non utilisé
- Couche de test : SRWLock
- ID d’arrêt : MISMATCHED_ACQUIRE_RELEASE
- Code d’arrêt : 250NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Le verrou SRW est acquis de manière récursive par le même thread.
Cause probableCet arrêt est généré si le verrou SRW (Param1) est acquis de manière récursive par le même thread. Cela entraîne un interblocage et le thread se bloque indéfiniment. L’acquisition récursive d’un verrou SRW en mode exclusif entraîne un blocage. L’acquisition récursive d’un verrou SRW en mode partagé entraîne un interblocage lorsqu’un thread attend un accès exclusif. Prenons l’exemple ci-dessous : - Le thread A acquiert le verrou SRW en mode partagé - Le thread B tente d’acruire le verrou SRW en mode exclusif et attend - Le thread A tente d’acquérir le verrou SRW en mode partagé de manière récursive. Cette opération réussit tant qu’il n’y a pas de serveur exclusif (dans ce cas B). Étant donné que les verrous SRW n’ont pas de pénurie d’enregistreur, le thread A attend derrière le thread B. À présent, le thread B attend le thread A qui attend le thread B, ce qui provoque une attente circulaire et donc un interblocage. $ kb : pour obtenir la trace de pile actuelle. C’est là que le verrou SRW est acquis de manière récursive. $ dps Param2 : pour obtenir la trace de la pile pour la première acquisition.
Informations affichées par application Verifier- Paramètre 1 - SRW Lock
- Paramètre 2 - Adresse de la première trace de pile d’acquisition. Utilisez l’adresse> dps <pour voir où le verrou SRW a été acquis.
- Paramètre 3 - Non utilisé
- Paramètre 4 - Non utilisé
- Couche de test : SRWLock
- ID d’arrêt : RECURSIVE_ACQUIRE
- Arrêter le code : 250NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Le thread qui quitte ou se termine possède un verrou SRW.
Cause probableCet arrêt est généré si le thread (Param2) qui possède le verrou SRW (Param1) quitte ou se termine. Cela entraîne un verrou SRW orphelin et les threads qui tentent d’acquérir ce verrou se bloquent indéfiniment. $ kb : pour obtenir la trace de pile actuelle. C’est là que le thread quitte ou est en cours d’arrêt. $ dps Param3 : pour obtenir le verrou SRW acquérir la trace de pile.
Informations affichées par Application Verifier- Paramètre 1 - Verrou SRW
- Paramètre 2 - ThreadId du thread qui quitte ou se termine.
- Paramètre 3 - Adresse de la trace de pile d’acquisition. Utilisez l’adresse> dps <pour voir où le verrou SRW a été acquis.
- Paramètre 4 - Non utilisé
- Couche de test : SRWLock
- ID d’arrêt : EXIT_THREAD_OWNS_LOCK
- Arrêter le code : 250NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Le verrou SRW libéré n’a pas été acquis par ce thread.
Cause probableCet arrêt est généré si le verrou SRW (Param1) est libéré par le thread (Param2) qui n’a pas acquis le verrou. Cela représente une mauvaise pratique de programmation qui est difficile à obtenir correctement et peut entraîner un comportement imprévisible de la part de l’application. $ kb : pour obtenir la trace de pile actuelle. C’est là que le thread libère le verrou SRW qu’il n’a pas acquis. $ dps Param4 : pour obtenir le verrou SRW acquérir la trace de pile.
Informations affichées par Application Verifier- Paramètre 1 - Verrou SRW
- Paramètre 2 - Current ThreadId.
- Paramètre 3 - ThreadId du thread qui a acquis le verrou SRW.
- Paramètre 4 - Adresse de la trace de pile d’acquisition. Utilisez l’adresse> dps <pour voir où le verrou SRW a été acquis.
- Couche de test : SRWLock
- ID d’arrêt : INVALID_OWNER
- Arrêter le code : 250NAN
- Gravité: Avertissement
- Erreur ponctuelle :
- Rapport d’erreurs : Aucun
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
La mémoire libérée contient un verrou SRW actif.
Cause probableCet arrêt est généré si l’adresse mémoire (Param1) libérée contient un verrou SRW actif qui est toujours en cours d’utilisation. Cela peut entraîner un comportement imprévisible de l’application, y compris des blocages et des blocages. $ kb : pour obtenir la trace de pile actuelle. C’est là que la mémoire est libérée qui contient un verrou SRW actif. $ dps Param4 : pour obtenir le verrou SRW acquérir la trace de pile.
Informations affichées par Application Verifier- Paramètre 1 - Verrou SRW
- Paramètre 2 - Adresse de la mémoire libérée.
- Paramètre 3 - ThreadId du thread qui a acquis le verrou SRW.
- Paramètre 4 - Adresse de la trace de pile d’acquisition. Utilisez l’adresse> dps <pour voir où le verrou SRW a été acquis.
- Couche de test : SRWLock
- ID d’arrêt : IN_FREED_MEMORY
- Arrêter le code : 250NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
La DLL en cours de déchargement contient un verrou SRW actif.
Cause probableCet arrêt est généré si la DLL en cours de déchargement (Param2) contient un verrou SRW actif (Param1) qui est toujours en cours d’utilisation. Cela peut entraîner un comportement imprévisible de l’application, y compris des blocages et des blocages. $ kb : pour obtenir la trace de pile actuelle. C’est là que la DLL est déchargée qui contient un verrou SRW actif. $ du Param2 : pour rechercher le nom de la DLL en cours de déchargement. $ dps Param4 : pour obtenir le verrou SRW acquérir la trace de pile.
Informations affichées par Application Verifier- Paramètre 1 - Verrou SRW
- Paramètre 2 - Adresse du nom de la DLL en cours de déchargement. Utilisez du <address> pour voir le nom.
- Paramètre 3 - ThreadId du thread qui a acquis le verrou SRW.
- Paramètre 4 - Adresse de la trace de pile d’acquisition. Utilisez l’adresse> dps <pour voir où le verrou SRW a été acquis.
- Couche de test : SRWLock
- ID d’arrêt : IN_UNLOADED_DLL
- Arrêter le code : 250NAN
- Gravité: Avertissement
- Erreur ponctuelle :
- Rapport d’erreurs : Aucun
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Exception de handle non valide pour la trace de pile actuelle.
Cause probableCet arrêt est généré si la fonction située en haut de la pile a transmis un handle non valide aux routines système. En règle générale, une simple commande kb indique quelle est la valeur du handle passé (doit être l’un des paramètres , généralement le premier). Si la valeur est null, cela est clairement incorrect. Si la valeur semble correcte, vous devez utiliser l’extension de débogueur !htrace pour obtenir un historique des opérations relatives à cette valeur de handle. Dans la plupart des cas, la valeur de handle doit être utilisée après avoir été fermée.
Informations affichées par Application Verifier- Paramètre 1 - Code d’exception.
- Paramètre 2 - Enregistrement d’exception. Utilisez .exr pour l’afficher.
- Paramètre 3 - Enregistrement de contexte. Utilisez .cxr pour l’afficher.
- Paramètre 4 - Non utilisé.
- Couche de test : Poignées
- ID d’arrêt : INVALID_HANDLE
- Arrêter le code : 300NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Index TLS non valide utilisé pour la trace de pile actuelle.
Cause probableCet arrêt est généré si la fonction située en haut de la pile a transmis un index TLS non valide aux routines système TLS. En général, une simple commande kb révèle ce qui ne va pas. Le bogue typique ici consiste à supposer une certaine valeur pour un index TLS au lieu d’appeler TlsAlloc. Cela peut se produire en pensant que vous obtenez toujours la valeur N, il n’est donc pas nécessaire d’appeler TlsAlloc ou plus fréquemment en raison d’une variable non initialisée.
Informations affichées par Application Verifier- Paramètre 1 - Index TLS non valide.
- Paramètre 2 - Partie inférieure attendue de l’index.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Poignées
- ID d’arrêt : INVALID_TLS_VALUE
- Arrêter le code : 300NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Paramètres non valides pour l’appel WaitForMultipleObjects.
Cause probableCet arrêt est généré si la fonction située en haut de la pile appelée WaitForMultipleObjects a NULL comme adresse du tableau de handles à attendre ou avec zéro comme nombre de handles. Une simple commande kb révèle la fonction appelant cette API de manière incorrecte.
Informations affichées par Application Verifier- Paramètre 1 - Adresse du vecteur de handles d’objet.
- Paramètre 2 - Nombre de handles.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Poignées
- ID d’arrêt : INCORRECT_WAIT_CALL
- Arrêter le code : 300NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Handle NULL passé en tant que paramètre. Un handle valide doit être utilisé.
Cause probableCet arrêt est généré si la fonction située en haut de la pile a passé un handle NULL aux routines système.
Informations affichées par Application Verifier- Paramètre 1 - Non utilisé.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Poignées
- ID d’arrêt : NULL_HANDLE
- Arrêter le code : 300NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
En attente d’un handle de thread dans DllMain.
Cause probableCet arrêt est généré si le thread actuel exécute actuellement du code à l’intérieur de la fonction DllMain de l’une des DLL chargées dans le processus en cours et qu’il appelle WaitForSingleObject ou WaitForMultipleObjects pour attendre sur un handle de thread dans le même processus. Cela entraînerait probablement un blocage, car le handle de thread n’est pas signalé, sauf si ce deuxième thread est en cours de fermeture. Lorsque le deuxième thread appelle ExitThread, il tente d’acquérir le verrou du chargeur DLL, puis appelle DllMain (DLL_THREAD_DETACH) pour toutes les DLL du processus actuel. Mais le verrou du chargeur appartient au premier thread (celui qui attend sur la poignée de thread) de sorte que les deux threads se bloquent.
Informations affichées par Application Verifier- Paramètre 1 - Handle de thread.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Poignées
- ID d’arrêt : WAIT_IN_DLLMAIN
- Arrêter le code : 300NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Type d’objet incorrect pour handle.
Cause probableCet arrêt est généré si le thread actuel appelle une API avec un handle à un objet avec un type d’objet incorrect. Par exemple, l’appel de SetEvent avec un handle sémaphore en tant que paramètre génère cet arrêt. Pour déboguer ce stop : $ kb - pour afficher la trace de pile actuelle. Le coupable est probablement la DLL qui appelle dans verifier.dll ; $ du parameter2 : pour afficher le type réel du handle. La valeur du handle est parameter1. Dans l’exemple ci-dessus, cela s’affiche : Sémaphore. $ du parameter3 : pour afficher le type d’objet attendu par l’API. Dans l’exemple ci-dessus, ce nom sera : Événement. $ !htrace parameter1 peut être utile, car il affiche la trace de pile pour les opérations d’ouverture/fermeture récentes sur ce handle.
Informations affichées par Application Verifier- Paramètre 1 - Handle value.
- Paramètre 2 - Nom du type d’objet. Utilisez du pour l’afficher
- Paramètre 3 - Nom du type d’objet attendu. Utilisez du pour l’afficher
- Paramètre 4 - Non utilisé.
- Couche de test : Poignées
- ID d’arrêt : INCORRECT_OBJECT_TYPE
- Arrêter le code : 300NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Déchargement de la DLL qui a alloué un index TLS qui n’a pas été libéré.
Cause probableCet arrêt est généré si une DLL qui a alloué un index TLS est déchargée avant de libérer cet index TLS. Pour déboguer ce stop : $ du parameter3 - afficher le nom de la DLL coupable ; $ .reload xxx.dll=parameter4 - rechargez les symboles de la DLL coupable (si nécessaire). xxx.dll est le nom de la DLL affichée à l’étape ci-dessus ; $ u parameter2 : désassemblez le code qui a alloué le protocole TLS. Cela doit pointer vers la fonction qui a alloué le PROTOCOLE TLS, mais oublié de le libérer avant que la DLL ne soit déchargée.
Informations affichées par Application Verifier- Paramètre 1 - Index TLS
- Paramètre 2 - Adresse du code qui a alloué cet index TLS.
- Paramètre 3 Adresse du nom - DLL. Utilisez du pour le vider.
- Paramètre 4 - DLL adresse de base.
- Couche de test : TLS
- ID d’arrêt : TLS_LEAK
- Arrêter le code : 350NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Structure TLS du vérificateur endommagé.
Cause probableCet arrêt est généré si les structures de vérificateur interne utilisées pour stocker l’état des emplacements TLS pour le thread sont endommagées. Très probablement, cela est dû à une corruption aléatoire dans le processus.
Informations affichées par Application Verifier- Paramètre 1 - ADRESSE TEB.
- Paramètre 2 - Adresse TEB attendue.
- Paramètre 3 - ID de thread.
- Paramètre 4 - ID de thread attendu.
- Couche de test : TLS
- ID d’arrêt : CORRUPTED_TLS
- Arrêter le code : 350NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Utilisation d’un index TLS non valide.
Cause probableCet arrêt est généré si un index TLS non valide est utilisé. Dans la plupart des cas, c’est parce que le code utilise toujours cet index lorsque TlsFree est appelé. Voici un exemple pour le thread thread threadpool. T1 : Chargements de dll et TlsAlloc T1 : Rappel de file d’attente T1 : Rappel ignoré/annulé T1 : TlsFree T2 : Le rappel s’exécute et appelle TlsSetValue T1 : Déchargements de dll
Informations affichées par Application Verifier- Paramètre 1 - Index TLS
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : TLS
- ID d’arrêt : INVALID_TLS_INDEX
- Arrêter le code : 350NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Libération d’un bloc de mémoire virtuelle dont la taille ou l’adresse de début n’est pas valide.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un déchargement VirtualFree ou DLL avec une adresse de début ou une taille de l’allocation de mémoire non valide. Dans le cas du déchargement de DLL, cela signifie probablement une altération de la mémoire à l’intérieur de la liste de DLL chargée. Pour déboguer cet arrêt, examinez la trace de la pile actuelle, l’adresse mémoire et la taille qui sont sur le point d’être libérées, puis essayez de déterminer pourquoi elles ne sont pas valides.
Informations affichées par Application Verifier- Paramètre 1 - Adresse de base d’allocation.
- Paramètre 2 - Taille de la région mémoire.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : INVALID_FREEMEM
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Appel d’alloc virtuel incorrect.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un appel VirtualAlloc avec une adresse de début ou une taille non valide de l’allocation de mémoire. Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) et l’adresse de mémoire et la taille qui sont sur le point d’être allouées, puis essayez de déterminer pourquoi elles ne sont pas valides.
Informations affichées par Application Verifier- Paramètre 1 - Pointeur vers l’adresse de base d’allocation.
- Paramètre 2 - Pointeur vers la taille de la région mémoire.
- Paramètre 3 - Non utilisé
- Paramètre 4 - Non utilisé
- Couche de test : Mémoire
- ID d’arrêt : INVALID_ALLOCMEM
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Appel de vue de carte incorrect.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un appel MapViewOfFile avec une adresse de base ou une taille non valide du mappage. Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) ainsi que l’adresse mémoire et la taille qui sont sur le point d’être mappées, puis essayez de déterminer pourquoi elles ne sont pas valides.
Informations affichées par Application Verifier- Paramètre 1 - Pointeur vers l’adresse de base de mappage.
- Paramètre 2 - Pointeur vers la taille d’affichage.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : INVALID_MAPVIEW
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Sondage d’adresse non valide.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un appel IsBadXXXPtr avec une adresse non valide (par exemple, une adresse en mode noyau, au lieu d’une adresse en mode utilisateur normale) pour que la mémoire tampon soit sondée. Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) et essayez de déterminer pourquoi l’appelant de la fonction IsBadXXXPtr s’est retrouvé avec une adresse non valide. Souvent, l’adresse est un faux simple, par exemple un pointeur non initialisé. La bibliothèque MSDN répertorie quelques raisons pour lesquelles les applications ne doivent pas utiliser les API IsBadXXXPtr : Dans un environnement multitâche préemptif, il est possible pour un autre thread de modifier l’accès du processus à la mémoire testée. Le déréférencement des pointeurs potentiellement non valides peut désactiver l’expansion de la pile dans d’autres threads. Un thread qui épuise sa pile, lorsque l’extension de la pile a été désactivée, entraîne l’arrêt immédiat du processus parent, sans fenêtre d’erreur contextuelle ni informations de diagnostic. Les threads d’un processus sont censés coopérer de telle sorte que l’un d’eux ne libère pas la mémoire dont l’autre a besoin. L’utilisation de cette fonction n’annule pas la nécessité de le faire. Si ce n’est pas le cas, l’application peut échouer de manière imprévisible. Pour toutes ces raisons, nous vous recommandons de ne jamais utiliser ces API.
Informations affichées par Application Verifier- Paramètre 1 -Adresse de début.
- Paramètre 2 - Taille du bloc de mémoire.
- Paramètre 3 - Adresse non valide.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : PROBE_INVALID_ADDRESS
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Sondage de la mémoire libre.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un appel IsBadXXXPtr pour une allocation de mémoire gratuite. C’est très mauvais, car il est possible que, dans d’autres cas, cette mémoire ait déjà été réutilisée pour une autre allocation. Étant donné que le chemin de code actuel (ko) ne possède pas cette mémoire, il peut finir par endommager la mémoire d’une autre personne, avec des effets désastreux. Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) et essayez de déterminer pourquoi l’appelant de la fonction IsBadXXXPtr a fini par sonder la mémoire libre. L’adresse peut être fausse (par exemple, pointeur non initialisé) ou peut-être déjà libérée de la mémoire. Si la mémoire a déjà été libérée par l’une des API VirtualFree ou UnmapViewOfFile, '!avrf -vs -a parameter3' recherche un journal des traces de pile des chemins de code qui ont alloué/libéré cette adresse et affiche ces traces de pile si elles sont disponibles. Cela peut indiquer la trace de pile qui a libéré cette mémoire. Plus souvent, la mémoire est une allocation de tas déjà libérée. Pour case activée cette possibilité, « !avrf -hp -a parameter3 » recherche un journal des traces de pile des chemins d’accès de code qui ont alloué/libéré cette adresse du tas et affiche ces traces de pile si elles sont disponibles. La bibliothèque MSDN répertorie quelques raisons pour lesquelles les applications ne doivent pas utiliser les API IsBadXXXPtr : Dans un environnement multitâche préemptif, il est possible pour un autre thread de modifier l’accès du processus à la mémoire testée. Le déréférencement des pointeurs potentiellement non valides peut désactiver l’expansion de la pile dans d’autres threads. Un thread qui épuise sa pile, lorsque l’extension de la pile a été désactivée, entraîne l’arrêt immédiat du processus parent, sans fenêtre d’erreur contextuelle ni informations de diagnostic. Les threads d’un processus sont censés coopérer de telle sorte que l’un d’eux ne libère pas la mémoire dont l’autre a besoin. L’utilisation de cette fonction n’annule pas la nécessité de le faire. Si ce n’est pas le cas, l’application peut échouer de manière imprévisible. Pour toutes ces raisons, nous vous recommandons de ne jamais utiliser ces API.
Informations affichées par Application Verifier- Paramètre 1 -Adresse de début.
- Paramètre 2 - Taille du bloc de mémoire.
- Paramètre 3 - Adresse de la page de mémoire libre.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : PROBE_FREE_MEM
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Sondage d’une page de protection.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un appel IsBadXXXPtr pour une allocation de mémoire qui contient au moins une GUARD_PAGE. C’est très mauvais, car il est très possible que cette GUARD_PAGE soit la fin de la pile actuelle d’un thread. Comme indiqué dans la bibliothèque MSDN : le déréférencement de pointeurs potentiellement non valides peut désactiver l’expansion de la pile dans d’autres threads. Un thread qui épuise sa pile, lorsque l’expansion de la pile a été désactivée, entraîne l’arrêt immédiat du processus parent, sans fenêtre d’erreur contextuelle ni informations de diagnostic. Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) et essayez de déterminer pourquoi l’appelant de la fonction IsBadXXXPtr a fini par sonder un GUARD_PAGE. La bibliothèque MSDN répertorie quelques raisons pour lesquelles les applications ne doivent pas utiliser les API IsBadXXXPtr : Dans un environnement multitâche préemptif, il est possible qu’un autre thread modifie l’accès du processus à la mémoire testée. Le déréférencement de pointeurs potentiellement non valides peut désactiver l’expansion de la pile dans d’autres threads. Un thread qui épuise sa pile, lorsque l’expansion de la pile a été désactivée, entraîne l’arrêt immédiat du processus parent, sans fenêtre d’erreur contextuelle ni informations de diagnostic. Les threads d’un processus sont censés coopérer de telle sorte que l’un ne libère pas la mémoire dont l’autre a besoin. L’utilisation de cette fonction n’annule pas la nécessité de le faire. Si ce n’est pas le cas, l’application peut échouer de manière imprévisible. Pour toutes ces raisons, nous vous recommandons de ne jamais utiliser ces API.
Informations affichées par application Verifier- Paramètre 1 - Adresse de début.
- Paramètre 2 - Taille du bloc de mémoire.
- Paramètre 3 - Adresse de la page de garde.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : PROBE_GUARD_PAGE
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Sondage de l’adresse NULL.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un appel IsBadXXXPtr avec une adresse NULL. Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) et essayez de déterminer pourquoi l’appelant de la fonction IsBadXXXPtr s’est retrouvé avec l’adresse NULL. Il s’agit généralement du signe que quelqu’un ne vérifie pas la valeur de retour de l’une des fonctions d’allocation de mémoire. Par exemple, le code ci-dessous est incorrect : int main (void) { PVOID p; p = malloc (1024) ; Utiliser (p); retourner 0 ; } void Use (PVOID p) { if (IsBadReadPtr (p)) { return; } // // p peut être utilisé ici. } Ce code doit être réécrit comme suit : int main (void) { PVOID p; p = malloc (1024); if (NULL == p)) { return -1; } Utiliser (p); retourner 0 ; } void Use (PVOID p) { // // p peut être utilisé ici. } La bibliothèque MSDN répertorie quelques raisons pour lesquelles les applications ne doivent pas utiliser les API IsBadXXXPtr : Dans un environnement multitâche préemptif, il est possible qu’un autre thread modifie l’accès du processus à la mémoire testée. Le déréférencement de pointeurs potentiellement non valides peut désactiver l’expansion de la pile dans d’autres threads. Un thread qui épuise sa pile, lorsque l’expansion de la pile a été désactivée, entraîne l’arrêt immédiat du processus parent, sans fenêtre d’erreur contextuelle ni informations de diagnostic. Les threads d’un processus sont censés coopérer de telle sorte que l’un ne libère pas la mémoire dont l’autre a besoin. L’utilisation de cette fonction n’annule pas la nécessité de le faire. Si ce n’est pas le cas, l’application peut échouer de manière imprévisible. Pour toutes ces raisons, nous vous recommandons de ne jamais utiliser ces API.
Informations affichées par application Verifier- Paramètre 1 - Non utilisé.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : PROBE_NULL
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Détection d’un bloc de mémoire avec une adresse ou une taille de début non valide.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un appel IsBadXXXPtr avec une adresse de début non valide (par exemple, une adresse en mode noyau, au lieu d’une adresse en mode utilisateur normal) ou une taille non valide pour la mémoire tampon à sonder. Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) et essayez de déterminer pourquoi l’appelant de la fonction IsBadXXXPtr s’est retrouvé avec une adresse ou une taille non valides. Souvent, l’adresse ou la taille sont simples, par exemple une variable non initialisée. La bibliothèque MSDN répertorie quelques raisons pour lesquelles les applications ne doivent pas utiliser les API IsBadXXXPtr : Dans un environnement multitâche préemptif, il est possible qu’un autre thread modifie l’accès du processus à la mémoire testée. Le déréférencement de pointeurs potentiellement non valides peut désactiver l’expansion de la pile dans d’autres threads. Un thread qui épuise sa pile, lorsque l’expansion de la pile a été désactivée, entraîne l’arrêt immédiat du processus parent, sans fenêtre d’erreur contextuelle ni informations de diagnostic. Les threads d’un processus sont censés coopérer de telle sorte que l’un ne libère pas la mémoire dont l’autre a besoin. L’utilisation de cette fonction n’annule pas la nécessité de le faire. Si ce n’est pas le cas, l’application peut échouer de manière imprévisible. Pour toutes ces raisons, nous vous recommandons de ne jamais utiliser ces API.
Informations affichées par application Verifier- Paramètre 1 - Adresse de début.
- Paramètre 2 - Taille du bloc de mémoire.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : PROBE_INVALID_START_OR_SIZE
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Déchargement d’une DLL dont la taille ou l’adresse de début n’est pas valide.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un déchargement de DLL avec une adresse de début ou une taille de la plage de mémoire DLL non valide. Cela signifie probablement une altération de la mémoire à l’intérieur de la liste des DLL chargées ntdll.dll interne.
Informations affichées par application Verifier- Paramètre 1 - ADRESSE de base de la mémoire DLL.
- Paramètre 2 - Taille de la plage de mémoire DLL.
- Paramètre 3 - Adresse du nom de LA DLL. Utilisez du pour le vider.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : INVALID_DLL_RANGE
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Libération du bloc de mémoire à l’intérieur de la plage d’adresses de pile du thread actuel.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un VirtualFree pour un bloc de mémoire qui fait en fait partie de la pile du thread actuel (!). Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) et essayez de comprendre pourquoi la fonction qui a appelé VirtualFree a pensé que le bloc de mémoire a été alloué ou mappé dynamiquement, mais qu’il s’agissait en fait de la mémoire allouée à partir de la pile.
Informations affichées par application Verifier- Paramètre 1 - Adresse de base d’allocation.
- Paramètre 2 - Taille de la région de la mémoire.
- Paramètre 3 - Stack low limit address.
- Paramètre 4 - Stack high limit address.
- Couche de test : Mémoire
- ID d’arrêt : FREE_THREAD_STACK_MEMORY
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Paramètre FreeType incorrect pour l’opération VirtualFree.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un VirtualFree avec une valeur incorrecte pour le paramètre FreeType. Les deux seules valeurs acceptables pour ce paramètre sont MEM_DECOMMIT et MEM_RELEASE. Si VirtualFree est appelé avec une autre valeur à l’exception de ces deux valeurs, VirtualFree ne parvient pas à libérer la mémoire. Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) : l’appelant de VirtualFree est probablement le coupable.
Informations affichées par application Verifier- Paramètre 1 - Valeur incorrecte utilisée par l’application.
- Paramètre 2 - Valeur correcte attendue 1.
- Paramètre 3 - Valeur correcte attendue 2.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : INVALID_FREE_TYPE
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Essayez de libérer un bloc de mémoire virtuelle déjà gratuit.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un VirtualFree pour une adresse déjà gratuite. Pour déboguer ce point d’arrêt, examinez la trace de pile actuelle (Ko) et essayez de déterminer pourquoi la mémoire est déjà libre, mais que l’application tente de la libérer à nouveau. '!avrf -vs -a parameter1' recherche un journal des traces de pile des chemins de code qui ont alloué/libéré cette adresse et affiche ces traces de pile si elles sont disponibles. Cela peut afficher la trace de pile qui a libéré cette mémoire.
Informations affichées par application Verifier- Paramètre 1 - Adresse du bloc de mémoire.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : MEM_ALREADY_FREE
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Paramètre Size incorrect pour l’opération VirtualFree (MEM_RELEASE).
Cause probableCet arrêt est généré si le vérificateur d’application détecte un VirtualFree (MEM_RELEASE) avec une valeur différente de zéro pour le paramètre dwSize. Lorsque vous utilisez MEM_RELEASE , la seule valeur acceptable pour ce paramètre est 0. Si VirtualFree est appelé avec une autre valeur à l’exception de 0, VirtualFree ne parvient pas à libérer la mémoire. Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) : l’appelant de VirtualFree est probablement le coupable.
Informations affichées par application Verifier- Paramètre 1 - Taille incorrecte utilisée par l’application.
- Paramètre 2 - Taille correcte attendue (0).
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : INVALID_FREE_SIZE
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Exception inattendue déclenchée dans la routine du point d’entrée de DLL.
Cause probableCet arrêt est généré si la fonction de point d’entrée d’une DLL (DllMain) lève une exception. Voici un exemple de mauvaise raison : si DllMain(DLL_PROCESS_ATTACH) déclenche une exception, le chargeur de DLL Windows : - Intercepter et masquer l’exception ; - Déchargez la DLL sans appeler son DllMain(DLL_PROCESS_DETACH). Ainsi, dans de nombreux cas, la DLL a déjà alloué des ressources, puis elle a déclenché l’exception, et elle n’aura pas la possibilité de libérer ces ressources sur DllMain (DLL_PROCESS_DETACH). Pour déboguer ce stop : $ du paramètre1 - pour afficher le nom de la DLL ; $ .exr parameter2 : pour afficher les informations d’exception ; paramètre $.cxr3 suivi de kb : pour afficher les informations de contexte d’exception et la trace de pile pour l’heure où l’exception a été levée ; $ parameter4 est l’adresse d’une structure de vérificateur interne et n’a aucune importance pour la plupart des utilisateurs du vérificateur.
Informations affichées par application Verifier- Paramètre 1 - Nom de la DLL (utilisez du pour le vider).
- Paramètre 2 - Enregistrement d’exception. Utilisez .exr pour l’afficher.
- Paramètre 3 - Enregistrement de contexte. Utilisez .cxr pour l’afficher.
- Paramètre 4 Descripteur dll - Verifier
- Couche de test : Mémoire
- ID d’arrêt : DLL_UNEXPECTED_EXCEPTION
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Exception inattendue déclenchée dans la fonction de thread.
Cause probableCet arrêt est généré si une fonction de thread déclenche une exception. C’est mauvais parce que tout le processus sera tué. Pour déboguer ce stop : le paramètre $1 peut être significatif pour le type d’exception. Par exemple, un code d’exception C0000005 signifie violation d’accès ; $ .exr parameter2 : pour afficher les informations d’exception ; paramètre $ .cxr3 suivi de ko : pour afficher les informations de contexte d’exception ;
Informations affichées par Application Verifier- Paramètre 1 - Code d’exception.
- Paramètre 2 - Enregistrement d’exception. Utilisez .exr pour l’afficher.
- Paramètre 3 - Enregistrement de contexte. Utilisez .cxr pour l’afficher.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : THREAD_UNEXPECTED_EXCEPTION
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Exception inattendue déclenchée lors de l’interrogation de la mémoire.
Cause probableCet arrêt est généré si nous obtenons une exception lors d’un appel IsBadXXXPtr. Cela signifie que la mémoire tampon que nous examinons ne dispose pas de la protection assumée par l’appelant, ou que la mémoire a déjà été libérée, etc. Consultez la discussion ci-dessus sur les autres codes stop (PROBE_INVALID_ADDRESS, PROBE_FREE_MEM, PROBE_GUARD_PAGE, PROBE_NULL, PROBE_INVALID_START_OR_SIZE) pour obtenir d’autres exemples des raisons pour lesquelles l’utilisation des API IsBadXXXPtr n’est pas recommandée. Pour déboguer ce stop : $ parameter1 sera généralement C00000005, ce qui signifie violation d’accès ; $ .exr parameter2 : pour afficher les informations d’exception ; paramètre $ .cxr3 suivi de kb : pour afficher les informations de contexte d’exception et la trace de pile au moment où l’exception a été levée ;
Informations affichées par Application Verifier- Paramètre 1 - Code d’exception.
- Paramètre 2 - Enregistrement d’exception. Utilisez .exr pour l’afficher.
- Paramètre 3 - Enregistrement de contexte. Utilisez .cxr pour l’afficher.
- Paramètre 4 - Non utilisé
- Couche de test : Mémoire
- ID d’arrêt : PROBE_UNEXPECTED_EXCEPTION
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Tentative de réinitialisation de l’adresse NULL.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un appel VirtualFree (MEM_RESET) avec un premier paramètre NULL. MEM_RESET doit être utilisé uniquement pour la mémoire déjà allouée. Null n’est donc pas un premier paramètre valide dans ce cas.
Informations affichées par Application Verifier- Paramètre 1 - Non utilisé.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : INVALID_MEM_RESET
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Libération du bloc de mémoire du tas à l’intérieur de la plage d’adresses de pile du thread actuel.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un HeapFree, pour un bloc de mémoire qui fait en fait partie de la pile du thread actuel (!). Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) et essayez de comprendre pourquoi la fonction qui a appelé HeapFree a pensé que le bloc de mémoire a été alloué dynamiquement ou mappé, mais que la mémoire était en fait allouée à partir de la pile.
Informations affichées par Application Verifier- Paramètre 1 - Adresse de base d’allocation.
- Paramètre 2 - Taille de la région mémoire.
- Paramètre 3 - Stack low limit address.
- Paramètre 4 - Empiler l’adresse de limite élevée.
- Couche de test : Mémoire
- ID d’arrêt : FREE_THREAD_STACK_MEMORY_AS_HEAP
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Annuler le mappage de la région de mémoire à l’intérieur de la plage d’adresses de pile du thread actuel.
Cause probableCet arrêt est généré si le vérificateur d’application détecte un UnmapViewOfFile pour un bloc de mémoire qui fait en fait partie de la pile du thread actuel (!). Pour déboguer cet arrêt, examinez la trace de pile actuelle (ko) et essayez de comprendre pourquoi la fonction qui a appelé UnmapViewOfFile a pensé que le bloc de mémoire a été alloué dynamiquement ou mappé, mais que la mémoire était en fait allouée à partir de la pile.
Informations affichées par Application Verifier- Paramètre 1 - Adresse de base d’allocation.
- Paramètre 2 - Taille de la région mémoire.
- Paramètre 3 - Stack low limit address.
- Paramètre 4 - Empiler l’adresse de limite élevée.
- Couche de test : Mémoire
- ID d’arrêt : FREE_THREAD_STACK_MEMORY_AS_MAP
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Adresse de RTL_RESOURCE incorrecte.
Cause probableCet arrêt est généré si l’application tente d’utiliser NULL ou une autre adresse incorrecte (par exemple, une adresse en mode noyau) comme adresse d’un objet valide. RtlInitializeResource (NULL) est un appel d’API incorrect qui déclenchera ce type d’arrêt du vérificateur. param1 est l’adresse incorrecte utilisée et le coupable se trouve sur la trace de pile (affichez-la avec kb).
Informations affichées par Application Verifier- Paramètre 1 - Adresse.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : INVALID_RESOURCE_ADDRESS
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Adresse de section critique non valide.
Cause probableCet arrêt est généré si l’application tente d’utiliser NULL ou une autre adresse incorrecte (par exemple, une adresse en mode noyau) comme adresse d’un objet valide. EnterCriticalSection(NULL) est un appel d’API incorrect qui déclenchera ce type d’arrêt du vérificateur. param1 est l’adresse incorrecte utilisée et le coupable se trouve sur la trace de pile (affichez-la avec kb).
Informations affichées par Application Verifier- Paramètre 1 - Adresse.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : INVALID_CRITSECT_ADDRESS
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Tentative d’exécution de code dans la mémoire non exécutable.
Cause probableCet arrêt est généré si l’application tente d’exécuter du code à partir d’une adresse non exécutable ou libre. Pour déboguer ce stop : $ u parameter2 - pour désassembler le code coupable $ .exr parameter3 - pour afficher les informations d’exception ; $ .cxr parameter4 suivi de kb : pour afficher les informations de contexte d’exception et la trace de pile pour le moment où l’exception a été levée.
Informations affichées par Application Verifier- Paramètre 1 - Adresse en cours d’accès.
- Paramètre 2 - Code exécutant un accès non valide.
- Paramètre 3 - Enregistrement d’exception. Utilisez .exr pour l’afficher.
- Paramètre 4 - Enregistrement de contexte. Utilisez .cxr pour l’afficher.
- Couche de test : Mémoire
- ID d’arrêt : THREAD_UNEXPECTED_EXCEPTION_CODE
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Exception inattendue levée lors de l’initialisation de la mémoire tampon de sortie.
Cause probableCet arrêt est généré si nous obtenons une exception lors de l’initialisation d’une mémoire tampon spécifiée comme paramètre de sortie pour une API Win32 ou CRT. Cela signifie généralement que la taille de mémoire tampon de sortie spécifiée est incorrecte. Pour déboguer ce stop : $ .exr parameter3 - pour afficher les informations d’exception ; $ .cxr parameter4 suivi de kb : pour afficher les informations de contexte d’exception et la trace de pile au moment où l’exception a été levée.
Informations affichées par Application Verifier- Paramètre 1 -Adresse de démarrage de la mémoire tampon.
- Paramètre 2 - Taille de la mémoire tampon.
- Paramètre 3 - Enregistrement d’exception. Utilisez .exr pour l’afficher.
- Paramètre 4 - Enregistrement de contexte. Utilisez .cxr pour l’afficher.
- Couche de test : Mémoire
- ID d’arrêt : OUTBUFF_UNEXPECTED_EXCEPTION
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Exception inattendue lors de la recherche de la taille du bloc de tas.
Cause probableCet arrêt est généré si nous obtenons une exception lors de l’appel de HeapSize pour un bloc de tas en cours de libération. Cela signifie généralement que l’adresse de bloc de tas spécifiée est incorrecte ou que le tas est endommagé. Pour déboguer ce stop : $ .exr parameter3 - pour afficher l’enregistrement d’exception ; $ .cxr parameter4 suivi de kb : pour afficher les informations de contexte d’exception et la trace de pile au moment où l’exception a été levée.
Informations affichées par Application Verifier- Paramètre 1 - Adresse du bloc de tas libéré.
- Paramètre 2 - Poignée de tas.
- Paramètre 3 - Enregistrement d’exception. Utilisez .exr pour l’afficher.
- Paramètre 4 - Enregistrement de contexte. Utilisez .cxr pour l’afficher.
- Couche de test : Mémoire
- ID d’arrêt : SIZE_HEAP_UNEXPECTED_EXCEPTION
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Libération d’un bloc de mémoire avec une adresse de début non valide.
Cause probableCet arrêt est généré si le programme appelle VirtualFree (MEM_RELEASE) avec un paramètre lpAddress qui n’est pas l’adresse de base retournée par la fonction VirtualAlloc ou VirtualAllocEx lorsque la région des pages était réservée ; Pour déboguer ce stop : $ kb : pour afficher la trace de pile actuelle, qui appelle VirtualFree. Le coupable probable est la DLL qui appelle VirtualFree.
Informations affichées par Application Verifier- Paramètre 1 - Adresse du bloc de mémoire libéré.
- Paramètre 2 - Adresse de bloc de mémoire correcte attendue.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : INVALID_FREEMEM_START_ADDRESS
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Annuler le mappage du bloc de mémoire avec une adresse de début non valide.
Cause probableCet arrêt est généré si le programme appelle UnmapViewOfFile avec un paramètre lpBaseAddress qui n’est pas identique à la valeur retournée par un appel précédent à la fonction MapViewOfFile ou MapViewOfFileEx. Pour déboguer ce stop : $ kb pour afficher la trace de pile actuelle, qui appelle UnmapViewOfFile. Le coupable probable est la DLL qui appelle UnmapViewOfFile.
Informations affichées par application Verifier- Paramètre 1 - Adresse du bloc de mémoire en cours d’annulation.
- Paramètre 2 - Adresse de bloc de mémoire correcte attendue.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : INVALID_UNMAPVIEW_START_ADDRESS
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
exception inattendue déclenchée dans la fonction de rappel du pool de threads.
Cause probableCet arrêt est généré si une fonction de rappel dans le thread thread de pool de threads déclenche une exception. Pour déboguer cet arrêt : $ parameter1 peut être significatif pour le type d’exception. Par exemple, un code d’exception C0000005 signifie violation d’accès. $ .exr parameter2 : pour afficher les informations d’exception. Paramètre $.cxr3 suivi de kb : pour afficher les informations de contexte d’exception.
Informations affichées par application Verifier- Paramètre 1 - Code d’exception
- Paramètre 2 - Enregistrement d’exception. Utiliser .exr pour l’afficher
- Paramètre 3 - Enregistrement de contexte. Utiliser .cxr pour l’afficher
- Paramètre 4 - Non utilisé
- Couche de test : Mémoire
- ID d’arrêt : THREADPOOL_UNEXPECTED_EXCEPTION
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
code dans la mémoire non exécutable
Cause probableCet arrêt est généré si l’application tente d’exécuter du code à partir d’une adresse non exécutable ou libre. Pour déboguer ce stop : $ u parameter2 - pour désassembler le code coupable $ .exr parameter3 - pour afficher les informations d’exception $ .cxr parameter4 suivi de kb - pour afficher les informations de contexte d’exception et la trace de pile pour l’heure où l’exception a été levée.
Informations affichées par application Verifier- Paramètre 1 - Adresse accessible
- Paramètre 2 - Code effectuant un accès non valide
- Paramètre 3 - Enregistrement d’exception. Utilisez .exr pour l’afficher.
- Paramètre 4 - Enregistrement de contexte. Utilisez .cxr pour l’afficher.
- Couche de test : Mémoire
- ID d’arrêt : THREADPOOL_UNEXPECTED_EXCEPTION_CODE
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Création d’un tas exécutable.
Cause probableCet arrêt est généré si l’application crée un tas exécutable. Cela peut constituer un risque de sécurité.
Informations affichées par application Verifier- Paramètre 1 - Non utilisé.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : EXECUTABLE_HEAP
- Code d’arrêt : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Allocation de mémoire exécutable.
Cause probableCet arrêt est généré si l’application alloue de la mémoire exécutable. Cela peut constituer un risque de sécurité.
Informations affichées par application Verifier- Paramètre 1 - Protection de page spécifiée par l’appelant.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Mémoire
- ID d’arrêt : EXECUTABLE_MEMORY
- Arrêter le code : 600NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Tentative d’exécution de code dans la mémoire non exécutable (première chance).
Cause probableCet arrêt est généré si l’application tente d’exécuter du code à partir d’une adresse non exécutable ou libre. Pour déboguer ce stop : $ u parameter2 - pour désassembler le code coupable $ .exr parameter3 - pour afficher les informations d’exception ; $ .cxr parameter4 suivi de kb : pour afficher les informations de contexte d’exception et la trace de pile pour le moment où l’exception a été levée.
Informations affichées par Application Verifier- Paramètre 1 - Adresse en cours d’accès.
- Paramètre 2 - Code exécutant un accès non valide.
- Paramètre 3 - Enregistrement d’exception. Utilisez .exr pour l’afficher.
- Paramètre 4 - Enregistrement de contexte. Utilisez .cxr pour l’afficher.
- Couche de test : Exceptions
- ID d’arrêt : FIRST_CHANCE_ACCESS_VIOLATION_CODE
- Arrêter le code : 650NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
La priorité de ce thread de thread de thread a été modifiée.
Cause probableCet arrêt est généré si la priorité du thread est modifiée lorsqu’elle est retournée au threadpool.
Informations affichées par Application Verifier- Format: - Thread de pool de threads (%x) ayant exécuté le rappel (%p) a une priorité de thread modifiée (%i -> %i)
- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Contexte.
- Paramètre 3 - Threadpool Trace de pile d’allocation d’objets, utilisez dps pour le vider.
- Paramètre 4 - Priorité actuelle.
- Couche de test : Threadpool
- ID d’arrêt : INCONSISTENT_PRIORITY
- Arrêter le code : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
L’affinité de ce thread de thread de thread a été modifiée.
Cause probableCet arrêt est généré si l’affinité de thread est modifiée lorsqu’elle est retournée au pool de threads.
Informations affichées par Application Verifier- Format: - threadpool (%x) ayant exécuté le rappel (%p) a un masque d’affinité de thread modifié (%p -> %p)
- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Contexte.
- Paramètre 3 - Threadpool Trace de pile d’allocation d’objets, utilisez dps pour le vider.
- Paramètre 4 - Affinité actuelle.
- Couche de test : Threadpool
- ID d’arrêt : INCONSISTENT_AFFINITY_MASK
- Arrêter le code : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Msg non traité dans le pool msg du thread actif.
Cause probableCet arrêt est généré si un message laissé comme non traité lorsque ce thread de thread de thread est retourné au pool. C’est dangereux, car il sera traité dans un contexte totalement différent. Utilisez s’il vous plaît utiliser !avrf -tp <Param4> pour afficher les messages publiés sur ce thread.
Informations affichées par Application Verifier- Format: - thread de pool de threads (%x) ayant exécuté le rappel (%p) a un message de fenêtre en suspens (%x : %x)
- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Contexte.
- Paramètre 3 - Threadpool Trace de pile d’allocation d’objets, utilisez dps pour le vider.
- Paramètre 4 - ID de thread thread de thread de thread de pool. Utilisez !avrf -tp <threadid> pour afficher les messages publiés sur ce thread.
- Couche de test : Threadpool
- ID d’arrêt : ORPHANED_THREAD_MESSAGE
- Arrêter le code : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
La fenêtre non fermée appartenait au thread actif.
Cause probableCet arrêt est généré si une fenêtre est maintenue en vie lorsque ce thread de thread de thread est retourné au pool.
Informations affichées par Application Verifier- Format: - thread de pool de threads (%x) ayant exécuté le rappel (%p) a un hwnd valide (%x : %s) qui peut recevoir des messages
- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Contexte.
- Paramètre 3 - Threadpool Trace de pile d’allocation d’objets, utilisez dps pour le vider.
- Paramètre 4 - ID de thread thread de thread de thread de pool.
- Couche de test : Threadpool
- ID d’arrêt : ORPHANED_THREAD_WINDOW
- Arrêter le code : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
ExitThread() sur un thread de pool de threads.
Cause probableCet arrêt est généré si ExitThread est appelé sur un thread de pool de threads. C’est interdit, car cela rendra le système instable. Cela provoquera une fuite de ressources, un blocage ou un av.
Informations affichées par application Verifier- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Context.
- Paramètre 3 - Trace de pile d’allocation d’objets threadpool, utilisez dps pour la vider.
- Paramètre 4 - Non utilisé.
- Couche de test : Threadpool
- ID d’arrêt : ILLEGAL_THREAD_EXIT
- Code d’arrêt : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Le thread est à l’état d’emprunt d’identité lorsqu’il est retourné à un thread de pool de threads.
Cause probableCet arrêt est généré si la fonction de rappel modifie le jeton de thread pour emprunter l’identité d’un autre utilisateur et a oublié de le réinitialiser avant de le renvoyer au pool de threads.
Informations affichées par application Verifier- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Context.
- Paramètre 3 - Trace de pile d’allocation d’objets threadpool, utilisez dps pour la vider.
- Paramètre 4 - Non utilisé.
- Couche de test : Threadpool
- ID d’arrêt : THREAD_IN_IMPERSONATION
- Code d’arrêt : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Une fonction qui nécessite un thread persistant est appelée.
Cause probableCertaines API Microsoft Windows doivent être appelées à l’intérieur d’un thread dédié ou persistant. Dans le pool de threads, vous devez généralement éviter d’utiliser le stockage local de threads et de mettre en file d’attente les appels asynchrones qui nécessitent un thread persistant, tel que la fonction RegNotifyChangeKeyValue. Toutefois, ces fonctions peuvent être mises en file d’attente vers un thread de travail persistant à l’aide de QueueUserWorkItem avec l’option WT_EXECUTEINPERSISTENTTHREAD. Un ko dans le débogueur révèle l’appelant.
Informations affichées par application Verifier- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Context.
- Paramètre 3 - Trace de pile d’allocation d’objets threadpool, utilisez dps pour la vider.
- Paramètre 4 - Non utilisé.
- Couche de test : Threadpool
- ID d’arrêt : PERSISTED_THREAD_NEEDED
- Code d’arrêt : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Le thread est dans sale’état de transaction.
Cause probableCet arrêt est généré si la fonction de rappel a oublié de fermer ou de réinitialiser le handle de transaction actuel.
Informations affichées par application Verifier- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Context.
- Paramètre 3 - Trace de pile d’allocation d’objets threadpool, utilisez dps pour la vider.
- Paramètre 4 - Handle de transaction.
- Couche de test : Threadpool
- ID d’arrêt : DIRTY_TRANSACTION_CONTEXT
- Code d’arrêt : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Cet état de pool de threads a des appels CoInit et CoUnInit déséquilibrés.
Cause probableCet arrêt est généré si la fonction de rappel appelle CoInit et CoUnInit déséquilibré.
Informations affichées par application Verifier- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Context.
- Paramètre 3 - Trace de pile d’allocation d’objets threadpool, utilisez dps pour la vider.
- Paramètre 4 - Nombre d’appels équilibré.
- Couche de test : Threadpool
- ID d’arrêt : DIRTY_COM_STATE
- Code d’arrêt : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Les paramètres de l’objet minuteur sont incohérents. La période doit être 0 lorsque WT_EXECUTEONLYONCE est spécifié lors de la création du minuteur
Cause probableCet arrêt est généré si la période de signal du minuteur n’est pas égale à zéro lorsque le minuteur n’est défini pour signaler qu’une seule fois avec l’indicateur WT_EXECUTEONLYONCE
Informations affichées par application Verifier- Paramètre 1 - Période spécifiée.
- Paramètre 2 - Indicateurs spécifiés.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Threadpool
- ID d’arrêt : INCONSISTENT_TIMER_PARAMS
- Code d’arrêt : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
Le verrou du chargeur a été maintenu par le thread threadpool dans le rappel.
Cause probableCet arrêt est généré si le verrou du chargeur est maintenu dans le rappel et n’est pas libéré lorsque le thread est retourné au pool de threads.
Informations affichées par application Verifier- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Context.
- Paramètre 3 - Trace de pile d’allocation d’objets threadpool, utilisez dps pour la vider.
- Paramètre 4 - Non utilisé.
- Couche de test : Threadpool
- ID d’arrêt : LOADER_LOCK_HELD
- Code d’arrêt : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
La langue par défaut est définie par le thread de threadpool dans le rappel.
Cause probableCet arrêt est généré si la langue par défaut est définie dans le rappel et n’est pas effacée lorsque le thread est retourné au pool de threads.
Informations affichées par application Verifier- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Context.
- Paramètre 3 - Trace de pile d’allocation d’objets threadpool, utilisez dps pour la vider.
- Paramètre 4 - Non utilisé.
- Couche de test : Threadpool
- ID d’arrêt : PREFERRED_LANGUAGES_SET
- Code d’arrêt : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
La priorité d’arrière-plan est définie par le thread de threadpool dans le rappel.
Cause probableCet arrêt est généré si la priorité d’arrière-plan est définie dans le rappel et n’est pas désactivée lorsque le thread est retourné au pool de threads.
Informations affichées par application Verifier- Paramètre 1 - Callback, fonction.
- Paramètre 2 - Context.
- Paramètre 3 - Trace de pile d’allocation d’objets threadpool, utilisez dps pour la vider.
- Paramètre 4 - Non utilisé.
- Couche de test : Threadpool
- ID d’arrêt : BACKGROUND_PRIORITY_SET
- Code d’arrêt : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
TerminateThread() sur un thread de thread de pool de threads.
Cause probableCet arrêt est généré si TerminateThread est appelé sur un thread de pool de threads. C’est interdit, car cela rendra le système instable. Cela provoquera une fuite de ressources, un blocage ou un av.
Informations affichées par application Verifier- Paramètre 1 - Non utilisé.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : Threadpool
- ID d’arrêt : ILLEGAL_THREAD_TERMINATION
- Code d’arrêt : 700NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
La pile a été dérouillée lorsque l’opération d’E/S asynchrone est en attente.
Cause probableCet arrêt est généré si l’application a émis une opération d’E/S qui utilise une variable de pile et n’a pas attendu la fin de l’E/S, ce qui entraîne une altération de la pile. Pour déboguer ce stop : $ dps parameter4 pour afficher la trace de pile lorsque les E/S ont été émises. Parameter1 indique l’adresse basée sur la pile et le paramètre3 le thread qui a émis les E/S.
Informations affichées par application Verifier- Paramètre 1 - Adresse de la variable de pile utilisée dans les E/S.
- Paramètre 2 - Pointeur de pile actuel.
- Paramètre 3 - Thread d’origine qui a émis les E/S.
- Paramètre 4 - Stack Trace lorsque les E/S ont été émises.
- Couche de test : IO
- ID d’arrêt : ASYNCIO_STACK_UNWIND
- Code d’arrêt : 800NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un retour arrière : Oui
La pile a été endommagée lorsque l’opération d’E/S asynchrone est en attente.
Cause probableCet arrêt est généré si l’application a émis une opération d’E/S qui utilise une variable de pile et n’a pas attendu la fin de l’E/S, ce qui entraîne une altération de la pile. Pour déboguer ce stop : $ dps parameter4 pour afficher la trace de pile lorsque les E/S ont été émises. Parameter1 indique l’adresse basée sur la pile et le paramètre3 le thread qui a émis les E/S.
Informations affichées par Application Verifier- Paramètre 1 - Adresse de la variable de pile utilisée dans les E/S.
- Paramètre 2 - Pointeur de pile actuel.
- Paramètre 3 - Thread d’origine qui a émis les E/S.
- Paramètre 4 - Stack Trace lorsque les E/S ont été émises.
- Couche de test : IO
- ID d’arrêt : ASYNCIO_CORRUPTED_STACK
- Arrêter le code : 800NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Utilisation d’une adresse libérée dans une opération d’E/S en attente.
Cause probableCet arrêt est généré si l’application a émis une opération d’E/S et libéré la mémoire utilisée dans les E/S avant la fin de l’E/S, ce qui entraîne une altération de la mémoire, etc. Pour déboguer ce stop : $ dps parameter4 pour afficher la trace de pile lorsque les E/S ont été émises. Le paramètre1 indique l’adresse utilisée dans les E/S. Le paramètre2 indique l’adresse libérée et le paramètre3 le thread qui a émis les E/S.
Informations affichées par Application Verifier- Paramètre 1 - Adresse utilisée dans les E/S.
- Paramètre 2 - Adresse libérée.
- Paramètre 3 - Thread d’origine qui a émis les E/S.
- Paramètre 4 - Stack Trace lorsque les E/S ont été émises.
- Couche de test : IO
- ID d’arrêt : FREED_ADDRESS_IN_PENDINGIO
- Arrêter le code : 800NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Un bloc d’E/S status (CHEVAUCHEMENT) est réutilisé alors que la demande d’E/S associée est toujours en attente.
Cause probableCet arrêt est généré si l’application a réutilisé un bloc d’E/S status (CHEVAUCHEMENT) alors qu’une demande d’E/S utilisant ce bloc d’E/S status (OVERLAPPED) est toujours en attente. Pour déboguer ce stop : $ dps parameter3 pour afficher la trace de pile lorsque l’E/S d’origine a été émise. Le paramètre1 indique l’adresse utilisée dans l’E/S et le paramètre2 le thread qui a émis les E/S.
Informations affichées par Application Verifier- Paramètre 1 - Adresse du bloc d’E/S status (CHEVAUCHEMENT).
- Paramètre 2 - Thread d’origine qui a émis les E/S.
- Paramètre 3 - Stack Trace lorsque les E/S ont été émises.
- Paramètre 4 - Non utilisé.
- Couche de test : IO
- ID d’arrêt : REUSED_IOSTATUS_BLOCK
- Arrêter le code : 800NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
À l’aide d’un indicateur non pris en charge, FILE_ATTRIBUTE_NOT_CONTENT_INDEXED sur CreateFile
Cause probableL’ancienne version de MSDN a documenté à tort CreateFile comme prenant en charge FILE_ATTRIBUTE_NOT_CONTENT_INDEXED. Si cet indicateur est prévu, il doit être défini à l’aide d’autres fonctions d’API telles que SetFileAttributes. $ ln Parameter1 pour rechercher l’appelant de CreateFile.
Informations affichées par Application Verifier- Format: - CreateFile lors de l’écriture de %hs%ws avec les indicateurs %08x %08x %08x
- Paramètre 1 - Adresse de retour.
- Paramètre 2 - Non utilisé.
- Paramètre 3 - Non utilisé.
- Paramètre 4 - Non utilisé.
- Couche de test : IO
- ID d’arrêt : USING_BAD_CREATEFILE_FLAG
- Arrêter le code : 800NAN
- Gravité: Avertissement
- Erreur ponctuelle :
- Rapport d’erreurs : Aucun
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Une allocation de tas a été divulguée.
Cause probableCet arrêt est généré si la dll propriétaire de l’allocation a été déchargée dynamiquement lors de la propriété des ressources.
Informations affichées par Application Verifier- Paramètre 1 - Adresse de l’allocation divulguée. Exécutez !heap -p -a <address> pour obtenir des informations supplémentaires sur l’allocation.
- Paramètre 2 - Adresse à la trace de la pile d’allocation. Exécutez l’adresse> dps <pour afficher la pile d’allocation.
- Paramètre 3 - Adresse du nom de la dll propriétaire. Exécutez l’adresse> du <pour lire le nom de la dll.
- Paramètre 4 - Base de la dll propriétaire. Exécutez .reload <dll_name> = <adresse> pour recharger la dll propriétaire. Utilisez « lm » pour obtenir plus d’informations sur les modules chargés et déchargés.
- Couche de test : Fuite
- ID d’arrêt : ALLOCATION
- Arrêter le code : 900NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Un HANDLE a été divulgué.
Cause probableCet arrêt est généré si la dll propriétaire du handle a été déchargée dynamiquement lors de la propriété des ressources. Pour déboguer cet arrêt : exécutez !htrace parameter1 pour obtenir des informations supplémentaires sur le handle.
Informations affichées par Application Verifier- Paramètre 1 - Valeur du handle divulgué. Exécutez !htrace <handle> pour obtenir des informations supplémentaires sur le handle si le suivi de handle est activé.
- Paramètre 2 - Adresse à la trace de la pile d’allocation. Exécutez l’adresse> dps <pour afficher la pile d’allocation.
- Paramètre 3 - Adresse du nom de la dll propriétaire. Exécutez l’adresse> du <pour lire le nom de la dll.
- Paramètre 4 - Base de la dll propriétaire. Exécutez .reload <dll_name> = <adresse> pour recharger la dll propriétaire. Utilisez « lm » pour obtenir plus d’informations sur les modules chargés et déchargés.
- Couche de test : Fuite
- ID d’arrêt : POIGNÉE
- Arrêter le code : 900NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Un HKEY a été divulgué.
Cause probableCet arrêt est généré si la dll propriétaire de la clé de Registre a été déchargée dynamiquement pendant la propriété des ressources.
Informations affichées par Application Verifier- Paramètre 1 - Valeur de la clé HKEY divulguée.
- Paramètre 2 - Adresse à la trace de la pile d’allocation. Exécutez l’adresse> dps <pour afficher la pile d’allocation.
- Paramètre 3 - Adresse du nom de la dll propriétaire. Exécutez l’adresse> du <pour lire le nom de la dll.
- Paramètre 4 - Base de la dll propriétaire. Exécutez .reload <dll_name> = <adresse> pour recharger la dll propriétaire. Utilisez « lm » pour obtenir plus d’informations sur les modules chargés et déchargés.
- Couche de test : Fuite
- ID d’arrêt : REGISTRE
- Arrêter le code : 900NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Une réservation virtuelle a été divulguée.
Cause probableCet arrêt est généré si la dll propriétaire de la réservation virtuelle a été déchargée dynamiquement lors de la propriété des ressources.
Informations affichées par Application Verifier- Paramètre 1 - Adresse de réservation divulguée.
- Paramètre 2 - Adresse à la trace de la pile d’allocation. Exécutez l’adresse> dps <pour afficher la pile d’allocation.
- Paramètre 3 - Adresse du nom de la dll propriétaire. Exécutez l’adresse> du <pour lire le nom de la dll.
- Paramètre 4 - Base de la dll propriétaire. Exécutez .reload <dll_name> = <adresse> pour recharger la dll propriétaire. Utilisez « lm » pour obtenir plus d’informations sur les modules chargés et déchargés.
- Couche de test : Fuite
- ID d’arrêt : VIRTUAL_RESERVATION
- Arrêter le code : 900NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Un BSTR a été divulgué.
Cause probableCet arrêt est généré si la dll propriétaire de SysString a été déchargée dynamiquement lors de la propriété des ressources.
Informations affichées par Application Verifier- Paramètre 1 - Adresse du BSTR qui a fait l’objet d’une fuite. Exécutez !heap -p -a <address> pour obtenir des informations supplémentaires sur l’allocation.
- Paramètre 2 - Adresse à la trace de la pile d’allocation. Exécutez l’adresse> dps <pour afficher la pile d’allocation.
- Paramètre 3 - Adresse du nom de la dll propriétaire. Exécutez l’adresse> du <pour lire le nom de la dll.
- Paramètre 4 - Base de la dll propriétaire. Exécutez .reload <dll_name> = <adresse> pour recharger la dll propriétaire. Utilisez « lm » pour obtenir plus d’informations sur les modules chargés et déchargés.
- Couche de test : Fuite
- ID d’arrêt : SYSSTRING
- Arrêter le code : 900NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Une notification d’alimentation n’a pas été désinscrit.
Cause probableCet arrêt est généré si la dll s’est inscrite pour la notification d’alimentation et a été déchargée dynamiquement sans désinscription.
Informations affichées par Application Verifier- Paramètre 1 - Adresse de l’inscription de la notification d’alimentation.
- Paramètre 2 - Adresse à la trace de pile d’inscription. Exécutez l’adresse> dps <pour afficher la pile d’allocation.
- Paramètre 3 - Adresse du nom de la dll propriétaire. Exécutez l’adresse> du <pour lire le nom de la dll.
- Paramètre 4 - Base de la dll propriétaire. Exécutez .reload <dll_name> = <adresse> pour recharger la dll propriétaire. Utilisez « lm » pour obtenir plus d’informations sur les modules chargés et déchargés.
- Couche de test : Fuite
- ID d’arrêt : POWER_NOTIFICATION
- Arrêter le code : 900NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Une allocation COM a été divulguée.
Cause probableCet arrêt est généré si la dll propriétaire de l’allocation COM a été déchargée dynamiquement lors de la propriété des ressources.
Informations affichées par Application Verifier- Paramètre 1 - Adresse de l’allocation COM divulguée. Exécutez !heap -p -a <address> pour obtenir des informations supplémentaires sur l’allocation.
- Paramètre 2 - Adresse à la trace de la pile d’allocation. Exécutez l’adresse> dps <pour afficher la pile d’allocation.
- Paramètre 3 - Adresse du nom de la dll propriétaire. Exécutez l’adresse> du <pour lire le nom de la dll.
- Paramètre 4 - Base de la dll propriétaire. Exécutez .reload <dll_name> = <adresse> pour recharger la dll propriétaire. Utilisez « lm » pour obtenir plus d’informations sur les modules chargés et déchargés.
- Couche de test : Fuite
- ID d’arrêt : COM_ALLOCATION
- Arrêter le code : 900NAN
- Gravité: Erreur
- Erreur ponctuelle :
- Rapport d’erreurs : Pause
- Journaliser dans le fichier : Oui
- Créer un backtrace : Oui
Voir aussi
Vérificateur d’application - Codes et définitions d’arrêt
Vérificateur d’application - Vue d’ensemble
Vérificateur d’application - Fonctionnalités
Vérificateur d’applications - Test des applications
Vérificateur d’application - Tests dans Application Verifier
Vérificateur d’application - Débogage des arrêts du vérificateur d’application