第一次发帖,如果我忘记了什么,请原谅。我有一台在 VMware ESXi 5.1 上运行的 Windows Server 2008 SP2 32 位服务器,它会随机转储并自行重新启动。我一直在研究,这似乎与网络驱动程序问题有关,但我对此并不确定。这是我们运行 IBM WebSphere 的生产内部网 Web 服务器。我开始在他的计算机上安装 Windows 更新,希望它能解决这个问题,但却让情况变得更糟。它在 12 小时内出现两次 BSOD,所以我将服务器回滚了。我无法从这些小型转储中获取更多信息,有人能帮我吗?
==================================================
Dump File : Mini031414-01.dmp
Crash Time : 3/14/2014 2:47:59 PM
Bug Check String : MULTIPLE_IRP_COMPLETE_REQUESTS
Bug Check Code : 0x00000044
Parameter 1 : 0xa129a150
Parameter 2 : 0x00000e7a
Parameter 3 : 0x00000000
Parameter 4 : 0x00000000
Caused By Driver : tdx.sys
Caused By Address : tdx.sys+edbc
File Description :
Product Name :
Company :
File Version :
Processor : 32-bit
Crash Address : ntkrnlpa.exe+cdb3f
Stack Address 1 : ntkrnlpa.exe+a75bb
Stack Address 2 : tdx.sys+5654
Stack Address 3 : tcpip.sys+5c633
Computer Name :
Full Path : C:\Users\jwilliam\Desktop\Portal\Mini031414-01.dmp
Processors Count : 1
Major Version : 15
Minor Version : 6002
Dump File Size : 165,464
==================================================
==================================================
Dump File : Mini071613-01.dmp
Crash Time : 7/16/2013 1:55:46 PM
Bug Check String : MULTIPLE_IRP_COMPLETE_REQUESTS
Bug Check Code : 0x00000044
Parameter 1 : 0xa1df8008
Parameter 2 : 0x00000e7a
Parameter 3 : 0x00000000
Parameter 4 : 0x00000000
Caused By Driver : tdx.sys
Caused By Address : tdx.sys+edbc
File Description :
Product Name :
Company :
File Version :
Processor : 32-bit
Crash Address : ntkrnlpa.exe+cdb3f
Stack Address 1 : ntkrnlpa.exe+a75bb
Stack Address 2 : tdx.sys+5654
Stack Address 3 : tcpip.sys+5c633
Computer Name :
Full Path : C:\Users\jwilliam\Desktop\Portal\Mini071613-01.dmp
Processors Count : 1
Major Version : 15
Minor Version : 6002
Dump File Size : 168,856
==================================================
答案1
您可能需要更新您的驱动程序,而且需要更新多个驱动程序。
原因
驱动程序已调用 IoCompleteRequest 来要求完成 IRP,但数据包已经完成。
解决
这是一个很难发现的错误,因为最简单的情况——驱动程序尝试两次完成自己的数据包——通常不是问题的根源。更可能的是,两个独立的驱动程序都认为自己拥有该数据包,并且都尝试完成它。第一个请求成功,第二个请求失败,导致此错误检查。
追踪系统中导致错误的驱动程序非常困难,因为第一个驱动程序的踪迹已被第二个驱动程序覆盖。但是,可以通过检查每个堆栈位置中的设备对象字段来找到当前请求的驱动程序堆栈。