背景
最近一个朋友找到我帮他们查一个问题,是虚拟摄像头的一个蓝屏问题,不是必现的蓝屏,隔一段时间出现一次,他们查了很久,没有头绪,所以找我帮他们看看。他们给了一个蓝屏的mini dump以及相关的pdb和源码,有了这些东西,排查就和容易了。
初步分析
使用 windbg 打开 minidump,看到如下错误
崩溃在数据段 ffff8702`b5280000 这个位置
错误是 DRIVER_IRQL_NOT_LESS_OR_EQUAL,这个错误一般原因有两个:
(1)访问的地址不存在,地址已经释放了或者是空
(2)在 DISPATCH_LEVEL 的 IRQL 访问分页地址,当页面发生分页时产生缺页中断而发生蓝
屏

详细分析
我们从上面看,貌似地址是个无效的地址,但是其实不一定,因为我打开的是 minidump,
信息不全,导致无法看到数据,而不一定是无效地址,看下类的成员变量如下,发现崩溃的
地址其实是 m_pBuffer

代码中的崩溃点如下图
目标地址是 m_SynthesisBuffer,在上面的局部变量也有,他的地址是 0xffffe389ebe20000,不
是崩溃点,所以崩溃点只能是 data 了。

再看看如下代码,SendData 把 m_pBuffer 传进来,这样就能对应上了。

最低0.47元/天 解锁文章
1212

被折叠的 条评论
为什么被折叠?



