记一则 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 环境来进行调试。