由写时复制内存页生成的 Windows 写错误异常

问题描述

我有一个在大多数计算机上运行良好的 Windows 应用程序,但在运行在 Intel Xeon Gold 6254 处理器上的 VM 上,当代码第一次写入全局变量时,我收到了写入错误异常 (0xC000001D)我的 DLL。根据 VirtualQuery Windows api 调用,正在写入的内存页面设置了 PAGE_EXECUTE_WRITEcopY 保护。在应用程序运行良好的机器上也是如此。我的猜测是,Windows 应该通过在写入发生之前将内存页复制到新的物理内存页来处理此异常,但相反,该异常被我的另一个中的一个 c++ catch(...) 块捕获DLL。 VM 上运行的操作系统是 Windows 10 Enterprise。我们的应用程序是用 c# 编写的,但使用 c++ dll(遗留代码),这也可能是相关的。另请注意,我无权访问有关如何配置 VM 的信息,但如果这是相关信息,我可能会在几天内获得此信息。

我对如何解决这个问题没有任何想法,所以我正在寻找有关如何解决这个问题或进一步诊断的建议。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)