基于公司的代码分析的死锁,界面卡死不能操作,没有崩溃退出,那么首先是附加进程:
第一步:找到进程
ps -aux | grep MonitorClient
第二步:附加进程
第三步:查看堆栈
bt
第四步:执行了bt后,打印出来了界面卡死的堆栈
出现死锁了,查看代码在函数下有个 自动锁
第五步:进入CVideoPlayManager::ShowBottomRightText这个函数
f 4
第六步:查看锁被哪个线程拿住了
p m_PortDisplayMapLock
根据截图红框所知,被26169这个线程拿住了,那下一步就是查看26169这个线程。
第七步:打印所有线程
thread apply all bt
然后找到该线程
第八步:切换到线程8
thread 8
第九步:打印线程8的堆栈
bt
第十步:根据上图红框所标示,查看代码
发现第四步和第十步的锁存在问题。。。