avstream麦克风蓝屏问题跟踪

背景

有一个以前的老客户,他在开发avstream的麦克风驱动,最近上线,但是客户那边时不时报出蓝屏问题,他们工程师查了很久,就是找不到头绪,只能靠瞎猜,改了很多次问题还是依旧,客户已经不耐烦了,毕竟是蓝屏问题,影响还是很大的,于是他们求助到了我这里。

dump分析

首先我还是看蓝屏dump,信息如下:
在这里插入图片描述
可以看到arg1和arg4是一样的,拿到他们的pdb和代码一看,在如下函数的入口处就挂了。
在这里插入图片描述
调用该函数的地方:
在这里插入图片描述
先看下CAudioCaptureFilter::TimerDpc的反汇编,是可以正常反编译出来的,证明地址不是无效的地址。
在这里插入图片描述
从上面蓝屏信息我们可以看到,IRQL是2,该原因有两个:
(1)在DISPATCH_LEVEL的IRQL上访问分页内存
(2)在DISPATCH_LEVEL的IRQL上访问无效地址
我们已经排除了地址是无效地址,那只能是无效内存了,但这是个函数,是个可执行的地址,该可执行地址难道分页了?于是仔细检查代码,发现代码段部分存在这样的修饰:
在这里插入图片描述
这代表该函数放在可分页的代码段,但是该函数被调用的地方是定时器的回调,是个DISPATCH_LEVEL的IRQL,导致分页的时候蓝屏了。

解决方案

(1)删除代码的可分页修饰,增加该修饰主要是优化代码,不必将所有的代码都放在非分页内存上,所以删除就可以了。
(2)如果为了优化代码,保留代码的可分页修饰,但是切记该代码被调用该的地方一定要在PASSIVE_LEVEL下,一些需要在DISPATCH_LEVEL下运行的代码一定要放在如下修饰的下面:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宸汐软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值