Windows 终端服务器:应用程序偶尔发生内存违规

Windows 终端服务器:应用程序偶尔发生内存违规

在用作终端服务器的虚拟化(ESXi 4.1)Windows Server 2008 SP2 32 位计算机上,我偶尔(每天大约 1-3 个事件日志条目)看到应用程序因 0xc0000005 错误而失败 - 显然是内存访问冲突。

该问题似乎相当随机,并且很难重现 - 应用程序可能运行数小时,出现 0xc0000005 故障并重新启动,或者只是在启动时抛出访问冲突并在第二次尝试时完美启动。

可执行文件、模块和偏移地址的名称各不相同,尽管单个可执行文件往往会因相同的模块和相同的内存偏移地址而失败(例如“OUTLOOK.EXE”在偏移量为“0x00044b7a”的模块“olmapi32.dll”上反复失败)——甚至在多个用户登录之间,并且几天内没有出现一次故障。但是,偏移地址似乎在重新启动后会发生变化。只有选择性的可执行文件似乎受到该问题的影响,尽管我可能只是没有看到其他可执行文件中有足够数量的应用程序运行。

我首先怀疑物理机的 RAM 可能存在问题,但后来排除了这个可能性——内存带有 ECC,而且我已经多次移动虚拟机,没有任何明显的变化。

我发现这台机器上的 DEP 已在“OptOut”模式下启用:

C:\Users\administrator>wmic OS Get DataExecutionPrevention_SupportPolicy
DataExecutionPrevention_SupportPolicy
3

并尝试通过启动选项将策略更改为 OptIn:

bcdedit.exe /set {current} nx OptIn

但尚未看到任何效果 - 我还希望 Outlook 12 或 Adob​​e Reader 9(两个受影响的应用程序)能够与 DEP 很好地兼容。

关于应用程序失败的其他原因还有其他想法吗?

答案1

每次我在终端服务器上遇到 0xc0000005 错误问题时,结果都是 DEP 的问题。

您是否尝试过将 DEP 模式设置回“OptOut”,然后明确列出所有给您带来麻烦的二进制文件?

答案2

在我看来,这听起来像是应用程序代码中的错误指针或某种内存重叠。您是否检查过这是否是 Outlook 和/或 Adob​​e 的已知错误?

相关内容