2013-03-15 58 views
0

我们一直在试图解决导致我们的程序崩溃的这个问题。但是,我们还没有能够在内部重现车祸。调用OS功能失败后访问冲突00000000

是从客户端的机器来调用栈是这里的链接:

点击放大:

screenshot

它似乎并未有任何的任何参考文件在我们的项目中,所以我们在寻找解决方案的地方有点失落。

这可能是环境问题吗?正在解决此问题的客户端使用Windows 7 SP1和Windows Server 2003.有时,在客户崩溃之前,客户一直在报告他们已收到'调用OS功能失败'的错误消息。这可以相关吗?基于调用堆栈,任何人都可以理解它想要做什么?

[更新]调用堆栈来自EurekaLog。此外,我还在“呼叫操作系统功能失败”错误中附加了呼叫堆栈下方的客户正在遇到的错误。这似乎与客户正在获取的AV错误有关,但我们不确定。 http://postimage.org/image/jku5dlnuf/

+0

非现场图像中的调用堆栈很容易理解。它在窗体上调用Release。然后调用GetHandle然后尝试重新创建窗口。哪个失败。我希望你看到的所有其他东西都从那里流出。为什么窗口创建失败?很难知道会发生什么。我已经在有密码保护的屏幕保护程序的系统上看到过类似的声音错误。听起来很奇怪,我知道。我以为这一切都停止与Vista。所以它会在服务器2003(windows 5.2)上合理,但在Win 7上不会太多。 – 2013-03-15 13:15:26

回答

1

根据图像中堆栈跟踪的部分,无法分辨。堆栈跟踪主要显示来自内核DLL的Windows API内部函数。

所有零地址的例外是一个零指针(在创建之前使用的对象),但无法从该堆栈跟踪中确定它发生的位置。

您应该看看如何向您的应用程序添加异常处理产品,如MadExceptEurekaLog,这会为您提供可用的堆栈跟踪和更多的错误信息。两者都相对便宜,尤其是与没有它们追踪这类错误的时间相比。 (我自己的经验是与MadExcept,但我不隶属于他们中的任何一个。)

+0

或者您可以使用JCLDebug来获得免费且开源的堆栈痕迹 – awmross 2013-03-15 02:41:47

+0

您好,非常感谢您的建议。实际上,调用堆栈来自EurekaLog。 AV的调用堆栈仅显示Windows API内部函数。但是,我附加了另一个调用堆栈,以查看另一个错误“调用OS函数失败”,这似乎是相关的(因为报告问题的客户也遇到了这种情况)。你知道这个错误信息是什么表示以及它为什么发生? – user2172188 2013-03-15 03:42:37

+0

这个问题似乎与'FormCloseQueryWithEplTrCtrl'(拼写可能是关闭的)有关,这是从您的应用程序运行的代码中最近执行的部分(除了两个InterBase相关的方法稍高一点,这似乎是部分IBX,可能不是问题的根源)。那些代码可以访问一个零对象(如果有的话)是什么? – 2013-03-15 10:57:53