记一次 .NET 某医疗器械 程序崩溃分析( 三 )

果不其然,这个堆块已经是 Free 状态了,再 Free 必然会报错,经典的 Double Free 哈 。
4. 回首再看源码仔细阅读源码,发现有两个问题 。

  1. 没有对 localResource 加锁处理,在并发的时候容易出现问题 。
  2. localResource 是一个类级别变量,在多个方法中被使用,建议减低作用域 。
将信息反馈给朋友之后,建议朋友加锁并降低 localResource 作用域 。
三: 总结【记一次 .NET 某医疗器械 程序崩溃分析】这次偶发的生产崩溃事故,主要原因是朋友的代码在逻辑上出了点问题,没有合理的保护好 localResource 句柄资源,反复释放导致的 ntheap 破坏 。
这个 dump 虽然问题比较小白,但逆向分析找出原因,还是挺考验基本功的 。
记一次 .NET 某医疗器械 程序崩溃分析

文章插图

推荐阅读