0x1AA de vérification des bogues : EXCEPTION_ON_INVALID_STACK
Le case activée de bogue EXCEPTION_ON_INVALID_STACK a la valeur 0x000001AA. Cette vérification d’erreur indique que la répartition des exceptions a été croisée dans une pile de noyau non valide. Cela peut indiquer que le pointeur de pile du noyau a été endommagé lors de la distribution ou du déroulement des exceptions (par exemple, en raison d’une altération de la pile d’un pointeur d’image), ou qu’un pilote s’exécute hors d’une pile qui n’est pas une pile de noyau légale.
Important
Cette rubrique s’adresse aux développeurs. Si vous êtes un client qui a reçu ce code d’erreur lors de l’utilisation de votre ordinateur, consultez Résoudre les erreurs d’écran bleu.
paramètres de EXCEPTION_ON_INVALID_STACK
Paramètre | Description |
---|---|
1 |
Pointeur vers la pile actuelle. |
2 |
Type de limite de pile, par exemple NormalStackLimits (3). Étant donné que la pile n’est pas valide, cela représente la meilleure estimation du noyau quant au type de pile de noyau qui doit être active compte tenu de l’état de la machine. Type de limite de pile :
|
3 |
Pointeur vers l’enregistrement de contexte représentant le contexte qui était en cours de décompressation (ou de distribution pour une exception) lorsque la pile non valide a été rencontrée. |
4 |
Fournit un enregistrement d’exception représentant l’exception active qui a été distribuée. |
Cause
Une tentative d’accès à une pile non valide s’est produite. Étant donné qu’une pile de noyau est de taille limitée, le développeur doit être prudent avec ses limites de suivi, par exemple lors de son utilisation pour copier des blocs de mémoire vidéo. Pour plus d’informations sur la pile du noyau Windows, consultez Utilisation de la pile du noyau.
Résolution
À l’aide d’un vidage complet du noyau ou d’un débogueur attaché, les commandes suivantes peuvent être utiles pour collecter des informations et suivre le code qui accède incorrectement à la mémoire.
Tout d’abord, utilisez la commande !analyze pour collecter des informations, en particulier les paramètres de case activée de bogues. Examinez également la ligne source défaillante et le nom du module, s’il est disponible.
Arguments:
Arg1: 00000018940ffbe8
Arg2: 0000000000000003
Arg3: ffffe301c8db2900
Arg4: ffffdc0e9ee665d8
Utilisez le lien de commande .trap fourni dans la sortie !analyze pour définir le contexte sur le frame d’interruption.
2: kd> .trap 0xffffdc0e9ee66680
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=003f8b813f20b6e0 rbx=0000000000000000 rcx=ee7defdd9c530000
rdx=ffffcb81660ea078 rsi=0000000000000000 rdi=0000000000000000
rip=fffff8002b7f8933 rsp=ffffdc0e9ee66810 rbp=ffffcb81511c3010
r8=0000000000000001 r9=0000000000004014 r10=ffffdc0e9ee66910
r11=0000000000000000 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0 nv up ei pl zr na po nc
dxgmms2!RemoveHeadList+0xd [inlined in dxgmms2!VidSchiSignalRegisteredSyncObjects+0x3f]:
fffff800`2b7f8933 48395808 cmp qword ptr [rax+8],rbx ds:003f8b81`3f20b6e8=????????????????
Utilisez la commande !vm pour examiner l’utilisation de la mémoire, par exemple pour voir la quantité de mémoire des piles du noyau utilisée.
0: kd> !vm
Physical Memory: 1541186 ( 6164744 Kb)
Available Pages: 470550 ( 1882200 Kb)
ResAvail Pages: 1279680 ( 5118720 Kb)
...
Kernel Stacks: 13686 ( 54744 Kb)
Cette quantité de mémoire utilisée est inférieure à celle disponible dans cet exemple.
Utilisez la commande !thread pour collecter des informations sur ce qui est en cours d’exécution. Dans cet exemple, il semble qu’un thread de travail du planificateur vidéo soit en cours d’exécution.
2: kd> !thread
THREAD ffffcb816348b040 Cid 0c58.4a1c Teb: 0000000000000000 Win32Thread: 0000000000000000 RUNNING on processor 2
Not impersonating
DeviceMap ffff840f38c04170
Owning Process ffffcb81648980c0 Image: YourPhone.exe
Attached Process N/A Image: N/A
Wait Start TickCount 34501403 Ticks: 0
Context Switch Count 43 IdealProcessor: 3
UserTime 00:00:00.000
KernelTime 00:00:00.015
Win32 Start Address 0x00007fff34656d00
Stack Init ffffdc0e9ee675b0 Current ffffdc0e9ee66610
Base ffffdc0e9ee68000 Limit ffffdc0e9ee61000 Call 0000000000000000
Priority 8 BasePriority 8 PriorityDecrement 0 IoPriority 2 PagePriority 5
...
Utilisez ensuite kb (Display Stack Backtrace) avec l’option f pour afficher la pile et l’utilisation de la mémoire pour voir s’il existe un utilisateur de mémoire volumineux.
2: kd> kf
...
02 40 ffffdc0e`9ee66850 fffff800`2b7f8801 dxgmms2!VidSchiMarkDeviceAsError+0x4d
...
Si une partie spécifique du code semble suspecte, utilisez la commande u, ub, uu (Unassemble) pour examiner le code du langage assembleur associé.
2: kd> u ffffdc0e`9ee66850 l10
ffffdc0e`9ee66850 1030 adc byte ptr [rax],dh
ffffdc0e`9ee66852 1c51 sbb al,51h
ffffdc0e`9ee66854 81cbffffc068 or ebx,68C0FFFFh
ffffdc0e`9ee6685a e69e out 9Eh,al
ffffdc0e`9ee6685c 0e ???
ffffdc0e`9ee6685d dcff fdiv st(7),st
ffffdc0e`9ee6685f ff00 inc dword ptr [rax]
ffffdc0e`9ee66861 0000 add byte ptr [rax],al
ffffdc0e`9ee66863 0000 add byte ptr [rax],al
ffffdc0e`9ee66865 0000 add byte ptr [rax],al
ffffdc0e`9ee66867 000e add byte ptr [rsi],cl
ffffdc0e`9ee66869 0000 add byte ptr [rax],al
ffffdc0e`9ee6686b 0000 add byte ptr [rax],al
ffffdc0e`9ee6686d 0000 add byte ptr [rax],al
ffffdc0e`9ee6686f 0010 add byte ptr [rax],dl
ffffdc0e`9ee66871 301c51 xor byte ptr [rcx+rdx*2],bl
Utilisez la commande .cxr (Display Context Record) pour afficher l’enregistrement de contexte, à l’aide de la valeur de paramètre 3 fournie par !analyze.
2: kd> .cxr ffffe301c8db2900
rax=003f8b813f20b6e0 rbx=ffffcb813f607650 rcx=ee7defdd9c530000
rdx=ffffcb81660ea078 rsi=0000000000000000 rdi=ffffcb81511c30a8
rip=fffff8002b7f8933 rsp=ffffdc0e9ee66810 rbp=ffffcb81511c3010
r8=0000000000000001 r9=0000000000004014 r10=ffffdc0e9ee66910
r11=0000000000000000 r12=ffffdc0e9ee66910 r13=ffffcb814019c000
r14=0000000000000000 r15=ffffdc0e9ee66910
iopl=0 nv up ei pl zr na po nc
cs=0010 ss=0018 ds=002b es=002b fs=0053 gs=002b efl=00050246
dxgmms2!RemoveHeadList+0xd [inlined in dxgmms2!VidSchiSignalRegisteredSyncObjects+0x3f]:
fffff800`2b7f8933 48395808 cmp qword ptr [rax+8],rbx ds:002b:003f8b81`3f20b6e8=????????????????
Utilisez la commande .exr (Afficher l’enregistrement d’exception) pour afficher l’enregistrement d’exception, à l’aide de la valeur de paramètre 4 fournie par !analyze.
2: kd> .exr ffffdc0e9ee665d8
ExceptionAddress: fffff8002b7f8933 (dxgmms2!RemoveHeadList+0x000000000000000d)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000000
Parameter[1]: ffffffffffffffff
Attempt to read from address ffffffffffffffff
L’enregistrement d’exception indique une tentative de lecture à partir de et de l’adresse de ffffffffffffffff
, qui serait une zone à examiner plus en détail.
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour