首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于偏序关系的通用并发缺陷检测方法及系统 

申请/专利权人:中国科学院软件研究所

申请日:2021-03-11

公开(公告)日:2024-07-02

公开(公告)号:CN115080374B

主分类号:G06F11/36

分类号:G06F11/36

优先权:

专利状态码:有效-授权

法律状态:2024.07.02#授权;2022.10.11#实质审查的生效;2022.09.20#公开

摘要:本发明提出一种基于偏序关系的通用并发缺陷检测方法及系统,属于软件测试技术领域和软件可靠性领域,可以将多种并发缺陷经过转化得到待测序列,进而进行检测,本发明不局限于某一种特定的并发缺陷,能够检测数据竞争、死锁、原子性违背等多种并发缺陷。能够在多项式时间内得到检测结果,且检测得到的缺陷都是真实的,没有误报情况。

主权项:1.一种基于偏序关系的通用并发缺陷检测方法,其特征在于,包括以下步骤:对待测程序插桩,收集内存访问事件、锁相关事件和分支事件,得到原始执行序列;对原始执行序列进行过滤,通过对原始执行序列中的局部变量和只读变量涉及的事件进行过滤,得到精简执行序列;根据精简执行序列和待测缺陷类别,查找可疑的事件对,生成具有潜在缺陷的待测序列;该待测缺陷类别包括数据竞争、死锁、原子性违背、释放后再使用、空指针解引用和指针多次释放;检测缺陷的方法包括:数据竞争的检测方法为找到符合以下条件的待测事件对:两个事件处于不同线程,属于内存访问事件,至少一个是写事件,操作同一共享变量,持有的锁集不相交;将所述两个事件与在精简执行序列中与所述两个事件紧挨的前后各一个事件交叉排列,构成待测序列,并且所述两个事件之间不存在其他相关事件;如果待测序列能够真实发生,则为数据竞争;对于精简执行序列中包含至少三个线程时,通过邻接闭包确定邻接关系,以此确保两个事件之间不会出现其他相关事件;死锁的检测方法为找到符合以下条件的待测事件对:两个事件处于不同线程,都是锁申请事件,持有的锁集不相交,相互持有对方正在申请的锁;将两个待测事件排到对应申请锁的获得事件后,构成待测序列,若待测序列能够真实发生,则为死锁;原子性违背的检测方法为:对于两个原子执行的事件,找到其他与二者操作同一共享变量的事件,将这个事件排到两个原子事件之间,构成待测序列,若待测序列能够真实发生,则为原子性违背;释放后再使用的检测方法为:将指针释放事件和指针使用事件构成待测序列,且要求两个事件之间不存在同一指针的相关事件;若待测序列能够真实发生,则为释放后再使用缺陷;空指针解引用的检测方法为:将指针置空事件和指针使用事件构成待测序列,且要求两个事件之间不存在同一指针的相关事件;若待测序列能够真实发生,则为空指针解引用缺陷;指针多次释放的检测方法为:将两个指针释放事件构成待测序列,且要求两个事件之间不存在同一指针的相关事件;若待测序列能够真实发生,则为指针多次释放缺陷;根据精简执行序列和待测序列,确定事件集合和偏序集合,该偏序集合包括程序偏序、观察偏序、锁义偏序以及待测序列中的偏序,该程序偏序是指同一个线程的事件间发生顺序与精简执行序列中发生顺序保持一致;将事件集合中的事件和偏序集合中的偏序关系,分别与有向图中的顶点和有向边一一对应,得到有向图,利用该有向图求解偏序闭包;如果图中无环路产生,那么断定待测序列能够真实发生,对应的事件对存在并发缺陷;如果图中产生环路,那么待测序列无法真实发生。

全文数据:

权利要求:

百度查询: 中国科学院软件研究所 一种基于偏序关系的通用并发缺陷检测方法及系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。