0

I am really wondering why FogBugz when installed locally insists that DEP is turned off?

4

5 回答 5

7

FogBugz 6 (and earlier) requires that Data Execution Prevention (DEP) be disabled on versions of Windows that have DEP, because of a third-party COM component that we use for parsing email. We will fix this in the next major release of FogBugz: FogBugz will no longer use this third-party component (in fact, the next version of FogBugz will not use any COM components).

于 2009-01-05T23:11:27.947 回答
1

打开它并使用调试器查看它在哪里崩溃 :) 我遇到了一些 COM 组件,这些组件将从触发 DEP 异常的数据块中执行一些代码。我愿意猜测 FogBugz 也在某个地方访问一些正在做同样事情的本机组件。

于 2009-01-04T20:08:17.523 回答
0

不知道 FogBugz 的具体情况,但是...

关闭 DEP 的最常见原因是在堆栈或堆上以编程方式生成的 thunk。Windows 内核模拟最常见的内核,但“最常见”的覆盖范围不是很好。

关闭 DEP 的第二个最常见原因是错误链接的代码段似乎是数据段。

第三个最常见的原因是字符串中的机器码。一般来说,这确实是一种糟糕的风格,但有时在 Windows 上却无济于事。

第四个最常见的原因是代码中的某些算法假定了堆栈布局。DEP 搞砸了。

或者程序可能真的在堆缓冲区上运行代码。

于 2009-01-04T20:06:42.783 回答
0

除非禁用 DEP,或者为已安装的挂钩设置了适当的内存保护选项,否则尝试修补或将挂钩插入其地址空间内的其他模块的代码通常不起作用。

这是一些框架(例如Delphi)的常用技术,其中“补丁”在运行时动态应用以修复供应商尚未解决的错误。

于 2009-01-04T20:18:05.210 回答
0

我只是不喜欢在服务器环境中关闭 DEP 的想法,因为现代最先进的软件无法处理它。特别是因为它是我多年来尝试过的唯一需要它的软件。

在安装过程中,我遇到了 DEP 警报。

正如上面的 FogBugz 链接所说,“但是请注意,在启用 DEP 的情况下,FogBugz 将无法正常运行。”。

于 2009-01-05T05:49:30.377 回答