我的 Windows 2008 Server(数据中心版)64 位,最近在不同的应用程序上产生了一系列 BSOD。错误消息一般是EXCEPTION_DOUBLE_FAULT
。
有人可以帮忙分析下面的转储文件吗?
分析-v ******************************************************************************************* * * * 错误检测分析 * * * ******************************************************************************************* 意外内核模式陷阱 (7f) 这意味着内核模式中发生了一个陷阱,这是一种陷阱 内核不允许捕获(绑定陷阱)或 总是立即死亡(双重失误)。 bugcheck params 是陷阱的编号(8 = 双重故障等) 查阅 Intel x86 家族手册,详细了解这些 陷阱。以下是这些代码的一部分: 如果 kv 显示 taskGate 在冒号之前的部分使用 .tss,然后使用 kv。 否则,如果 kv 显示一个陷阱框架 对该值使用 .trap 别的 相应框架上的 .trap 将显示陷阱的位置 (在 x86 上,这将是与 KiTrap 程序一起使用的 ebp) 万一 kb 将显示更正后的堆栈。 参数: Arg1:0000000000000008,EXCEPTION_DOUBLE_FAULT 参数2:0000000080050033 参数 3:00000000000006f8 Arg4:fffff800018b1678 调试细节: ------------------ BUGCHECK_STR: 0x7f_8 客户崩溃次数:1 默认存储桶 ID:DRIVER_FAULT_SERVER_MINIDUMP 进程名称:客户服务。 当前 IRQL: 1 异常记录:fffffa6004e45568——(.exr 0xfffffa6004e45568) 异常地址:fffff800018a0150(nt!RtlVirtualUnwind+0x0000000000000250) 异常代码:10000004 异常标志:00000000 数量参数:2 参数[0]:00000000000000000 参数[1]: 00000000000000d8 TRAP_FRAME:fffffa6004e45610——(.trap 0xfffffa6004e45610) 注意:陷阱框架不包含所有寄存器。 一些寄存器值可能为零或者不正确。 rax=0000000000000050 rbx=0000000000000000 rcx=0000000000000004 rdx=00000000000000d8 rsi=0000000000000000 rdi=0000000000000000 rip=fffff800018a0150 rsp=fffffa6004e457a0 rbp=fffffa6004e459e0 r8=0000000000000006 r9=fffff8000181e000 r10=ffffffffffffff88 r11=fffff80001a1c000 r12=0000000000000000 r13=0000000000000000 r14=0000000000000000 r15=0000000000000000 iopl=0 nv 向上 ei pl zr na po nc nt!RtlVirtualUnwind + 0x250: fffff800`018a0150 488b02 mov rax,qword ptr [rdx] ds:00000000`000000d8=???????????????? 重置默认范围 LAST_CONTROL_TRANSFER:从 fffff800018781ee 到 fffff80001878450 堆栈文本: fffffa60`01768a68 fffff800`018781ee : 00000000`0000007f 00000000`00000008 00000000`80050033 00000000`000006f8 : nt!KeBugCheckEx fffffa60`01768a70 fffff800`01876a38 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiBugCheckDispatch+0x6e fffffa60`01768bb0 fffff800`018b1678 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiDoubleFaultAbort+0xb8 fffffa60`04e44e30 fffff800`018782a9 : fffffa60`04e45568 00000000`00000001 fffffa60`04e45610 00000000`0000023b : nt!KiDispatchException+0x34 fffffa60`04e45430 fffff800`018770a5 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000001 : nt!KiExceptionDispatch+0xa9 fffffa60`04e45610 fffff800`018a0150 : fffffa60`04e46638 fffffa60`04e46010 fffff800`01965190 fffff800`0181e000 : nt!KiPageFault+0x1e5 fffffa60`04e457a0 fffff800`018a3f78 : fffffa60`00000001 00000000`00000000 00000000`00000000 ffffffff`ffffff88 : nt!RtlVirtualUnwind+0x250 fffffa60`04e45810 fffff800`018b1706 : fffffa60`04e46638 fffffa60`04e46010 fffffa60`00000000 00000000`00000000 : nt!RtlDispatchException+0x118 fffffa60`04e45f00 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiDispatchException+0xc2 堆栈命令:kb 关注IP: nt!KiDoubleFaultAbort+b8 fffff800`01876a38 90 没有 符号堆栈索引: 2 符号名称:nt!KiDoubleFaultAbort+b8 FOLLOWUP_NAME:机器所有者 模块名称:nt 图像名称:ntkrnlmp.exe 调试_FLR_IMAGE_时间戳:4a7801eb 故障存储桶 ID:X64_0x7f_8_nt!KiDoubleFaultAbort+b8 BUCKET_ID:X64_0x7f_8_nt!KiDoubleFaultAbort + b8 后续:MachineOwner ---------
答案1
问题在于,当内核正在处理一个异常时,它遇到了第二个异常。在这种情况下,它正在处理页面错误,却遇到了第二个页面错误。这很可能是堆栈溢出。
在windbg中加载dmp文件,运行以下命令:
.trap fffffa6004e45610
k 100
这将生成有问题的线程的堆栈跟踪。请在此处发布堆栈。