0xC2 de vérification des bogues : BAD_POOL_CALLER
Le BAD_POOL_CALLER bogue case activée BAD_POOL_CALLER a la valeur 0x000000C2. Cela indique que le thread actuel effectue une demande de pool incorrecte.
Important
Cet article est destiné aux programmeurs. Si vous êtes un client qui a reçu un code d’erreur d’écran bleu lors de l’utilisation de votre ordinateur, consultez Résoudre les erreurs d’écran bleu.
paramètres de BAD_POOL_CALLER
Le paramètre 1 indique le type de violation.
Paramètre 1 | Paramètre 2 | Paramètre 3 | Paramètre 4 | Cause de l’erreur |
---|---|---|---|---|
0x00 |
0 |
Type de pool |
Balise de pool |
Le thread actuel a demandé une allocation de pool d’octets zéro. |
0x01, 0x02, 0x04 |
Pointeur vers l’en-tête du pool |
Première partie du contenu de l’en-tête de pool |
0 |
L’en-tête du pool a été endommagé. |
0x06 |
Réservé |
Pointeur vers l’en-tête du pool |
Contenu de l’en-tête de pool |
Le thread actuel a tenté de libérer le pool, qui était déjà libéré. |
0x07 |
Réservé |
Contenu de l’en-tête de pool |
Adresse du bloc de pool en cours de libération |
Le thread actuel a tenté de libérer le pool, qui était déjà libéré. |
0x08 |
IRQL actuel |
Type de pool |
Taille de l’allocation, en octets |
Le thread actuel a tenté d’allouer le pool à un IRQL non valide. |
0x09 |
IRQL actuel |
Type de pool |
Adresse du pool |
Le thread actuel a tenté de libérer le pool à un IRQL non valide. |
0x0A |
Adresse du pool |
Balise de l’allocator |
Balise utilisée dans la tentative gratuite |
Le thread actuel a tenté de libérer de la mémoire du pool à l’aide de la balise incorrecte. (La mémoire peut appartenir à un autre composant.) |
0x0B, 0x0C, ou 0x0D |
Adresse du pool |
Balise de l’allocation de pool |
Pointeur de processus de quota incorrect |
Le thread actuel a tenté de libérer un quota sur une allocation de pool endommagée. |
0x40 |
Adresse de début |
Début de l’espace d’adressage système |
0 |
Le thread actuel a tenté de libérer le pool de noyaux à une adresse en mode utilisateur. |
0x41 |
Adresse de début |
Cadre de page physique |
Cadre de page physique le plus élevé |
Le thread actuel a tenté de libérer une adresse de pool non allouée. |
0x42 ou 0x43 |
Adresse libérée |
0 |
0 |
Le thread actuel a tenté de libérer une adresse virtuelle qui n’a jamais été dans un pool. |
0x44 |
Adresse de début |
Réservé |
0 |
Le thread actuel a tenté de libérer une adresse de pool non allouée. |
0x46 |
Adresse de début |
0 |
0 |
Le thread actuel a tenté de libérer une adresse de pool non valide. |
0x47 |
Adresse de début |
Cadre de page physique |
Cadre de page physique le plus élevé |
Le thread actuel a tenté de libérer une adresse de pool non allouée. |
0x48 |
Adresse de début |
Réservé |
Réservé |
Le thread actuel a tenté de libérer une adresse de pool paginée non allouée. |
0x50 |
Adresse de début |
Démarrer le décalage, dans les pages, à partir du début du pool paginé |
Taille du pool paginé, en octets |
Le thread actuel a tenté de libérer une adresse de pool paginée non allouée. |
0x60 |
Adresse de début |
0 |
0 |
Le thread actuel a tenté de libérer une adresse de mémoire contiguë non valide. (L’appelant de MmFreeContiguousMemory passe un pointeur incorrect.) |
0x99 |
Adresse libérée |
0 |
0 |
Le thread actuel a tenté de libérer le pool avec une adresse non valide. (Ce code peut également indiquer une altération dans l’en-tête du pool.) |
0x9A |
Type de pool |
Nombre d’octets demandés |
Balise de pool |
Le thread actuel a marqué une demande d’allocation MUST_SUCCEED. (Ce type de pool n’est plus pris en charge.) |
0x9B |
Type de pool |
Nombre d’octets demandés |
Adresse de l’appelant |
Le thread actuel a tenté d’allouer un pool avec une balise 0 (Cela serait impossible à effectuer, et peut-être endommagé les tables de balises existantes.) |
0x9C |
Type de pool |
Nombre d’octets demandés |
Adresse de l’appelant |
Le thread actuel a tenté d’allouer un pool avec une balise « BIG ». (Cela n’est pas possible et risque d’endommager les tables d’étiquettes existantes.) |
0x9D |
Balise de pool incorrecte utilisée |
Type de pool |
Adresse de l’appelant |
Le thread actuel a tenté d’allouer un pool avec une balise qui ne contient pas de lettres ou de chiffres. L’utilisation de telles balises rend le suivi des problèmes de pool difficiles. |
0x41286 |
Réservé |
Réservé |
Démarrer le décalage à partir du début du pool paginé, dans les pages |
Le thread actuel a tenté de libérer une adresse de pool paginée au milieu d’une allocation. |
Les codes _POOL_TYPE sont énumérés dans Ntddk.h. En particulier, 0 indique le pool non paginé et 1 indique le pool paginé.
Cause
Une demande de pool non valide a été effectuée par le thread actuel. En règle générale, il s’agit d’un niveau IRQL incorrect ou d’une double libération de la même allocation de mémoire, etc.
Résolution
Activez le vérificateur de pilotes avec les options de pool de mémoire activées pour obtenir plus d’informations sur ces erreurs et localiser le pilote en panne.
Driver Verifier
Driver Verifier est un outil qui s’exécute en temps réel pour examiner le comportement des pilotes. S’il constate des erreurs dans l’exécution du code du pilote, il crée de manière proactive une exception pour permettre à cette partie du code du pilote d’être examinée plus en détail. Le gestionnaire de vérificateurs de pilotes est intégré à Windows et est disponible sur tous les PC Windows. Pour démarrer le gestionnaire de vérificateurs de pilotes, tapez Vérificateur à l’invite de commandes. Vous pouvez configurer les pilotes que vous souhaitez vérifier. Le code qui vérifie les pilotes ajoute une surcharge à mesure qu’il s’exécute. Essayez donc de vérifier le plus petit nombre de pilotes possible. Pour plus d’informations, consultez Driver Verifier.
Diagnostics de la mémoire Windows
En particulier, pour les situations d’altération du pool de mémoire, exécutez l’outil Diagnostics de la mémoire Windows pour essayer d’isoler la mémoire physique en tant que cause. Dans la zone de recherche du panneau de configuration, tapez Mémoire, puis sélectionnez Diagnostiquer les problèmes de mémoire de votre ordinateur. Une fois le test exécuté, utilisez l’Observateur d’événements pour afficher les résultats dans le journal système. Recherchez l’entrée MemoryDiagnostics-Results pour afficher les résultats.