记一次 .NET某半导体CIM系统 崩溃分析

💡 原文中文,约9400字,阅读约需23分钟。
📝

内容提要

本文介绍了作者如何使用WinDbg分析WinForm程序崩溃问题,通过分析dump文件发现崩溃是由后台标记阶段的异常引起的。作者推测是Windows补丁或框架兼容性问题导致内存监控出错。作者提出了两种解决方案:更新Windows补丁或禁用后台标记。

🎯

关键要点

  • 作者通过WinDbg分析WinForm程序崩溃问题,发现崩溃由后台标记阶段的异常引起。
  • 崩溃的dump文件未记录到具体的崩溃信息,使用!analyze -v命令进行初步分析。
  • 发现一个线程抛出了System.ExecutionEngineException异常,表示CLR在执行自身代码时崩溃。
  • 后台标记线程在标记对象时踩到了0区,导致崩溃,经过验证托管堆并没有损坏。
  • 后台标记分为初始标记、并发标记和最终标记三个阶段,当前程序处于并发标记阶段。
  • 提出两种解决方案:更新Windows补丁或禁用后台标记,以解决内存监控问题。
  • 分析dump文件的过程考验了对bgc线程底层运作的理解,分析难度较大。
➡️

继续阅读