brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2419回复:19

没有进展:filedisk 在XP下引发BugCheck!!

楼主#
更多 发布于:2004-08-16 14:36
从filedisk修改来得程序,在xp下遇到BugCheck,

Error=A(IRQL_NOT_LESS_OR_EQUAL) P1=735c5357 P2=2 P3=1 P4=80535600

出错有随机性,不知道是从哪里引发的错误。

同样的程序在2000下没有异常,在XP下就是出错。

我原来以为是有几个IOCTLCODE没有处理,在filedisk的基础上增加了几个,包括:

TOCTL_STORAGE_GET_HOTPLUG_INFO,
IOCTL_MOUNTDEV_QUERY_DEVICE_NAME,
FTTYPE_BALANCED_READ_MODE,

结果证明还是出错。

有人碰到过类似问题吗?能否给个提示。这里多谢了

[编辑 -  8/20/04 by  brucezh]

最新喜欢:

LeopardLeopar...
打一枪……换个地方……再打一枪……
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-08-16 15:14
FILEDISK本身的代码在2K/XP/2003下都没问题,估计是你自己的原因,调试看看吧。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-16 15:20
不知道从哪里下手,不知道是什么地方引起得。在softice中用stack命令只能看到是kernal程序引起得兰屏,但是没办法知道自己的驱动中哪个操做引发了这个错误。
我只是增加了几个自己的DeviceIoCtl,加入了加解密功能。关键是在2000下就没见到过出这个错误。
打一枪……换个地方……再打一枪……
wang1203
驱动牛犊
驱动牛犊
  • 注册日期2004-08-06
  • 最后登录2004-09-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-16 16:02
用WinDbg调试你的程序,不就能看到出错的地方了吗?
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-16 16:16
还没用过WinDbg,一直用softice,本站有下载吗?
能否简要说一下步骤?多谢.

另外,如果下载了NTOSKRNL的SYMBOL文件,用softice能找到调用堆栈中的所有函数调用吗?
打一枪……换个地方……再打一枪……
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2004-08-16 17:29
无责任windbg简单使用方法:D

1、首先,到MS下载windbg;建议至少是“核心内存转存”
2、安装,运行
3、打开dmp文件
4、这时候你应该还没有OS的symbol,没有关系,只要你能上internet(要快),如果不能,就别看下面的了

5、在windbg的command line(kd>),输入.symfix e:\yoursympath
6、输入.reload,OK,symbol会下载并被加载。在关闭windbg的时候你可以选保存waorkspace information,这样下次打开的时候symbol path已经设置好,symbol也在(除非你delete了)
7、!analyze -v
8、STACK_TEXT:显示的是call stack,注意看STACK_COMMAND:行,运行它后面的命令,比如说是.trap fffffffff7427f54 ; kb,能看见很多你想看见的
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-08-16 17:30
别忘了准备你的sys的symbol file :D
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-08-17 11:05
多谢,我已经下载并安装了winxp的symbol文件。
用WinDbg不是要两台机器连接吗?

有下面的问题不明白:

1。dmp文件是死机时的内存文件吗?在什么路径下找到?

2。winxp的符号文件是pdb格式的,有没有办法用softice来跟踪?

3。2000DDK是自带WinDbg的,XPDDK没有带,到哪里能下载?

多谢解答

[编辑 -  8/17/04 by  brucezh]
打一枪……换个地方……再打一枪……
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
8楼#
发布于:2004-08-17 11:34
1 在windows目录下面能找到
2 能,使用nmsym.exe
3 也有,要自己安装,ifs不带


其实pdb文件可以用softice的symbol retriever下载
tiamo
VIP专家组
VIP专家组
  • 注册日期2002-02-26
  • 最后登录2018-01-09
  • 粉丝17
  • 关注4
  • 积分50分
  • 威望142点
  • 贡献值1点
  • 好评度40点
  • 原创分2分
  • 专家分15分
  • 原创先锋奖
  • 社区居民
9楼#
发布于:2004-08-17 11:36
题外话.....

作驱动..调试的时候
没有os的sym文件.....
会死人的.....
偶下载的pdb,转换的nms都一大把一大把了....

其实还是checked build好呀.....
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-08-17 11:39
多谢。
赶紧开始试,上面催得紧 :)
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-08-17 12:19
nmsym.exe哪里有?我找不到
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-08-17 13:14
知道了,新版的softice直接自己到微软下载对应的symbol file并转化成nms格式。
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-08-17 16:09
又破灭了 :(
装载了NTOSKRNL的符号文件,KeBugCheck跳出来的时候在softice中用stack指令察看,全是kernal里的函数调用。没有头绪。

禁止了softice再重启,运行应用程序,碰到了死机,没有兰屏,直接屏幕一黑就重起了,在windows目录下没找到memory.dmp文件?我该怎么办呢?头疼
打一枪……换个地方……再打一枪……
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2004-08-17 16:51
这个时候看si的stack,应该是看不出什么了,还是分析dmp文件比较好。
先禁止“自动重启”。默认的是“小内存转存”,在winnt\\minidmp下
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-08-17 17:02
这个时候看si的stack,应该是看不出什么了,还是分析dmp文件比较好。
先禁止“自动重启”。默认的是“小内存转存”,在winnt\minidmp下

已经设置好了,正在分析
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-08-17 17:15
以下是WinDbg分析结果,哪位能帮我分析一下:


*******************************************************************************
*                                                                             *
*                        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: 7af87aa8, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: 80535ddc, address which referenced memory

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


DEFAULT_BUCKET_ID:  DRIVER_FAULT

BUGCHECK_STR:  0xC5

LAST_CONTROL_TRANSFER:  from 805253fb to 80535ddc

STACK_TEXT:  
f11b0c38 805253fb 00000008 00000001 20206f49 nt!ExAllocatePoolWithTag+0x66a
f11b0c5c 80558578 00000000 00000034 20206f49 nt!ExAllocatePoolWithQuotaTag+0x3b
f11b0ce4 805588e1 00000614 00000000 00000000 nt!BuildQueryDirectoryIrp+0x170
f11b0d30 8052e571 00000614 00000000 00000000 nt!NtQueryDirectoryFile+0x3f
f11b0d30 7ffe0304 00000614 00000000 00000000 nt!KiSystemService+0xc4
0423d314 77f5bd54 77e5eb29 00000614 00000000 SharedUserData!SystemCallStub+0x4
0423d318 77e5eb29 00000614 00000000 00000000 ntdll!ZwQueryDirectoryFile+0xc
0423d60c 77e5eb75 00bfa1f8 00000614 0423d648 kernel32!FindFirstFileExW+0x2b5
0423d628 77e4b6e7 01bfa1f8 0423d648 0423d924 kernel32!FindFirstFileW+0x13
0423d8f0 77e49af1 01bfa108 0423d924 00000104 kernel32!GetShortPathNameW+0x1d6
0423db5c 51496583 003f44ae 0423dba4 00000104 kernel32!GetShortPathNameA+0x65
WARNING: Stack unwind information not available. Following frames may be wrong.
0423e948 00000001 00000081 00000000 0423ef08 I2ldvp3+0x16583


FOLLOWUP_IP:
nt!KiTrap0E+2ad
80531335 f7457000000200   test    dword ptr [ebp+0x70],0x20000

SYMBOL_STACK_INDEX:  1

FOLLOWUP_NAME:  MachineOwner

SYMBOL_NAME:  nt!KiTrap0E+2ad

MODULE_NAME:  nt

IMAGE_NAME:  ntoskrnl.exe

DEBUG_FLR_IMAGE_TIMESTAMP:  3ea80977

STACK_COMMAND:  .trap fffffffff11b0b70 ; kb

BUCKET_ID:  0xC5_nt!KiTrap0E+2ad

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

kd> .trap fffffffff11b0b70 ; kb
ErrCode = 00000000
eax=7af87aa8 ebx=805479a0 ecx=8053f700 edx=001e0000 esi=80547aa8 edi=000001ff
eip=80535ddc esp=f11b0be4 ebp=f11b0c38 iopl=0         ov up ei ng nz na po cy
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010a87
nt!ExAllocatePoolWithTag+0x66a:
80535ddc 8b08             mov     ecx,[eax]         ds:0023:7af87aa8=????????
  *** Stack trace for last set context - .thread/.cxr resets it
ChildEBP RetAddr  Args to Child              
f11b0c38 805253fb 00000008 00000001 20206f49 nt!ExAllocatePoolWithTag+0x66a
f11b0c5c 80558578 00000000 00000034 20206f49 nt!ExAllocatePoolWithQuotaTag+0x3b
f11b0ce4 805588e1 00000614 00000000 00000000 nt!BuildQueryDirectoryIrp+0x170
f11b0d30 8052e571 00000614 00000000 00000000 nt!NtQueryDirectoryFile+0x3f
f11b0d30 7ffe0304 00000614 00000000 00000000 nt!KiSystemService+0xc4
0423d314 77f5bd54 77e5eb29 00000614 00000000 SharedUserData!SystemCallStub+0x4
0423d318 77e5eb29 00000614 00000000 00000000 ntdll!ZwQueryDirectoryFile+0xc
0423d60c 77e5eb75 00bfa1f8 00000614 0423d648 kernel32!FindFirstFileExW+0x2b5
0423d628 77e4b6e7 01bfa1f8 0423d648 0423d924 kernel32!FindFirstFileW+0x13
0423d8f0 77e49af1 01bfa108 0423d924 00000104 kernel32!GetShortPathNameW+0x1d6
0423db5c 51496583 003f44ae 0423dba4 00000104 kernel32!GetShortPathNameA+0x65
WARNING: Stack unwind information not available. Following frames may be wrong.
0423e948 00000001 00000081 00000000 0423ef08 I2ldvp3+0x16583
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-08-18 09:30
在msdn上找到这么一段话:

Odd-length Unicode Buffers:

Some I/O Manager APIs support Unicode input buffers that contain an odd number of bytes. The optional file name in NtQueryDirectoryFile, and many queries using NtQueryInformationFile (such as FileNameInformation), are examples. Drivers should test the lengths of these buffers upon input.

可是似乎虚拟硬盘驱动程序不用处理这个系统函数相关的Irp阿。
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-08-19 11:27
filedisk的代码中,对于IRP_MJ_READ, IRP_MJ_WRITE的处理中,没有设置IRP->IoStatus.Information域,这是否符合规范?
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-08-20 13:10
我为了找Bug,打开了Driver Verifier,结果无论如何不死机了!!

关闭Driver Verifier, 死机情况依旧,why???

我猜是因为打开Driver Verifier后,可能内存分配等操做跟原来的情况不同了,所以没有以前的某种冲突发生。只是瞎猜,谁能给点线索?
打一枪……换个地方……再打一枪……
游客

返回顶部