利用压力测试来保证软件的质量(六) 死锁问题
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的,加锁的顺序反了
现在遇到一个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的,加锁的顺序反了
相关文章推荐
- 利用压力测试来保证软件的质量(七) 堆错误问题
- 利用压力测试来保证软件的质量(八) 栈溢出问题
- 利用压力测试来保证软件的质量(三) 窗口链混乱问题
- 利用压力测试来保证软件的质量(四) 内存泄露问题
- 利用压力测试来保证软件的质量(九) 访问违例问题
- 利用压力测试来保证软件的质量(五) 窗口消息问题
- 利用压力测试来保证软件的质量(十) CPU Starvation问题
- 利用压力测试来保证软件的质量(一) 概述
- 利用压力测试来保证软件的质量(二) 基本原理和方法
- 过程与产品质量保证(PPQA)-软件测试
- 【面试题】你是测试工程师,如何保证软件的质量?
- 测试入门之软件质量问题
- 软件产品发布后出现重大质量问题,谁来负主要责任?开发人员还是测试人员?
- 利用Orion对Oracle进行压力测试
- 过程决定质量——清华郑人杰教授谈软件测试
- 深圳市软件质量提升工程系列活动——安全测试百人大课堂
- 软件测试中遇到的常见问题及沟通方法
- 准备写点文章--关于软件测试/软件质量的
- 软件测试新手问题解答
- 软件质量谁把关?——浅谈软件测试现状