【发布时间】:2016-04-08 10:47:39
【问题描述】:
我有一个 Windows 应用商店应用程序,我可以在 Windows 开发人员仪表板上看到用户遇到崩溃。我不理解这些报告(主要是堆栈跟踪),因为我不熟悉未管理的代码(这些应用程序在发布时被编译为 C++ 应用程序等本机代码)。然而,我确实理解(或者可能错误地认为)最常发生的错误是没有意义的错误。该应用是没有不安全代码的 XAML/C# 应用。主要的例外是:
INVALID_POINTER_READ_c0000005_Windows.UI.Xaml.dll!DirectUI::UIAffinityReleaseQueue::DoCleanup
和
INVALID_POINTER_READ_CONTEXT_MISMATCH_c0000005_Windows.UI.Xaml.dll!DirectUI::UIAffinityReleaseQueue::DoCleanup
谁能向我解释一下这种类型的错误如何在纯托管代码应用程序中发生?
【问题讨论】:
-
你在终结器中有代码吗? (看起来像
~YourClassName(){ ... }的函数)另外,请在您的问题中包含完整的错误,包括堆栈跟踪。 -
只有给定的信息,除了推测,我们无能为力。我推测,您在拆除 UI 时附加了事件处理程序。
-
@IInspectable 谢谢。这可能会发生(事件处理程序在其 UI 被拆除时触发)但所有这些事件都已包含在 try-catch 块中。此外,即使它们不是 - C# 也不应该允许指针无效。这些错误应该类似于“您正在访问已处置的对象”。对吗?
-
@ScottChamberlain 不幸的是,我无法发布堆栈跟踪。关于终结器 - 我没有编写任何终结器,并且应用程序中没有第 3 方代码。所以只有那些是 Windows 运行时的一部分。
-
如您所述,您正在编译为本机代码。一旦部署,那里不再有 .NET。即使存在,在 C# 中取消引用 NULL 指针仍然会导致 SEH 异常(本机操作系统异常),该异常会通过本机异常过滤器,在 CLR 中实现以对 .NET 异常进行建模。没有看到堆栈跟踪,很难判断这是否会导致崩溃,或者只是设置阶段。如果您无法发布堆栈跟踪,我建议将此问题作为题外话结束。
标签: c# c++ xaml windows-store-apps win-universal-app