C#窗口应用程序突然崩溃,没有任何错误消息

本文关键字:任何 错误 消息 窗口 应用程序 突然 崩溃 | 更新日期: 2023-09-27 18:21:43

我的应用程序在没有任何正确消息的情况下突然崩溃。

该应用程序在ANY 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

我不知道失败的确切原因是什么。

任何帮助都将不胜感激。

C#窗口应用程序突然崩溃,没有任何错误消息

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

答案是Windows执行官无法识别该模块当应用程序崩溃时(它使用指令用于确定正在执行什么代码的指针)。在这种情况下内核只是获取堆栈的散列,所以至少我们可以以确定我们以前是否见过这种确切的碰撞。答案如下微软工程师总结:

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

考虑到所有这些,很可能您遇到了一些资源泄漏,这最终导致了这个访问违规错误。