💡 原文中文,约6000字,阅读约需15分钟。
📝

内容提要

文章分析了一起因双重释放导致的生产事故,经过dump文件分析发现ntheap损坏,最终定位到代码问题,建议修改源代码以控制变量。

🎯

关键要点

  • 文章分析了一起因双重释放导致的生产事故。
  • 通过dump文件分析发现ntheap损坏,崩溃码为c0000374。
  • ntheap损坏的原因是调用了FreeHGlobal,导致了double free问题。
  • 双释放是指对一个内存块进行二次释放,Windows的RtlFreeHeap方法会直接判定为异常。
  • 通过堆状态分析,确认了问题内存块的状态为free。
  • 问题代码在b.B+A.MoveNext()方法中,涉及类级别变量的控制不当。
  • 建议修改源代码以合理控制变量,避免双重释放问题。
➡️

继续阅读