BAD_POOL_HEADER 参数
参数 1 表示violation类型。
其他参数的含义取决于参数 1 的值。
Parameter 1 | 参数 2 | 参数 3 | 参数 4 | 错误原因 |
---|---|---|---|---|
0x2 | 正在检查的池条目 | 池块的大小 | 0 | 特殊池模式检查失败。 (所有者可能损坏了池块。) |
0x3 | 正在检查的池条目 | 回读的 flink freelist 值 | 回读闪烁的空闲列表值 | 池空闲列表已损坏。 (在健康列表中,参数 2. 3 和 4 的值应相同。) |
0x5 | 池条目之一 | 保留 | 另一个池条目 | 一对相邻的池条目具有相互矛盾的标头。其中至少有一个是腐败的。 |
0x6 | 一个计算错误的条目 | 保留 | 导致计算错误的错误输入 | 池块头的先前大小太大。 |
0x7 | 0 | 保留 | 坏池入口 | 池块头大小已损坏。 |
0x8 | 0 | 保留 | 坏池入口 | 池块头大小为零。 |
0x9 | 一个计算错误的条目 | 保留 | 导致计算错误的错误输入 | 池块头大小已损坏(太大)。 |
0xA | 应该找到的池条目 | 保留 | 应该包含池条目的页面的虚拟地址 | 池块头大小已损坏。 |
0xD, 0xE, 0xF, 0x23, 0x24, 0x25 | 保留 | 保留 | 保留 | 释放块的池头在被释放后被修改。这通常不是释放块的前任所有者的错;相反,它通常(但不总是)是由于释放块之前的块被溢出。 |
0x20 | 应该找到的池条目 | 下一个池条目 | 保留 | 池块头大小已损坏。 |
0X21 | 被释放的池指针 | 为池块分配的字节数 | 在池块之后发现损坏的值 | 被释放的池块后面的数据已损坏。通常这意味着消费者(调用堆栈)已经超出了块。 |
0X22 | 正在释放的地址 | 保留 | 保留 | 被释放的地址没有跟踪条目。这通常是因为调用堆栈试图释放一个已经被释放或者从未被分配的指针。 |
www. On IT Road .com
原因
在当前请求时,池已经损坏。
这可能是也可能不是由于调用者。
解决方法
详细步骤查看我们的教程 在windows 中使用WinDBG 调试dmp文件
必须使用内核调试器遍历内部池链接以找出问题的可能原因。
然后,我们可以对可疑池标签使用特殊池,或者在可疑驱动程序上使用驱动程序验证程序“特殊池”选项。
!analyze 扩展可能有助于查明可疑驱动程序,但池破坏者通常不是这种情况。
使用蓝屏数据中描述的步骤收集停止代码参数。
使用停止代码参数来确定我们正在追踪的特定代码行为类型。
驱动程序验证器
Driver Verifier 是一种实时运行以检查驱动程序行为的工具。
如果它在驱动程序代码的执行中发现错误,它会主动创建一个异常以允许进一步检查该部分驱动程序代码。
驱动程序验证程序管理器内置于 Windows 中,可在所有 Windows PC 上使用。
要启动驱动程序验证程序管理器,请在命令提示符下键入 Verifier。
我们可以配置要验证的驱动程序。
验证驱动程序的代码在运行时会增加开销,因此请尝试验证尽可能少的驱动程序。
有关详细信息,请参阅驱动程序验证程序。
Windows 内存诊断
如果此 Bug Check 出现不一致,则可能与故障物理内存有关。
运行 Windows 内存诊断工具来测试内存。
在控制面板搜索框中,键入内存,然后选择诊断计算机的内存问题。
运行测试后,使用事件查看器在系统日志下查看结果。
查找 MemoryDiagnostics-Results 条目以查看结果。
BAD_POOL_HEADER 错误检查的值为 0x00000019.
这表明池标头已损坏。
日期:2020-09-17 00:15:46 来源:oir作者:oir