【发布时间】:2012-06-27 08:34:22
【问题描述】:
所以这是一个奇怪的错误。在我们的一位客户(Windows XP SP3)的一台机器上,我们的程序在尝试通过 ShowDialog() 打开过滤器对话框时崩溃。
会发生什么:用户按预期工作,他/她没有做任何不正常或错误的事情,并且他/她所做的一切都在多台机器上进行了测试(范围从 Win XP 32 位到 Win 7 64 位)。
现在,过了一段时间,他/她想要使用过滤器对话框(他/她当时做了十几次)并且应用程序崩溃了。您会从 Windows XP 中收到精彩的“$applicationname 导致问题并必须终止”消息,在它下方您可以看到过滤器对话框,部分构建(意思是:您可以看到窗口、滚动条和透明的“洞”,其中文本控件/标签应该是。
在 Windows 事件查看器中,您可以看到这样的条目
事件 ID:1000 来源:.NET Runtime 4.0 Error Re (也许这背后有什么东西,上面写着“报告”?!)
错误应用程序 $applicationname.exe,版本 $versionnumber, 戳 $someRandomNumbers,错误模块 ntdll.dll,版本 5.1.2600.6055,戳4d00f27b,debug?0,故障地址0x00446da
现在,让我感到奇怪的是:通过 ShowDialog 打开对话框的位置嵌入在 2(!) try...catch 块中。应用程序如何崩溃?甚至没有关于这次崩溃的日志文件条目(我们在该程序中的每个 catch 块中都完成了一些事情,并且它始终是我们做的第一件事)。
我已经从那台机器上卸载了应用程序和 .NET 4,重新启动安装了所有东西,安装了 Windows 更新并再次重新启动。结果一样。
*编辑 刚刚注意到一些事情:当我关闭来自 microsoft 的消息时,会在 eventviewer 中创建一个附加条目:
进程因未处理的异常而终止我猜这就是英文的意思,因为原始消息是我必须翻译的另一种语言
异常代码:c015000f,地址 7c9546DA 地址始终相同
【问题讨论】:
-
谷歌搜索“.net c015000f”给了我几个热修复和博客文章来看看..我建议你看看那些..
-
这个异常是由一个编程错误引起的,De/ActivateActCtx winapi函数使用不正确。它与显示对话框相关联,因为这些功能通常用于启用视觉样式。这就是从提供的信息中可以猜到的所有内容。
-
@riffnl 嗯,快速浏览了一下(我使用的搜索词略有不同,但结果基本相同),这些几乎都与在 64 位 Windows (WoW) 上运行 32 位应用程序有关这里没有发生。
-
@Hans 听起来很有趣。我的一位同事认为这可能是由于视频 RAM 不足造成的,因此我们停用了视觉样式,之后错误数量减少,并且在关闭过滤器对话框时出现错误,(我猜)它与您的信息
标签: c# .net windows-xp