我的应用程序突然崩溃,没有任何正确的消息.
该应用程序是在任何CPU中构建的,并在64位机器上运行.
在崩溃时,它正在使用大约1.5GB内存.
该项目将所有操作流程存储在SQLCe4.0后端数据库中,项目规模几乎都在2.8 GB.
当我检查Windows事件查看器时,消息是这样的:
Problem signature:
Problem Event Name: APPCRASH
Application Name: MyApp.exe
Application Version: 2.7.710.1137
Application Timestamp: 51dcf6b1
**Fault Module Name: StackHash_6bac**
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 00000000
Exception Code: c0000005
Exception Offset: 000000007782000a
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
Additional Information 1: 6bac
Additional Information 2: 6bac59273bcf6f09b20009b5873b0c76
Additional Information 3: 2600
Additional Information 4: 2600c3cc88a8c9bf041ae82fe9962258
Run Code Online (Sandbox Code Playgroud)
在线阅读我们的隐私声明:http: //go.microsoft.com/fwlink/?linkid = 104288&clcid = 0x400
如果没有在线隐私声明,请离线阅读我们的隐私声明:
C:\Windows\system32\en-US\erofflps.txt
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚失败的确切原因是什么.
任何帮助将不胜感激.
Exception Code: c0000005是一个ACCESS_VIOLATION,即你的程序试图访问它自己的内存区域.Fault Module Name: StackHash_6bac表示故障地址上没有加载模块:
答案是Windows执行程序无法识别应用程序崩溃时我们所处的模块(它使用指令指针来确定正在执行的代码).在这种情况下,内核只需要获取堆栈的哈希值,这样至少我们可以识别出我们之前是否已经看到过这种确切的崩溃.以下是微软工程师总结的答案:
在操作系统中,当我尝试获取错误模块名称时,可能在该地址没有模块加盖(sic).例如,在这种情况下,EIP为零.因此,在未加载模块且不在卸载模块列表中的情况下,我采用堆栈的堆栈哈希,以便我们可以从其他崩溃中识别此崩溃,其中模块也是未知的.
鉴于所有这些,很可能您遇到了一些资源泄漏,最终导致此访问冲突错误.