我的应用在启动时在MSHTML工作线程中崩溃了。 EXCEPTION_RECORD给出:
0:066> .exr 0e11f668
ExceptionAddress: 732019ab (rtutils!AcquireWriteLock+0x00000010)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000008
Parameter[1]: 732019ab
Attempt to execute non-executable address 732019ab
但是!address
表明地址732019ab确实是可执行的:
0:066> !address 732019ab
Usage: Image
Base Address: 73201000
End Address: 7320a000
Region Size: 00009000
State: 00001000 MEM_COMMIT
Protect: 00000020 PAGE_EXECUTE_READ
Type: 01000000 MEM_IMAGE
Allocation Base: 73200000
Allocation Protect: 00000080 PAGE_EXECUTE_WRITECOPY
Image Path: C:\Windows\SysWOW64\rtutils.dll
Module Name: rtutils
Loaded Image Name: rtutils.dll
Mapped Image Name:
More info: lmv m rtutils
More info: !lmi rtutils
More info: ln 0x732019ab
More info: !dh 0x73200000
732019ab的指示是:</ p>
0:066> u 732019ab l1
rtutils!AcquireWriteLock+0x10:
732019ab 8d4618 lea eax,[esi+18h]
为什么在页面标记为PAGE_EXECUTE_WRITECOPY的地址上报告DEP违规?
答案 0 :(得分:0)
如果我猜测,我会说某些内容正在播放该页面上的保护标记,但是在异常发生之后(或同时)将其放回PAGE_EXECUTE_READ
。首先查看您的代码(或您使用的任何库)是否使用VirtualProtect
。
如果这没有透露任何内容,我们可以转向其他一些可能性:
<强>恶意软件强>
有些恶意软件喜欢使用挂机/热线安装,并且已知会导致类似的问题。
有缺陷的防病毒软件
防病毒应用程序采用了许多与恶意软件相同的技巧。如果在禁用它后问题停止,您就找到了罪魁祸首,并且可以查看更新/替换它。
错误的内核驱动程序
在内核模式下,你可以意外地实现不可能,但绝不是故意的。 :)
有故障的CPU
超频或冷却不足的CPU可能会导致许多不可预测的事情发生。不太可能,但可能。