电脑出现蓝屏EXCEPTION_ON_INVALID_STACK怎么修复
蓝屏代码0x000001AA代表"EXCEPTION_ON_INVALID_STACK",意味着在执行过程中发生了无效的堆栈异常。这通常是由于堆栈被破坏或操作系统无法访问正确的堆栈导致的。这种情况很可能会导致系统崩溃并出现蓝屏错误。
快快蓝屏修复助手可以帮你修复各类蓝屏异常和错误问题,能快速检测软件、硬件和驱动故障。分析蓝屏日志。
要解决这个问题,可以尝试以下方法:
方法一:清除计算机内部的灰尘和污垢
使用压缩空气罐清理内存插槽、CPU插槽以及其他内部组件的灰尘,灰尘和污垢可能导致接触不良或过热问题,从而引发蓝屏错误。
方法二:扫描病毒和恶意软件
运行杀毒软件或安全软件,进行全面系统扫描,以排除病毒或恶意软件的可能性。
方法三:升级操作系统
确保您的Windows操作系统已经更新到最新版本,可以通过Windows Update进行升级,并安装所有可用的补丁和更新程序。
方法四:使用一键修复工具助手(强烈推荐)
1、首先你的电脑必须下载与完成安装完成快快蓝屏修复助手。如果你还没有安装点击下方链接下载。
下载地址:>>>快快蓝屏修复助手<<<
提示:安装路径不要选择C盘,避免产生问题造成损失。
2、找到你电脑中的快快蓝屏修复助手,点击进入。看到首页后,点击首页一键扫描按钮开始扫描。等待几分钟,就能获取你急切想要的结果。
3、扫描完成后会显示电脑的所有蓝屏记录以及蓝屏的详细信息。
4、解决方案页面显示了导致该次蓝屏的具体原因和解决方案,点击右上角的一键修复进行修复。
5、切记,当修复完成之后我们还是需要重新启动计算机的。毕竟一切修复的结果,需要重新后,才能被系统认可。
当你完成重启后,你电脑的蓝屏问题已经基本解决了。相信小编,不要急需卸载快快蓝屏修复助手。毕竟它强大的功能是你未来的一个保障,可以随时随地为你服务,让你再次遇到蓝屏问题不在抓狂。
其他相关信息:
EXCEPTION_ON_INVALID_STACK bug 检查 的值为 0x000001AA。 此 Bug 检查指示异常调度已交叉到无效的内核堆栈中。 这可能表示内核堆栈指针在异常调度或展开 (已损坏,例如,由于帧指针) 的堆栈损坏,或者驱动程序正在从不是合法内核堆栈的堆栈上执行。
EXCEPTION_ON_INVALID_STACK参数
参数 | 说明 |
---|---|
1 |
指向当前堆栈的指针。 |
2 |
堆栈的类型限制(如 NormalStackLimits) (3) 。 由于堆栈无效,这表示内核对给定计算机状态时应处于活动状态的内核堆栈类型的最佳估计。 堆栈限制类型: 0x0 - 如果在 bug 检查期间计算堆栈限制,则 bug 检查堆栈 (任何堆栈) 0x1 - 处理器 DPC 堆栈 0x2 - KeExpandKernelStackAndCallout (Ex) 堆栈 0x3 - 普通内核线程堆栈 0x4 - 线程上下文交换期间的内核线程堆栈 (不明确哪个线程处于活动状态) 0x5 - win32k 内核/用户标注堆栈 0x6 - 处理器 ISR 堆栈 0x7 - 内核调试器堆栈在处理 KD I/O) 时 (任何堆栈 0x8 - 处理器 NMI 处理堆栈 0x9 - 处理堆栈检查处理器计算机 0xA - 处理器异常堆栈 (用于调度某些引发的 IRQL 异常) |
3 |
指向上下文记录的指针,表示在遇到无效堆栈时为异常) 解除 (或调度的上下文。 |
4 |
提供表示正在调度的活动异常的异常记录。 |
原因
尝试访问无效堆栈。 由于内核堆栈的大小有限,因此开发人员需要小心跟踪它的限制,例如,当使用它复制视频内存块时。 有关 Windows 内核堆栈的信息,请参阅 使用内核堆栈。
解决方法
使用完整内核转储或附加的调试器,以下命令可能有助于收集信息并跟踪错误访问内存的代码。
首先使用 !analyze 命令收集信息,特别是 bug 检查参数。 检查出错的源行和模块名称(如果可用)。
Arguments:
Arg1: 00000018940ffbe8
Arg2: 0000000000000003
Arg3: ffffe301c8db2900
Arg4: ffffdc0e9ee665d8
使用 !analyze 输出中提供的 .trap 命令链接将上下文设置为陷阱帧。
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=????????????????
使用 !vm 命令检查内存使用情况,例如,查看正在使用的内核堆栈内存量。
0: kd> !vm
Physical Memory: 1541186 ( 6164744 Kb)
Available Pages: 470550 ( 1882200 Kb)
ResAvail Pages: 1279680 ( 5118720 Kb)
...
Kernel Stacks: 13686 ( 54744 Kb)
在此示例中,使用的内存量较少。
使用 !thread 命令收集有关正在运行的内容的信息。 在此示例中,它看起来像一个视频计划程序工作线程正在运行。
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
...
然后使用 kb (显示堆栈回溯) 和 f 选项显示堆栈和内存使用情况,以查看是否存在较大的内存用户。
2: kd> kf
...
02 40 ffffdc0e`9ee66850 fffff800`2b7f8801 dxgmms2!VidSchiMarkDeviceAsError+0x4d
...
如果代码的特定部分看起来可疑,请使用 u、ub、uu (Unassemble) 命令检查关联的汇编语言代码。
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
使用 .cxr (显示上下文记录) 命令,使用 !analyze 提供的参数 3 值显示上下文记录。
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=????????????????
使用 .exr (显示异常记录) 命令,使用 !analyze 提供的参数 4 值显示异常记录。
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
异常记录指示尝试读取 和 地址 ffffffffffffffff
,这将是一个需要进一步调查的区域。
另请参阅
Bug 检查代码参考