|
|
|
|
|
|
|
Windows内核调试
帖子发起人: Da Vinci 发起时间: 2009-07-27 14:20 下午 回复: 12
|
帖子排序:
|
|
|
|
2009-07-27, 14:20 下午
|
Da Vinci
注册: 2008-11-03
发 贴: 38
|
|
|
我遇到一个关于系统hang住的问题,系统的explorer死掉了,没有响应,每次重启基本上都有一定的概率出现hang住的问题,怀疑是哪个驱动的锁的问题。由于出问题的机器不在我手边,也没办法远程调试,所以我只好让对方手动触发了一个蓝屏(改注册表然后按某个键),这样做的目的是希望得到系统的一个dump文件,把系统当前的状态抓下来分析。dump拿到了,看了explorer的线程,似乎没有发现什么大问题,只有一个线程的irp list比较可疑,似乎irp比较多。另外用locks看了锁,似乎也没有什么问题。
我的问题是: 1. 这样得到的dump文件,对于分析explorer hang住的问题有效果么? 因为是手动触发的蓝屏,所以用analyze -v分析的结果肯定与原来想要的不一样。 2. 如果这样的dump文件对于分析当前系统的状态有效,那么我该如何通过一个手动触发的dump文件,来分析另外一个进程出现的问题呢? 毕竟不是explorer进程引起的蓝屏,而是想通过蓝屏的dump文件间接的得到explorer的状态。 3. windbg还有什么方式能够分析这种问题?
如果出问题的机器在旁边就好了,要命的就是不在,所以不得不间接分析了。
请张老师和其它老师们不吝赐教
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-27, 15:03 下午
|
Da Vinci
注册: 2008-11-03
发 贴: 38
|
|
|
以下是UI线程的信息,0000055a这个消息可疑,不过不清楚怎么得到发送消息的进程,用的dd命令么?没办法查到它的信息
THREAD 88f723e0 Cid 08bc.08c0 Teb: 7ffde000 Win32Thread: fe45d568 WAIT: (WrUserRequest) UserMode Non-Alertable
88e2db58 SynchronizationEvent
Not impersonating
DeviceMap 9818fe70
Owning Process 88f76470 Image: explorer.exe
Wait Start TickCount 3548 Ticks: 1319 (0:00:00:20.576)
Context Switch Count 2444 NoStackSwap
UserTime 00:00:00.234
KernelTime 00:00:00.390
Win32 Start Address 0x00b8a8ff
Stack Init b48d5fd0 Current b48d5a88 Base b48d6000 Limit b48d3000 Call 780
Priority 12 BasePriority 8 PriorityDecrement 2 IoPriority 2 PagePriority 5
ChildEBP RetAddr Args to Child
b48d5aa0 834c1a58 88f723e0 00000000 8357cd20 nt!KiSwapContext+0x26 (FPO: [Uses EBP] [0,0,4])
b48d5ad8 834c0113 88f724a0 88f723e0 88e2db58 nt!KiSwapThread+0x266
b48d5b00 834ba24f 88f723e0 88f724a0 00000000 nt!KiCommitThreadWait+0x1df
b48d5b7c 98e30d65 88e2db58 0000000d 00000001 nt!KeWaitForSingleObject+0x393
b48d5bd8 98e30e00 00000200 00000000 00000000 win32k!xxxRealSleepThread+0x1d7 (FPO: [Non-Fpo])
b48d5bf4 98ddf4c0 00000200 00000000 00000000 win32k!xxxSleepThread+0x2d (FPO: [Non-Fpo])
b48d5c68 98e347d0 008037e0 0000055a 00000000 win32k!xxxInterSendMsgEx+0xb1c (FPO: [Non-Fpo])
b48d5cb8 98ddf713 fe8037e0 0000055a 00000000 win32k!xxxSendMessageTimeout+0x13b (FPO: [Non-Fpo])
b48d5ce0 98e21892 fe8037e0 0000055a 00000000 win32k!xxxWrapSendMessage+0x1c (FPO: [Non-Fpo])
b48d5d10 8349657a 00010056 0000055a 00000000 win32k!NtUserMessageCall+0xa7 (FPO: [Non-Fpo])
b48d5d10 77d96544 00010056 0000055a 00000000 nt!KiFastCallEntry+0x12a (FPO: [0,3] TrapFrame @ b48d5d34)
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-27, 15:04 下午
|
Da Vinci
注册: 2008-11-03
发 贴: 38
|
|
|
0: kd> dd fe8037e0
fe8037e0 ???????? ???????? ???????? ????????
fe8037f0 ???????? ???????? ???????? ????????
fe803800 ???????? ???????? ???????? ????????
fe803810 ???????? ???????? ???????? ????????
fe803820 ???????? ???????? ???????? ????????
fe803830 ???????? ???????? ???????? ????????
fe803840 ???????? ???????? ???????? ????????
fe803850 ???????? ???????? ???????? ????????
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-27, 15:08 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
|
|
Hang住的情况千奇百怪,建议你再搜集些信息看是哪个层次的问题。
1)Ctrl+Alt+Del是否可以把任务管理器调出来,如果可以,那么就只是Explorer进程Hang住了,进不了桌面,这样的问题要简单的多了。
2)鼠标是否还能移动?
3)硬盘灯是否还闪烁?
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-27, 15:14 下午
|
Da Vinci
注册: 2008-11-03
发 贴: 38
|
|
|
主要机器不在手边。ctrl+alt+del不能调出任务管理器,鼠标不能移动,硬盘灯不清楚。。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-27, 15:25 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
|
|
如果鼠标都不能动(假设鼠标没有坏^-^),那么就不必急着看窗口消息了。
尝试执行下面几条命令:
!dpcs
!prcb
!pcr
!locks
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-27, 15:59 下午
|
Da Vinci
注册: 2008-11-03
发 贴: 38
|
|
|
这几个命令我都试过,!locks得到了两个锁: **** DUMP OF ALL RESOURCE OBJECTS **** KD: Scanning for held locks.....
Resource @ 0x87b4c174 Shared 6 owning threads Threads: 88ccd030-03<*> 88d1eb20-02<*> 88d386f0-02<*> 88d38408-02<*> 88ccd6e0-02<*> 88ff2638-02<*> KD: Scanning for held locks........................................................................................................
Resource @ 0x88620098 Exclusively owned Contention Count = 4620 NumberOfExclusiveWaiters = 10 Threads: 894bd518-01<*> Threads Waiting On Exclusive Access: 89100a58 893f36e8 893fd748 892546b8 888b3758 88f05680 889d5ca0 883fdb20 888ae5a0 8937fb10
!drcs: CPU Type KDPC Function 0: Normal : 0x8683797c 0x9232eba5 USBPORT!USBPORT_Xdpc_Worker
!prcb: PRCB for Processor 0 at 8357cd20: Current IRQL -- 2 Threads-- Current 83586280 Next 00000000 Idle 83586280 Number 0 SetMember 00000000 Interrupt Count -- 0000ecb8 Times -- Dpc 0000001b Interrupt 00000010 Kernel 00001204 User 000000ff
!pcr: KPCR for Processor 0 at 8357cc00: Major 1 Minor 1 NtTib.ExceptionList: 835795d8 NtTib.StackBase: 00000000 NtTib.StackLimit: 00000000 NtTib.SubSystemTib: 801e6000 NtTib.Version: 000471f3 NtTib.UserPointer: 00000001 NtTib.SelfTib: 00000000
SelfPcr: 8357cc00 Prcb: 8357cd20 Irql: 0000001f IRR: 00000000 IDR: ffffffff InterruptMode: 00000000 IDT: 80b95400 GDT: 80b95000 TSS: 801e6000
CurrentThread: 83586280 NextThread: 00000000 IdleThread: 83586280
DpcQueue: 0x8683797c 0x9232eba5 [Normal] USBPORT!USBPORT_Xdpc_Worker
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-27, 16:00 下午
|
Da Vinci
注册: 2008-11-03
发 贴: 38
|
|
|
因为是手动触发了蓝屏,所以不清楚这些信息对于explorer的hang住还有没有分析的可能。 上面的信息我看和explorer hang住了没什么关系阿?
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-27, 20:56 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
|
|
要搞清是Explorer进程挂死还是整个系统挂死,这是完全不同性质的两件事。根据上面的信息中所包含的CPU状态,鼠标应该是可以移动的,不知楼主是认真调查过,还是随便推测了一下。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-28, 08:53 上午
|
Da Vinci
注册: 2008-11-03
发 贴: 38
|
|
|
我仔细检查过,鼠标和ctrl+alt+del不能用。对方朋友也检查过。 由于这台机器在别的国家,所以远程VNC非常的慢...只能这样检查dump文件了。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-28, 08:54 上午
|
Da Vinci
注册: 2008-11-03
发 贴: 38
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-28, 09:00 上午
|
Da Vinci
注册: 2008-11-03
发 贴: 38
|
|
|
根据测试,这台机器应该是系统挂死,不是简单的explorer的问题,几乎每次重启之后,桌面显示了就hang住了,鼠标不能移动,task manager无法打开。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-07-28, 22:31 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
|
|
CPU在执行IDLE线程,IRQL在DISPATCH_LEVEL,DPC队列中也只有一个任务。由此看,内核的健康状况还很好,CPU是可以响应鼠标设备的硬件中断的。鼠标的光标绘制有硬件支持,不依赖于顶层。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 软件调试 » Windows内核调试 » Re: 请教张老师和其它老师一个问题
|
|
|
|
|
|