2014-01-21 48 views
2

我使用DCEF3(https://code.google.com/p/dcef3/)用Delphi 7CEF(铬嵌入式框架)与DEP(数据执行保护)

的CEF版本,嵌入了DCEF,是3.1547.1412。

的问题

在使用Windows 2008 R2机器上,当我的应用程序加载时,它与型BEX的情况下崩溃了一些时间。

我只能够解决在Windows停用DEP崩溃,为了这个,我使用的提示命令:

bdcedit /set nx AlwaysOff 

但这不能成为解决方案。

我不能强迫我的用户禁用DEP在自己的服务器上。

这里是APPCRASH报告(葡萄牙):

Assinatura do problema: 
     Nome do Evento de Problema:   BEX 
     Nome do Aplicativo:       MyExecutable.exe 
     Versão do Aplicativo:       1.1.0.1 
     Carimbo de Data/Hora do Aplicativo:   2a425e19 
     Nome do Módulo de Falhas:   dhcpcsvc6.DLL 
     Versão do Módulo de Falhas:   6.1.7601.17970 
     Carimbo de Data/Hora do Módulo de Falhas:    50745f7c 
     Deslocamento de Exceção:    00001730 
     Código de Exceção:       c0000005 
     Dados de Exceção:        00000008 
     Versão do sistema operacional:  6.1.7601.2.1.0.18.10 
     Identificação da Localidade:    1046 
     Informações Adicionais 1:     a7aa 
     Informações Adicionais 2:     a7aa91f17ea749d42a4de3b390fa5b3d 
     Informações Adicionais 3:     a7aa 
     Informações Adicionais 4:     a7aa91f17ea749d42a4de3b390fa5b3d 

有人可以帮我找到了问题的根源或有关为什么发生这种情况的一些信息?

+0

你可以用一个嵌入了Chromium的小测试应用程序来重现这一点吗?如果是这样,这里的人会更容易回答。你的大应用程序可能会做任何与CEF严重交互的事情。你正在寻找一个[SSCCE](http://sscce.org/),在你嵌入组件的时候可能很难,但请尽你所能。 –

+0

另外[本文表明,Delphi 7中的SysUtils可以触发DEP](http://www.prestwood.com/ASPSuite/KB/Document_View.asp?QID=100651),并且您需要升级到D2005或更高版本才能修复它。 (然而,这篇文章并没有链接到一个补丁。)德尔福7是非常古老的,所以毫不奇怪,它在发布之后编写的Windows版本中是不可接受的。我对使用D7的任何人的标准建议是无论如何都要升级:) –

+0

@David:在我嵌入CEF后,这个问题开始发生,我无法迁移到更新的delphi。我会尝试创建一个测试应用程序,但我不保证我会重现该问题。 –

回答

2

在评论,您可以通过调用SetProcessDEPPolicy链接到forum that explains that Chromium intentionally enables data execution preventionDEP is known to interfere with Delphi 7.有鉴于此,我看到三种解决方案(按优先顺序排列):

  1. 升级到版本的Delphi这是不到十年的历史。你会得到一个DEP感知的RTL。
  2. 正如在论坛中提到的那样,自己编译Chromium并排除与DEP相关的代码。您可以这样做,例如,编辑ApplyProcessMitigationsToCurrentProcess in process_mitigations.cc以使其忽略MITIGATION_DEPMITIGATION_DEP_NO_ATL_THUNK标志。
  3. 运行bcdedit,因为你已经找到了。当你这样做的时候,你在操作系统级别禁用DEP,并强制Chromium的调用SetProcessDEPPolicy失败。
相关问题