[发明专利]一种基于偏序关系的通用并发缺陷检测方法及系统在审
申请号: | 202110265363.8 | 申请日: | 2021-03-11 |
公开(公告)号: | CN115080374A | 公开(公告)日: | 2022-09-20 |
发明(设计)人: | 蔡彦;云昊 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 李文涛 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 关系 通用 并发 缺陷 检测 方法 系统 | ||
本发明提出一种基于偏序关系的通用并发缺陷检测方法及系统,属于软件测试技术领域和软件可靠性领域,可以将多种并发缺陷经过转化得到待测序列,进而进行检测,本发明不局限于某一种特定的并发缺陷,能够检测数据竞争、死锁、原子性违背等多种并发缺陷。能够在多项式时间内得到检测结果,且检测得到的缺陷都是真实的,没有误报情况。
技术领域
本发明属于软件测试技术领域和软件可靠性领域,特别涉及多线程程序中并发缺陷检测方法及系统。
背景技术
随着多核CPU的发展,并发程序以资源利用率高、执行速度快等优势被广泛应用。但是并发程序各线程间的调度情况不确定,如果程序中的同步出现错误时,就会引发并发缺陷,导致系统崩溃,造成经济损失,甚至危及人身安全。其根本原因在于并发程序与串行程序的程序结构不同,线程交错空间大。因此,并发程序的开发、测试、重现过程都面临着很大的挑战。
常见的并发缺陷可以分为三类,数据竞争、死锁、原子性违背。(1)数据竞争:两个或两个以上的线程对同一共享变量同时进行操作,其中至少有一个操作是写操作,这些操作就构成了数据竞争。(2)死锁:一组线程中的每个线程都因为持有一部分资源,并申请这组线程中其他线程持有的资源而被阻塞,那么这组线程就处于死锁状态。(3)原子性违背:开发者希望一个指令序列是原子的,如果在指令序列执行过程中,其他线程共享访问了指令序列中涉及的数据,那么就构成了原子性违背。除此之外,并发缺陷还包括指针相关的缺陷,释放后再使用、空指针解引用、指针多次释放等。
目前的并发缺陷检测技术主要可以分为两类,静态检测技术和动态检测技术。静态检测技术是在程序的源代码上进行分析并检测,常见的技术有数据流分析、符号执行等。动态检测技术是利用程序的运行时信息进行检测,可以划分为三类,基于锁集的、运行时检测分析、基于偏序的。基于锁集的技术要求访问共享变量的操作被同样的锁保护,这类技术会产生误报。运行时检测分析技术通过穷尽所有合法的线程交错方式来进行检测,这类技术面临状态空间爆炸问题。基于偏序的技术首先收集程序的运行时信息。运行时信息被称为执行序列,记录了各线程的操作情况和调度顺序。执行序列中的一个操作被称为一个事件。然后,基于偏序的技术在这些事件间建立偏序关系,若两个事件间没有偏序关系,则认为是可并发事件并进一步检测。基于偏序的技术没有误报产生,且大部分可以在多项式时间内得到结果,但是却存在漏报问题。除了在检测能力上的差异,现有的检测技术一般针对于某一种特定的并发缺陷设计,很难将技术扩展并应用到其他种类的并发缺陷上。
发明内容
本发明的目的是提供一种基于偏序关系的通用并发缺陷检测方法及系统,能够检测一个事件序列能否真实发生。该方法不局限于某一种特定的并发缺陷,能够检测数据竞争、死锁、原子性违背等多种并发缺陷。该方法能够在多项式时间内得到检测结果,且检测得到的缺陷都是真实的,没有误报情况。
为实现上述目的,本发明采用以下技术方案:
一种基于偏序关系的通用并发缺陷检测方法,包括以下步骤:
对待测程序插桩,收集内存访问事件、锁相关事件和分支事件,得到原始执行序列;
对原始执行序列进行过滤,得到精简执行序列;
根据精简执行序列和待测缺陷类别,查找可疑的事件对,生成具有潜在缺陷的待测序列;
根据精简执行序列和待测序列,确定事件集合和偏序集合;
将事件集合中的事件和偏序集合中的偏序关系,分别与有向图中的顶点和有向边一一对应,得到有向图,利用该有向图求解偏序闭包;如果图中无环路产生,那么断定待测序列能够真实发生,对应的事件对存在并发缺陷;如果图中产生环路,那么待测序列无法真实发生。
进一步地,分支事件包括显示条件分支事件和面向对象编程中的隐式分支事件。
进一步地,通过对原始执行序列中的局部变量和只读变量涉及的事件进行过滤,得到精简执行序列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110265363.8/2.html,转载请声明来源钻瓜专利网。