Bug 检查 0x19:BAD_POOL_HEADER

BAD_POOL_HEADER bug 检查的值为 0x00000019。 这表示池标头已损坏。

重要

本主题面向程序员。 如果您是在使用计算机时收到蓝屏错误代码的客户,请参阅蓝屏错误疑难解答

BAD_POOL_HEADER参数

参数 1 指示冲突的类型。 其他参数的含义取决于参数 1 的值。

参数 1 参数 2 参数 3 参数 4 错误消息的原因

0x2

正在检查的池条目

池块的大小

0

特殊池模式检查失败。

(所有者可能损坏了池 block.)

0x3

正在检查的池条目

读回 flink 自由 列表值

读回闪烁 自由 列表值

池可用列表已损坏。

(在正常运行的列表中,参数 2、3 和 4 的值应相同。)

0x5

池条目之一

保留

另一个池条目

一对相邻池条目具有相互冲突的标题。 其中至少有一个已损坏。

0x6

一个计算不正确的条目

保留

导致计算错误的错误条目

池块标头以前的大小太大。

0x7

0

保留

错误的池条目

池块标头大小已损坏。

0x8

0

保留

错误的池条目

池块标头大小为零。

0x9

一个计算不正确的条目

保留

导致计算错误的错误条目

池块标头大小已损坏, (太大,) 。

0xA

应已找到的池条目

保留

应包含池条目的页面的虚拟地址

池块标头大小已损坏。

0xD、0xE、0xF、0x23、0x24、0x25

预留

预留

预留

已释放块的池标头在释放后已被修改。 这通常不是已释放块的先前所有者的错误;相反,它通常 (,但并不总是) ,因为释放的块之前被溢出。

0x20

应已找到的池条目

下一个池条目

保留

池块标头大小已损坏。

0X21

要释放的池指针

为池块分配的字节数

在池块之后找到的损坏值

释放池块后的数据已损坏。 通常,这意味着使用者 (堆栈) 已溢出 块。

0X22

要释放的地址

预留

预留

要释放的地址没有跟踪条目。 这通常是因为调用堆栈尝试释放一个指针,该指针已释放或从未分配以开始。

原因

池在当前请求时已损坏。

这可能是由调用方导致,也可能不是由调用方导致。

解决方案

必须使用内核调试器演练内部池链接,以找出问题的可能原因。

然后,可以将特殊池用于可疑池标记,或在可疑驱动程序上使用驱动程序验证程序"特殊池"选项。 !analyze 扩展有助于查明可疑驱动程序,但池损坏者通常不会这样做。

使用蓝屏数据 中所述的步骤 收集停止代码参数。 使用停止代码参数来确定要跟踪的特定代码行为类型。

驱动程序验证程序

驱动程序验证程序是一个实时运行的工具,用于检查驱动程序的行为。 如果它在执行驱动程序代码时看到错误,它会主动创建一个异常,以允许进一步检查驱动程序代码的该部分。 驱动程序验证程序管理器内置于 Windows 中,可在所有 Windows PC 上使用。 若要启动驱动程序验证程序管理器,请在命令提示下键入“验证程序” 。 你可以配置要验证的驱动程序。 验证驱动程序的代码在运行时会增加开销,因此请尝试验证尽可能少的驱动程序。 有关详细信息,请参阅驱动程序验证程序

Windows 内存诊断

如果此错误检查显示不一致,则可能与错误的物理内存有关。

运行 Windows 内存诊断工具来测试内存。 在 "控制面板" 搜索框中键入 "内存",然后选择 " 诊断计算机的内存问题"。运行测试后,使用事件查看器查看系统日志下的结果。 查找“内存诊断结果”条目以查看结果 。