我在 Windows Web Server 2008 R2 x64 上构建了一个导致缓冲区溢出异常的应用程序,具有以下签名
问题签名:
问题事件名称:BEX
应用程序名称:AlgorithmEvaluation.exe
应用程序版本:1.0.0.0
申请时间戳:4f7c6063
故障模块名称:clr.dll
故障模块版本:4.0.30319.1
故障模块时间戳:4ba1d9ef
异常偏移量:002b5b8c
异常代码:c0000409
异常数据:00000000
操作系统版本:6.1.7600.2.0.0.1296.17
区域设置 ID:1033
附加信息 1:5044
附加信息2:50442b9f233457091c25e076784708c8
附加信息 3:3eea
附加信息 4:3eeac65aee1d9241f0a9b0ca3bae03d6
该应用程序是用 C# 编写的,并调用一个 .NET dll(用 C++/CLI 编写),而后者又包装了一个本机 C++ dll。由于我没有 x86 C++ dll 的源代码,因此我已将所有其他代码设置为构建为 x86。C# 应用程序是多线程的,使用 Microsoft 的 CCR,它读取和写入 SQL Server 2008 Express 数据库。
按照MSDN的这些说明,我已将 C++/CLI 项目设置为 TSAWARE,据此,我认为我的 C# 项目默认情况下应该已经是 TSAWARE(我正在使用远程桌面访问 Web 服务器机器,如果这很重要) . 我也读过这篇technet文章。我考虑按照MSDN的建议关闭 DEP,但我担心这可能会导致更糟糕的事情发生
该应用程序在我运行 Windows 7 Home x64 的笔记本电脑上没有问题。
不幸的是,我没有硬件可以在合理的时间内在我的笔记本电脑上运行它。有人有想法吗?谢谢