You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用KVM时QEMU中NT 3.1启动BSOD问题调试求助

NT 3.1在QEMU启用KVM后故障的分析与解决方向

现象总结

  • 在QEMU中使用模拟CPU(如-cpu 486)运行NT 3.1可正常工作
  • 启用KVM(-enable-kvm)后,出现驱动加载失败、DLL无法读取、BSOD等随机异常
  • Core2架构Linux机器上启动时必现0x1e(KMODE_EXCEPTION_NOT_HANDLED)BSOD,对应地址0x8019db89触发0xc0000005访问违例
  • 发行版及带完整调试符号的NT 3.1 DDK测试版本表现一致

故障定位细节

  • 触发陷阱的指令为MOV EAX,dword ptr [EAX + 0x28],通过GDB附加QEMU验证是EAX为空导致的访问违例
  • 该指令属于注册表hive内存映射函数HvpBuildMap
  • 溯源发现HvInitializeHive中初始化_HHIVE结构(写入签名0xbee0bee0及函数指针)的操作在KVM下静默失败,目标内存区域始终为NULL
  • 进一步调试确认:执行MOV dword ptr [ESI],0xbee0bee0指令后,目标内存未被正确写入,但该内存权限为可读写,平坦内存模型下段寄存器不影响地址计算,KVM事件日志无异常记录

测试环境

  • QEMU版本:9.1.2
  • Linux内核版本:6.1.57,4.x系列内核测试同样存在该问题

问题根源及解决思路

更新:问题本质是NT内核缺少TLB失效处理逻辑,可参考Windows 95的同类修复方案解决。

内容的提问来源于stack exchange,提问作者shadowsnflames

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:17:39