windbg调试死锁问题
来源:互联网 发布:易语言30000源码百度云 编辑:程序博客网 时间:2024/06/05 03:53
操作系统对死锁的描述如下:
所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。
那么为什么会产生死锁呢?
1.因为系统资源不足。
2.进程运行推进的顺序不合适。
3.资源分配不当。
而产生死锁的条件有四个:
1.互斥条件:所谓互斥就是进程在某一时间内独占资源。
2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
3.不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。
4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
1) 先用!locks查看所有的线程占用的锁
这里可以看到有三个线程正在等待三个锁,第一个线程等待的锁是0043a620,但被5e4这条线程占用,第二个线程等待的锁是0043a844,但被5dc线程占用,
第三个线程等待的锁是031d40d4,也被5e4线程占用。
2)接着,我们需要查看5e4线程和5dc线程的id,具体可以通过查看工具栏中Processes and Threads,如下图所示,5e4的线程的id为53,5dc线程的id为51。
3)分别输入~53kb和~51kb查看这个两个线程的调用栈,结果如下图所示
由数据可知,5e4线程正在等待一把0043a844的锁,而5dc线程也正在等待锁0043a620。
4)结合第一步获取的信息可知,5e4线程要去获取已经被5dc占用的锁0043a844,而5dc又要去获取已经被5e4占用的锁0043a620,如此形成环路,就产生了死锁
以上几步就是分析死锁的几个关键步骤
0 0
- windbg调试死锁问题
- windbg 调试线程死锁
- windbg 经典死锁调试
- windbg调试之死锁
- windbg调试之死锁
- windbg分析死锁问题
- windbg 死锁问题分析
- 用Windbg调试Silverlight应用死锁
- windbg调试驱动自旋锁死锁
- 关于使用Windbg查看线程死锁问题
- linux 死锁问题调试
- 调试死锁问题
- 死锁问题调试-思路分析
- 使用WinDBG调试内存泄露的问题
- windbg 调试virtualbox xp问题及解决
- windbg 调试virtualbox xp问题及解决
- WinDbg调试中遇到的问题(一)
- Windbg调试----Windbg入门
- 使用git和tortoisegit获取kbengine的代码
- Eclipse 找不到或无法加载主类
- json串转化为map并迭代
- 优化网站设计(十六):为AJAX请求使用GET方法
- [转载] 机器学习面试之算法思想简单梳理
- windbg调试死锁问题
- JNI由浅入深_4_JNI基础知识详解
- 优化网站设计(十七):延迟或按需加载内容
- Xcode 6中添加预编译pch文件
- sgu-207 Robbers
- poj1860 Currency Exchange(bellman_flod判环)
- DD
- 果断Mark!国外程序员收集整理的PHP资源大全
- Python菜鸟学习手册13----标准库简介