记一次 .NET某半导体CIM系统 崩溃分析
💡
原文中文,约9400字,阅读约需23分钟。
📝
内容提要
本文介绍了作者如何使用WinDbg分析WinForm程序崩溃问题,通过分析dump文件发现崩溃是由后台标记阶段的异常引起的。作者推测是Windows补丁或框架兼容性问题导致内存监控出错。作者提出了两种解决方案:更新Windows补丁或禁用后台标记。
🎯
关键要点
- 作者通过WinDbg分析WinForm程序崩溃问题,发现崩溃由后台标记阶段的异常引起。
- 崩溃的dump文件未记录到具体的崩溃信息,使用!analyze -v命令进行初步分析。
- 发现一个线程抛出了System.ExecutionEngineException异常,表示CLR在执行自身代码时崩溃。
- 后台标记线程在标记对象时踩到了0区,导致崩溃,经过验证托管堆并没有损坏。
- 后台标记分为初始标记、并发标记和最终标记三个阶段,当前程序处于并发标记阶段。
- 提出两种解决方案:更新Windows补丁或禁用后台标记,以解决内存监控问题。
- 分析dump文件的过程考验了对bgc线程底层运作的理解,分析难度较大。
➡️