3

我的应用程序突然开始崩溃,没有任何正确的消息。

该应用程序构建在任何 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 

在线阅读我们的隐私声明:http: //go.microsoft.com/fwlink/ ?linkid=104288&clcid=0x0409

如果在线隐私声明不可用,请离线阅读我们的隐私声明:

C:\Windows\system32\en-US\erofflps.txt

我无法弄清楚失败的确切原因是什么。

任何帮助将不胜感激。

4

1 回答 1

5

Exception Code: c0000005是一个 ACCESS_VIOLATION,您的程序正在尝试访问它自己之外的内存区域。Fault Module Name: StackHash_6bac表示在故障地址上没有加载任何模块:

答案是当应用程序崩溃时,Windows 执行程序无法识别我们所在的模块(它使用指令指针来确定正在执行的代码)。在这种情况下,内核只是简单地获取堆栈的哈希值,因此至少我们可以确定我们之前是否见过这种确切的崩溃。以下是微软工程师总结的答案:

在操作系统中,当我尝试获取错误的模块名称时,该地址可能没有加载(原文如此)的模块。例如,在这种情况下,EIP 为零。因此,在模块未加载且不在未加载模块列表中的情况下,我会获取堆栈的堆栈哈希,以便我们可以从模块未知的其他崩溃中识别此崩溃。

鉴于所有这些,您很可能遇到了一些资源泄漏,最终导致此访问冲突错误。

于 2013-07-10T11:35:27.643 回答