Windowsterminal服务器:应用程序偶尔存在内存违例

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

这个问题看起来非常随机,只能重复性很差 – 应用程序可能会运行几个小时,以0xc0000005失败并重新启动相当好,或只是在启动时抛出访问冲突,并在第二次尝试时完美启动。

可执行文件,模块和偏移地址的名称是不同的,尽pipe单个可执行文件往往会失败,相同的模块和相同的内存偏移地址(如“OUTLOOK.EXE”重复失败模块“olmapi32.dll”偏移量为“0x00044b7a”)甚至跨越多个用户的login,并在几天之间通过而没有一个单一的故障。 但是,偏移地址似乎在重新启动时会发生变化。 只有select性的可执行文件似乎受到了这个问题的影响,尽pipe我可能根本就没有看到足够数量的应用程序运行。

我首先怀疑物理机的内存可能存在问题,但排除这种情况的原因不大 – 内存配备ECC,而且我已经将虚拟机移动了好几次,没有任何可察觉的变化。

我已经看到DEP在这台机器上的“OptOut”模式下被启用:

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

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

 bcdedit.exe /set {current} nx OptIn 

但还没有看到任何效果 – 我也希望Outlook 12或Adobe Reader 9(这两个受影响的应用程序)与DEP搭配良好。

任何其他的想法,为什么应用程序可能会失败?

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

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

听起来像一个糟糕的指针或某种内存重叠在应用程序的代码给我。 你有没有检查过,看看这是一个已知的Outlook和/或Adobe错误?