您的位置:首页 > 其它

利用压力测试来保证软件的质量(六) 死锁问题

2010-09-10 21:10 323 查看
DeadLock的一个可怕后果就是UI Hang住了(界面没反应),你一般会看到这个进程是Shell32.exe。

 

现在遇到一个Theme相关的Dead Lock问题:
\DumpFile\Dead Lock\20100704_DeadLock_poutlook.exe
\DumpFile\Dead Lock\20100703_DEADLOCK_poutlook.exe
\DumpFile\Dead Lock\20100627_DEADLOCKpoutlook.exe
\DumpFile\Dead Lock\20100622_DEADLOCKpoutlook.exe
\DumpFile\Dead Lock\20100707_DeadLockpoutlook.exe

如果用户改了theme,CThemePrimitive::UpateThread就会wake up起来
去更新theme的设置

这个时候会先enter theme内部的一个锁,然后调GDI的API做一些绘制的操作,当然GWES内部也有一个锁需要lock
另一方面GWES Control,在实现绘制的时候,需要调用theme API得到theme的设置
在调到theme API之前,因为是GWES的Control所以已经获得了GWES内部的锁,于是dead lock
两个锁theme的和GWES的,加锁的顺序反了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: