我有一个大型的紧凑的框架V2。0应用程序,在大多数情况下工作得非常好。在某些设备约旦的一天,用户接收一个地错误0xC0000005,是不是赶上了标准管理的试/抓块。

我应用与服务器进行同步通过ASMX呼吁在固定的间隔时间。该问题似乎发生期间同步。有相当多的业务逻辑以外的ASMX呼吁发生这种情况的时间的同步,但98%的管理的代码。我已经检查了我所有的P/调用和应用地C++库,并在这一点我的约95%肯定不是问题所在。

由于这只是发生在某些特定设备和非常少(不到一天)是非常困难的隔离开来。我instruemented我的代码和出现作为如果发生这种情况随机地应用程序,所以我怀疑的东西被破坏记忆。

任何想法如何解决这一步,将不胜感激。

有帮助吗?

解决方案 2

我的母C++的例外处理是不包括异步例外,因而是不是捉访问违例外情况。

这可能会/可能不会有助于我的问题,但可能有助于其他人。

使用家用电器的开关的记录,在这一链接将允许捕这些类型的例外情况:

http://msdn.microsoft.com/en-us/library/1deeycx5.aspx

其他提示

一0xC0000005是一个访问违反了,所以东西是试图阅读或写入到一个地址,它没有权访问。这些往往是很难找到和经验的最佳工具之一(井平台的建设者的调试器,是真正有用的,但这是一个完全独立的渠道调试和需要的体验,你可能没有或者你已经试图)。我找到记录往往不那么有用,减的编码除P/调用与管理模拟电话,只要有可能。

访问的侵权行为管理应用程序通常发生于一些原因:

  • 你P/调用司机API传递一个处理一个管理对象和地API使用,处理。如果你得到一个收集和压实的同时,本机API是运行、管理对象可能移动和指针变得无效。
  • 你P/调用的东西的缓冲区是太小或小于你通过在和API超支读或写
  • 一个指示器(因此,等等)传递给P/援引呼是无效的(-1或0)和司机不是检查,它在使用之前
  • 你P/调用司机呼叫和机代码的存储器(通常是虚拟的)并不是检查失败的拨款和读写无效的地址
  • 你使用一个GCHandle不是初始化或以某种方式是向一个已经定稿,并收集目的(所以它不是指向一个目的,它指向了一个地址在哪里的对象用)
  • 你的应用程序使用的一个手柄的东西,进行了无效的一个睡眠/唤醒。这是更深奥但可以肯定发生。例如,如果你正在运行的应用程序的一个存储卡,整个程序并不载入RAM。片中的使用是需求呼在执行。这是都好和好的。现在如果你的权力关闭设备,司机都关闭。当你的力量回升,许多设备只是简单地重新安装的储存设备。当你的应用需要由需求页在更多的程序,它不再在那里,这是和死了。类似的行为可能发生与数据库安装存储。如果你有一个开放的手把该数据库,之后睡/醒周期连接处理可能不再是有效的。

你会注意的趋势,在这里,几乎所有这些都是P/调和,没有事故。这是很难得到管理的代码这样做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top