[发明专利]程序死锁的检测方法及装置、计算机设备及存储介质在审
申请号: | 202110009021.X | 申请日: | 2021-01-05 |
公开(公告)号: | CN112631790A | 公开(公告)日: | 2021-04-09 |
发明(设计)人: | 李浩 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 北京中知法苑知识产权代理有限公司 11226 | 代理人: | 李明 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 死锁 检测 方法 装置 计算机 设备 存储 介质 | ||
本申请提供了一种程序死锁的检测方法及装置,其中,该方法包括:获取目标程序的多个线程中每个线程的资源调用信息;其中,每个线程的资源调用信息包括:与每个线程对应的目标线程;目标线程为每个线程请求调用的第一目标资源对应的资源锁的当前调用线程;基于多个线程分别对应的资源调用信息,绘制多个线程之间的有向图;其中,有向图包括由多个线程分别构成的多个节点,以及从每个线程指向对应目标线程的有向边;基于有向图,确定目标程序的死锁检测结果,从而能够根据生成的有向图,更加快速地检测出程序是否发生死锁,提高对于程序检测的效率与准确率。
技术领域
本申请涉及程序设计技术领域,具体而言,涉及一种程序死锁的检测方法及装置、计算机设备及存储介质。
背景技术
线程是操作系统中能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。在一个应用程序(Application,APP)运行的时候,可以包含多个同时运行的线程。为了避免多个线程同时对同一共享资源进行操作,当多个线程中的某个线程需要操作某共享资源的时候,需要首先获取该共享资源的资源锁;若该共享资源的资源锁已经被其它线程获得,该线程将等待其他线程释放该资源的资源锁后,方可继续执行后续的操作。当有多个线程彼此等待,就可能会导致线程之间的死锁(Deadlock);而线程死锁问题会引起应用程序运行异常,严重的会导致程序失去响应,最终导致应用程序崩溃。
发明人在实现本公开的过程中发现,目前线程死锁检测方法为:当应用程序的主线程失去响应达到预设的时长,且在预设时长后应用程序崩溃,那么认为此时程序发生了线程死锁。由于应用程序崩溃的原因较多,因此无法确定程序崩溃是否是由于发生了线程死锁而导致的,因此这种检测方式的误判率较高,且由于只有在主线程发生死锁时,才能够发生程序崩溃,因此无法检测到无主线程参与线程死锁问题,即无法检测到次线程的死锁情况,因此该检测方法的效率较低。
发明内容
有鉴于此,本公开实施例至少提供一种程序死锁的检测方法及装置、计算机设备及存储介质。
本公开主要包括以下几个方面:
第一方面,本公开实施例提供一种程序死锁的检测方法,所述程序死锁的检测方法包括:获取目标程序各线程的资源调用信息;其中,所述线程的资源调用信息包括:各线程的当前调用资源、目标调用资源以及所述目标调用资源对应资源锁的目标线程;基于各所述线程的资源调用信息,绘制多个所述线程之间的有向图;其中,所述有向图包括表征线程的多个节点,以及表征基于资源锁建立的线程之间有向关系的有向边;基于所述有向图,确定所述目标程序的死锁检测结果。
在一种可能的实施方式中,所述检测方法还包括:基于多个处于被调用状态的资源锁、所述资源锁对应的资源、以及调用所述资源锁的目标线程,生成资源调用记录;所述获取目标程序各线程的资源调用信息,包括:
基于各所述线程对应的资源调用记录,确定是否存在与所述目标调用资源对应的资源锁;若所述资源调用记录中存在与所述目标调用资源对应的资源锁,基于与所述目标调用资源对应资源锁的当前调用线程,确定各所述线程的资源调用信息。
在一种可能的实施方式中,所述基于各所述线程的资源调用信息,绘制多个所述线程之间的有向图,包括:生成所述目标程序各所述线程分别对应的节点;针对每个节点,根据所述每个节点对应的线程持有的当前调用资源,在资源调用记录中添加所述当前调用资源的资源锁被所述每个节点拥有的记录;确定所述资源调用记录中,是否存在所述每个节点的目标调用资源的资源锁;在存在的情况下,生成从所述每个节点到所述目标节点的有向边。
在一种可能的实施方式中,所述基于所述有向图,确定所述目标程序的死锁检测结果,包括:基于所述有向图,确定所述有向图中是否存在由所述节点、以及所述有向边构成的有向环;若存在,则确定所述目标程序存在线程死锁。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110009021.X/2.html,转载请声明来源钻瓜专利网。