计算机技术学习札记

记一则 BAD_POOL_CALLER BSoD 处理

本文记录一次 BAD_POOL_CALLER BSoD 的处理过程。

「池」是 Windows 内核中用来管理设备内存的一种结构。BAD_POOL_CALLER 说明系统中某个线程尝试请求一个不正确的池。通常此问题可能与硬件驱动程序有关,但也有可能是杀毒软件造成。

最近,一机主反映其 Windows 11 系统经常出现 BAD_POOL_CALLER BSoD。使用 Windows 调试器分析其 BSoD 后的 MiniDMP 文件,关键输出内容如下:

BAD_POOL_CALLER (c2)
The current thread is making a bad pool request.  Typically this is at a bad IRQL level or double freeing the same allocation, etc.
Arguments:
Arg1: 0000000000000099, Attempt to free pool with invalid address  (or corruption in pool header)
Arg2: ffff868e24adb2f8, Address being freed
Arg3: 0000000000000000, 0
Arg4: 0000000000000000, 0

...

PROCESS_NAME:  MMSSHOST.exe

...

SYMBOL_NAME:  NETIO!NetioFreeMdl+1026c
MODULE_NAME: NETIO
IMAGE_NAME:  NETIO.SYS

查阅资料得知 MMSSHOST.exe 是 McAfee 软件的某个服务进程。又查到已有类似 由 McAfee 引起此 BSoD 的报告。同时,机主表示机器安装有 360 安全软件,而网上亦有 360 安全软件与 McAfee 冲突造成 BSoD 的报告。鉴于 McAfee 为预装,而其实质从未使用,故建议机主卸载 McAfee 软件,保留 360 安全软件。

卸载 McAfee 后,此问题 4 日内未见复现。


感谢 @Windy 提供的 Windows 11 环境来进行调试。