记一次 .NET 某旅行社审批系统 崩溃分析

💡 原文中文,约8800字,阅读约需21分钟。
📝

内容提要

本文介绍使用Windbg分析程序崩溃原因和解决栈溢出问题。通过分析dump文件,发现死递归导致栈空间耗尽,引发栈溢出异常。建议升级SDK解决问题,异常码为c00000fd。

🎯

关键要点

  • 朋友的程序崩溃,通过抓取 crash dump 分析问题。
  • 使用 Windbg 分析 dump 文件,发现栈溢出异常,异常码为 c00000fd。
  • 栈溢出是由于死递归导致的,建议升级 SDK 解决问题。
  • Windbg 提供了 .excr 和 !clrstack 命令来分析栈信息。
  • 栈溢出异常 c00000fd 与访问违例 c0000005 的区别在于栈的布局和 PAGE_GUARD 机制。
  • PAGE_GUARD 是 Windows 的栈伸展机制,防止栈空间耗尽时引发异常。
  • 通过分析栈的限制和基地址,可以验证栈溢出异常的原因。
➡️

继续阅读