我真的想知道为什么FogBugz在本地安装后坚持DEP被关闭了?
答案 0 :(得分:7)
FogBugz 6(及更早版本)要求在具有DEP的Windows版本上禁用数据执行保护(DEP),因为我们用于解析电子邮件的第三方COM组件。我们将在FogBugz的下一个主要版本中修复此问题:FogBugz将不再使用此第三方组件(事实上,下一版本的FogBugz将不会使用任何 COM组件)。
答案 1 :(得分:1)
打开它,看看它与调试器崩溃的地方:)我遇到了一些COM组件,它们会从触发DEP异常的数据块中执行一些代码。我愿意猜测FogBugz也会在某些地方访问一些本地组件。
答案 2 :(得分:0)
不知道FogBugz的具体细节,但......
关闭DEP的最常见原因是错误链接的代码段似乎是数据段。
第二个最常见的原因是字符串中的机器代码。一般来说,这是非常糟糕的风格,但有时在Windows上它无法帮助。
第三个最常见的原因是代码中的某些算法假设了堆栈布局。 DEP对此感到困惑。
或许程序真的在堆缓冲区上运行代码。
答案 3 :(得分:0)
尝试修补或将挂钩插入其地址空间内的其他模块的代码通常无法工作,除非禁用DEP,或者为已安装的挂钩设置了相应的memory protection选项。
这是一种常见的技术,包含一些框架(例如Delphi),其中'patch'动态应用于运行时以修复供应商尚未解决的错误。
答案 4 :(得分:0)
我只是不喜欢在服务器环境中关闭DEP的想法,因为现代最先进的软件无法处理它。特别是因为它是我多年来尝试过的唯一需要它的软件。
在安装期间,我遇到了DEP警报。
正如上面的FogBugz链接所说,“但是,请注意,在启用DEP的情况下,FogBugz将无法正常运行。”。