首页
社区
课程
招聘
问问用WinDbg打开蓝屏产生的DMP文件显示的信息问题
发表于: 2014-6-4 10:40 6988

问问用WinDbg打开蓝屏产生的DMP文件显示的信息问题

2014-6-4 10:40
6988
首先是一个用VS写的能导致蓝屏的一个项目(此项目应该是在VS2010上写的),我是在WIN7 64位系统上用的VS2013+WDK把其编译出来sys文件。
然后打开虚拟机里调试模式下的XP系统,把SYS文件放进XP系统,用DriverMonitor加载并运行驱动,
然后蓝屏,产生DMP文件,把这DMP文件拿回到 这个64位系统,

之后我根据项目代码中,可能存在错误的地方修改了一下(在DriverEntry中)。然后再编译一次。

================================================

编译完我就用WinDbg打开DMP文件,(这时是第一次打开,符号包跟BSODCheck.pdb的路径也是设置好了的) 输入!analyze -v 就出现 一段信息,但当时只留意到开始的几句。
其中有
Probably caused by : BSODCheck.sys ( BSODCheck!DriverEntry+XXX )大概这样的提示,

提示了是在DriverEntry中。

然后继续弹出其它信息,但我没有看到有CONTEXT等详细内容,于是就把DriverEntry中的代码,改回原来的样子(没修改前的样子)再编译一次,
然后再用WinDbg打开DMP文件,输入指令,就出现了如下信息(这次没有打开虚拟机里面的系统)

Use !analyze -v to get detailed debugging information.

BugCheck 19, {20, 89937d90, 89937db8, a050001}

*** ERROR: Module load completed but symbols could not be loaded for BSODCheck.sys
Probably caused by : BSODCheck.sys ( BSODCheck+1179 )

Followup: MachineOwner


BSODCheck.sys ( BSODCheck+1179 ) 括号里显示的函数名不见了,上面好像也比之前多了句ERROR提示
之后我怎么 弄,都提示这个,当然输入了!analyze -v都是得到不完整信息


STACK_COMMAND:  kb

FOLLOWUP_IP: 
BSODCheck+1179
babc9179 6800800080      push    80008000h

SYMBOL_STACK_INDEX:  2

SYMBOL_NAME:  BSODCheck+1179

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: BSODCheck

IMAGE_NAME:  BSODCheck.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  538c46a1

FAILURE_BUCKET_ID:  0x19_20_BSODCheck+1179

BUCKET_ID:  0x19_20_BSODCheck+1179

Followup: MachineOwner
---------



而这段就是最后一段信息,没有出现详细的信息。而pdb文件的路径我一直都没有改变过的,每次用WinDbg打开DMP文件前,我都检查下,符号包路径好了没,PDB路径好了没。

然后想是不是符号包下载不全,就回到WinDbg打开Attach to a Process随便附加到一个进程,然后在下面输入命令 .reload /f 进行下载,从原来55M,
下到现在128M左右,再试,依旧是这些不完整信息。这样就没法根据详细信息处理蓝屏问题啊。

求教到底是哪里出错了?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1443
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你需要的不是微软的pdb,而是你自己的BSODCheck.pdb。
2014-6-4 19:00
0
雪    币: 58
活跃值: (72)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
LZ先是产生了一个dmp文件,然后修改、编译后再去看原来的dmp,此时的pdb已经是新文件的pdb了,和老的dmp已经对不上了。
2014-6-4 19:07
0
雪    币: 581
活跃值: (215)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
你每一次编译一次pdb文件都会重新生成。你用最新的符号去调试之前的DMP文件,自然符号找不到。每次编译完应该对.sys文件和.pdb文件进行保存,这是一个习惯。
2014-6-5 22:44
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这次我重新把项目重新编译,得出SYS文件,然后直接拿到虚拟机,运行SYS,蓝屏,然后生成DMP文件,生成后重启了虚拟机,进入系统把DMP文件取出来到我的64位系统中,然后用WinDbg-Open Crash Dump打开DMP文件分析,但这次出现的信息依然是没有CONTEXT
蓝屏时候的现场环境,这是为什么呢?CONTEXT不是一定会出来的吗?

还有一个问题就是,我运行SYS蓝屏后,虚拟机系统自动启动,但到了那个XP标题的读取界面,就一直卡住在那里,一动不动,必须要我再手动,RESTART 后才能进入系统,这又是为什么呢?
2014-6-13 07:31
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 19, {20, 8960f7b0, 8960f7d8, a050007}

Probably caused by : BSODCheck.sys ( BSODCheck!DriverEntry+59 )

Followup: MachineOwner
---------

kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

BAD_POOL_HEADER (19)
The pool is already corrupt at the time of the current request.
This may or may not be due to the caller.
The internal pool links must be walked to figure out a possible cause of
the problem, and then special pool applied to the suspect tags or the driver
verifier to a suspect driver.
Arguments:
Arg1: 00000020, a pool block header size is corrupt.
Arg2: 8960f7b0, The pool entry we were looking for within the page.
Arg3: 8960f7d8, The next pool entry.
Arg4: 0a050007, (reserved)

Debugging Details:
------------------


BUGCHECK_STR:  0x19_20

POOL_ADDRESS:  8960f7b0 Nonpaged pool

DEFAULT_BUCKET_ID:  DRIVER_FAULT

PROCESS_NAME:  System

LAST_CONTROL_TRANSFER:  from 80545a86 to 804f9cb5

STACK_TEXT:  
bacfbc10 80545a86 00000019 00000020 8960f7b0 nt!KeBugCheckEx+0x1b
bacfbc60 bac69179 8960f7b8 00000000 00000004 nt!ExFreePoolWithTag+0x2a0
bacfbc7c 8057777f 895acb10 89748000 00000000 BSODCheck!DriverEntry+0x59 [e:\agptemp\temp\bsodcheck\bsodcheck.c @ 61]
bacfbd4c 8057788f 80000904 00000001 00000000 nt!IopLoadDriver+0x66d
bacfbd74 80535c02 80000904 00000000 89a328b8 nt!IopLoadUnloadDriver+0x45
bacfbdac 805c7160 b1b9dcf4 00000000 00000000 nt!ExpWorkerThread+0x100
bacfbddc 80542dd2 80535b02 00000001 00000000 nt!PspSystemThreadStartup+0x34
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16


STACK_COMMAND:  kb

FOLLOWUP_IP: 
BSODCheck!DriverEntry+59 [e:\agptemp\temp\bsodcheck\bsodcheck.c @ 61]
bac69179 6800800080      push    80008000h

FAULTING_SOURCE_CODE:  
    57: 	{
    58: 		memcpy(pwz_buf,theRegistryPath->Buffer,theRegistryPath->Length);
    59: 		ExFreePool(pwz_buf);
    60: 	}
>   61: 	IsExitProcess(0x80008000);
    62: 
    63: 	return STATUS_SUCCESS;
    64: }


SYMBOL_STACK_INDEX:  2

SYMBOL_NAME:  BSODCheck!DriverEntry+59

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: BSODCheck

IMAGE_NAME:  BSODCheck.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  53925617

FAILURE_BUCKET_ID:  0x19_20_BSODCheck!DriverEntry+59

BUCKET_ID:  0x19_20_BSODCheck!DriverEntry+59

Followup: MachineOwner


这是这次出来的提示,这应该是不完整的吧?
2014-6-13 07:44
0
雪    币: 1443
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这次是有正确pdb的,检查一下你的pwz_buf从哪里来的,free掉它把内存池给破坏掉了。
2014-6-13 12:37
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Loading Dump File [D:\Mini061014-21.dmp]
Mini Kernel Dump File: Only registers and stack trace are available

Symbol search path is: srv*F:\WorkingProject\kbinject\objchk_win7_x86\i386*http://msdl.microsoft.com/download/symbols;.sympath srv*D:\WinDDK\7600.16385.1\Debuggers\Symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows XP Kernel Version 2600 (Service Pack 3) MP (2 procs) Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 2600.xpsp.080413-2111
Machine Name:
Kernel base = 0x804d8000 PsLoadedModuleList = 0x8055e720
Debug session time: Tue Jun 10 17:00:57.203 2014 (UTC + 8:00)
System Uptime: 0 days 0:04:46.868
Loading Kernel Symbols
...............................................................
.............................................
Loading User Symbols
Loading unloaded module list
.........
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck 100000C5, {69002e, 2, 1, 8054c10d}

Unable to load image genfs.sys, Win32 error 0n2
*** WARNING: Unable to verify timestamp for genfs.sys
*** ERROR: Module load completed but symbols could not be loaded for genfs.sys
Probably caused by : Pool_Corruption ( nt!ExDeferredFreePool+107 )

Followup: Pool_corruption
---------

0: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

DRIVER_CORRUPTED_EXPOOL (c5)
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high.  This is
caused by drivers that have corrupted the system pool.  Run the driver
verifier against any new (or suspect) drivers, and if that doesn't turn up
the culprit, then use gflags to enable special pool.
Arguments:
Arg1: 0069002e, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000001, value 0 = read operation, 1 = write operation
Arg4: 8054c10d, address which referenced memory

Debugging Details:
------------------

BUGCHECK_STR:  0xC5_2

CURRENT_IRQL:  2

FAULTING_IP:
nt!ExDeferredFreePool+107
8054c10d 893b            mov     dword ptr [ebx],edi

CUSTOMER_CRASH_COUNT:  21

DEFAULT_BUCKET_ID:  COMMON_SYSTEM_FAULT

PROCESS_NAME:  AlipaySecSvc.ex

LAST_CONTROL_TRANSFER:  from 8054c75f to 8054c10d

STACK_TEXT:  
f6391ce8 8054c75f 00000001 f6391d64 84f44008 nt!ExDeferredFreePool+0x107
f6391d28 f732e465 84f44008 00000000 00ebf3c4 nt!ExFreePoolWithTag+0x47f
WARNING: Stack unwind information not available. Following frames may be wrong.
f6391d44 8054261c 00000220 00000004 00000001 genfs+0x3465
f6391d44 7c92e4f4 00000220 00000004 00000001 nt!KiFastCallEntry+0xfc
00ebf4d4 00000000 00000000 00000000 00000000 0x7c92e4f4

STACK_COMMAND:  kb

FOLLOWUP_IP:
nt!ExDeferredFreePool+107
8054c10d 893b            mov     dword ptr [ebx],edi

SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  nt!ExDeferredFreePool+107

FOLLOWUP_NAME:  Pool_corruption

IMAGE_NAME:  Pool_Corruption

DEBUG_FLR_IMAGE_TIMESTAMP:  0

MODULE_NAME: Pool_Corruption

FAILURE_BUCKET_ID:  0xC5_2_nt!ExDeferredFreePool+107

BUCKET_ID:  0xC5_2_nt!ExDeferredFreePool+107

Followup: Pool_corruption
---------

0: kd> lmvm Pool_Corruption
start    end        module name
我用windbg分析dump文件,结果如上,哪位大神分析下
2014-6-13 15:20
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
就是说,出现这些信息就是正常了吗? 那为什么没出来CONTEXT 的信息?
2014-6-13 23:11
0
雪    币: 1443
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
都指向这么清晰了还想要多么详细?另外下面那个genfs又找不到pdb了。
2014-6-16 07:18
0
游客
登录 | 注册 方可回帖
返回
//