CN109522097B - 一种基于自适应随机测试的并发缺陷检测方法 - Google Patents
一种基于自适应随机测试的并发缺陷检测方法 Download PDFInfo
- Publication number
- CN109522097B CN109522097B CN201811184521.1A CN201811184521A CN109522097B CN 109522097 B CN109522097 B CN 109522097B CN 201811184521 A CN201811184521 A CN 201811184521A CN 109522097 B CN109522097 B CN 109522097B
- Authority
- CN
- China
- Prior art keywords
- program
- concurrent
- defect
- execution
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
- G06F11/143—Reconfiguring to eliminate the error with loss of software functionality
Abstract
本发明公开了一种基于自适应随机测试的并发缺陷检测方法,包括:获取一条结果为正确的完整序列C0,对每个执行过程中的状态si,展开它的可执行集合记为Enabled(si),表示在程序状态为si时,下一步能够触发执行的所有语句集合;计算完整序列C0和每一个已执行子序列之间的距离dist,选择最远的N个子序列继续展开,执行其状态下对应Enabled(si)集合中的某一个语句,其他的子序列会被删除,不再继续执行后续程序语句;当程序执行结束时,会搜索得到一个resultSeqs集合,该集合存储了程序执行中的所有结果,另一个集合correctSeqs存储执行结果为正确的完整序列,用于在搜索的过程中计算距离;执行下一次的迭代搜索,直到找出错误序列,检测出了并发缺陷,然后记下P‑度量的值或程序全部执行完没有检查到缺陷。
Description
技术领域
本发明涉及并发缺陷检测领域,尤其涉及一种基于自适应随机测试的并发缺陷检测方法。
背景技术
随着现代科学技术的发展,计算机芯片技术的不断提高,多核CPU已经成为主流,多线程程序的应用领域也越来越广泛,包括各种操作系统,各类应用程序等等。多线程程序能够并发执行多个线程,提高了程序执行的效率,但同时也增加了并发错误在程序中存在的可能性。由于线程调度交错执行的不确定性,多线程错误是很难被发现的,这会直接影响软件调试和后期维护的代价和效率。多线程缺陷是由多个线程之间由于线程调度和协作出现偏差导致的错误,线程之间的错误协作会引起严重的缺陷以致造成巨大的经济甚至是生命的损失,例如:在2003年8月14日,酷暑中的美国东北部和加拿大部分地区发生大面积停电事故,给当地交通、通信和居民生活造成严重影响。两天后纽约市才全部恢复正常供电。事后专家分析,停电是由电力系统中出现的多线程数据竞争缺陷,导致输电系统发生故障造成的。这也引起了学术界和工业界对多线程缺陷的重视,尤其是在学业界,针对多线程程序的研究已经成为近些年的热点问题。对多线程缺陷的研究可以主要分为三个方面:缺陷预测、缺陷发现定位和缺陷修复,目前多线程的缺陷定位(software fault localization,简称SFL)和缺陷自动修复(automatic program repair,简称APR)是软件工程领域比较活跃的研究方向。
并发缺陷的暴露在并发缺陷的研究工作中有着举重若轻的地位,因为它是并发缺陷检测、规避和修复的前提准备。如果找到一个能够高效且全面地暴露多线程缺陷的方法对多线程缺陷的研究及提高软件质量方面有着重要的意义。压力测试是一种用于暴露并发缺陷的传统方法,但它是不充分的,因为压力测试是基于一个相同的输入,重复测试相似的线程。因此它的效率较低而且很难发现多个错误。和顺序程序不同,多线程缺陷的触发通常需要两个条件的结合,一是需要能够发现缺陷的正确输入集合,二是需要相应的线程交互。
上述并发缺陷很难被暴露的原因主要有:(1)线程交互空间巨大,并且随着代码行数的增加,线程交错空间是呈指数倍增长的。(2)并发缺陷通常隐藏在某些不常见或者是特殊的内存读写模式中。(3)如果没有额外的线程交错干扰,多线程程序通常都会按照相似的交错模式执行。
并发缺陷的定位和检测工作是非常耗时的,而且这一过程通常都需要程序开发人员有着丰富的调试经验。自动化的并发缺陷检测技术能够帮助程序开发人员快速而准确地找到并发缺陷,能够节省大量人力物力。经过多年的研究,学者们已经设计了很多行之有效的并发缺陷检测方法,这些方法中有的只能检测一种类型的多线程缺陷[1-3],有的可以检测多种缺陷[4-6]。其中国外学者对这一方面的研究起步较早,已经有大量的成果[7-9],而国内学者对这一方面的研究起步较晚,但近几年也取得了一些成果[10-14]。
但这些方法仍有一些不足之处,如检测方法的误报问题、漏报问题及运行开销问题。究其原因,主要有如下两个方面:(1)并发程序运行空间巨大,约简方法有待优化。(2)线程执行的顺序有待进一步优化。
参考文献
[1]Sen K.Race directed random testing of concurrent programs[J].ACMSIGPLAN Notices,2008,43(6):11-21.
[2]Park S,Lu S,Zhou Y.CTrigger:exposing atomicity violation bugs fromtheir hiding places[J].Acm Sigarch Computer Architecture News,2009,37(1):25-36.
[3]Joshi P,Park C S,Sen K,et al.A randomized dynamic program analysistechnique for detecting real deadlocks[C]//ACM Sigplan Conference onProgramming Language Design and Implementation.ACM,2009:110-120.
[4]Yu J,Narayanasamy S,Pereira C,et al.Maple:a coverage-driventesting tool for multithreaded programs[C]//Acm International Conference onObject Oriented Programming Systems Languages&Applications.ACM,2012:485-502.
[5]Huang J,Zhang C.Persuasive prediction of concurrency accessanomalies[C]//International Symposium on Software Testing and Analysis.ACM,2011:144-154.
[6]Shi Y,Park S,Yin Z,et al.Do I use the wrong definition?:DeFuse:definition-use invariants for detecting concurrency and sequential bugs[C]//ACM International Conference on Object Oriented Programming Systems Languagesand Applications.ACM,2010:160-174.
[7]Voung J W,Jhala R,Lerner S.RELAY:static race detection on millionsof lines of code[C]//The,Joint Meeting of the European Software EngineeringConference and the ACM Sigsoft Symposium on the Foundations of SoftwareEngineering.ACM,2007:205-214.
[8]Engler D,Ashcraft K.RacerX:effective,static detection of raceconditions and deadlocks[C]//Nineteenth Acm Symposium on Operating SystemsPrinciples.ACM,2003:237-252.
[9]Qadeer S,Wu D.KISS:keep it simple and sequential[C]//ACM Sigplan2004Conference on Programming Language Design and Implementation.ACM,2004:14-24.
[10]付修锋,邢彦,陈丽容.并发错误动态检测方法[J].计算机工程与设计,2016,37(3):670-674.
[11]王榕.基于不变量的并发错误检测技术[D].浙江理工大学,2016.
[12]王笛.一种对象粒度和上下文敏感的Java程序并发错误检测框架(Jacob)[D].复旦大学,2012.
[13]封煜佳.基于JDT的并发程序错误模式检测工具设计与实现[D].南京大学,2011.
[14]郑炜,黄月明,吴潇雪,等.基于本体的并发错误测试工具推荐方法研究[J].计算机科学,2017(11):202-206.
发明内容
本发明提供了一种基于自适应随机测试的并发缺陷检测方法,本发明基于自适应随机调度的思想控制多线程的执行,解决并发缺陷的检测面临着效率低、误报和漏报率高、额外开销较大等问题,详见下文描述:
一种基于自适应随机测试的并发缺陷检测方法,所述方法包括以下步骤:
获取一条结果为正确的完整序列C0,对每个执行过程中的状态si,展开它的可执行集合记为Enabled(si),表示在程序状态为si时,下一步能够触发执行的所有语句集合;
计算完整序列C0和每一个已执行子序列之间的距离dist,选择最远的N个子序列继续展开,执行其状态下对应Enabled(si)集合中的某一个语句,其他的子序列会被删除,不再继续执行后续程序语句;
当程序执行结束时,会搜索得到一个resultSeqs集合,该集合存储了程序执行中的所有结果,另一个集合correctSeqs存储执行结果为正确的完整序列,用于在搜索的过程中计算距离;
执行下一次的迭代搜索,直到找出错误序列,检测出了并发缺陷,然后记下P-度量的值或程序全部执行完没有检查到缺陷。
进一步地,所述方法还包括:
如果在搜索过程中程序报错了,则为检测到程序缺陷,记下P-度量的值;
如果resultSeqs集合中有结果为正确的序列,则把它加入到correctSeqs集合中。
其中,所述距离dist具体为:
dist(A,B)=|PA-PB|
其中,两个序列A和B,它们的内存读写模式集合分别为PA和PB。
具体实现时,所述方法在简单随机算法的基础上,加入自适应对线程调度进行控制,利用已执行序列的内存读写模式信息对之后的线程调度进行指导,使多线程执行空间得到更广范围的遍历。
其中,所述方法满足两个假设条件:
(1)程序的输入是给定的,只需要找出该输入条件下产生错误的调度;
(2)至少知道一个执行结果为正确的完整序列,这个序列能够通过随机执行程序来获得。
本发明提供的技术方案的有益效果是:
1、本发明提出了一种并发缺陷的快速检测方法,以弥补传统并发缺陷检测中存在的问题,提高了并发缺陷检测的速度;
2、本发明检测到的并发缺陷可作为后续并发缺陷定位和修复的输入,为后续的基于并发缺陷模式的定位和修复打下良好的基础;
3、本发明通过实验证明了该并发缺陷检测方法的有效性,并讨论了阈值对该方法的影响,给出了较为恰当的阈值建议。
附图说明
图1为并发缺陷中常见的17种内存读写模式的示意图;
图2为一种基于自适应随机测试的并发缺陷检测方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面对本发明实施方式作进一步地详细描述。
在当前的国内外针对并发缺陷的研究中,将并发缺陷的发生原因抽象为不同的并发缺陷模式(pattern)是一种成熟且常用的方法。所谓并发缺陷模式,就是忽略具体的共享变量以及执行位置等信息,而将导致并发缺陷的共享变量访问顺序抽象为多个有先后顺序的变量、线程、操作三元组。三元组中的变量、线程并不代表某个具体的变量或者线程,而是代表并发缺陷模式的规则,三元组的操作分为读与写两种。并发缺陷模式的定义具有很高的抽象性,Park在Falcon中将非死锁类型的单变量并发缺陷抽象为8中不同并发缺陷模式,并在之后的Unicorn中针对多变量并发缺陷将并发缺陷模式扩展为17种。
为了方便说明,本发明实施例将这些模式用符号语言进行表示。定义一个共享变量对内存的一次访问bt,s(x):其中,b代表对内存访问的类型,读(R)或是写(W);t是执行访问的线程;s代表执行这次访问的程序语句;x是共享变量。例如,Rt,s1(x)表示线程t的语句s1对共享变量x进行了读访问。图1列出了并发缺陷中常见的17种内存读写模式。
并发缺陷是由多个线程之间由于线程调度和协作出现偏差导致的错误,这些调度通常会形成特定的读写模式。正是这些特定的读写模式导致了多线程程序中出现原子性违背、顺序违背或是数据竞争错误。
实施例1
为了解决上述问题,本发明实施例提出了一种基于自适应随机测试的并发缺陷检测方法,参见图2,该方法包括:
本发明实施例提出的自适应随机调度方法ARS(Adaptive Random Scheduling)在搜索的过程中需要通过比较序列间距离的远近来决定调度点。这里距离的定义是基于这17种并发缺陷模式的,它指的是两个执行序列间不同的内存读写模式个数。
设有两个序列A和B,它们的内存读写模式集合分别为PA和PB,则其距离的定义如公式(1)所示:
dist(A,B)=|PA-PB|。 (1)
这些模式的提取需要用到程序执行过程中的一些信息,例如:内存访问对(memory-access pairs),程序执行结果等,这些可以通过现有的一些工具(JPF等)得到。然后将访问对组合成图1提到的那17种并发缺陷模式,计算出这些模式的可疑性并进行排序,最终得到执行序列中存在的模式。
ARS是在简单随机算法的基础上,加入自适应的方法对线程调度进行控制,利用已执行序列的内存读写模式信息对之后的线程调度进行指导,使多线程执行空间得到更广范围的遍历,从而提高检测并发缺陷的效率,使其能够更快地检测出错误。
ARS方法有两个假设条件:
(1)程序的输入是给定的,只需要找出该输入条件下产生错误的调度。
(2)至少知道一个执行结果为正确的完整序列。这个序列能够通过随机执行程序来获得。
参见图2,本方法的执行步骤如下:
101:用简单随机算法随机执行程序得到一条结果为正确的完整序列C0,完整序列C0是程序能够完整执行的语句顺序,例如,C0=1-2-3-4-5-6,代表该程序从语句1开始执行,再执行语句2,然后执行语句3,以此类推直到执行完语句6,程序执行结束。对于每个执行过程中的状态si,展开它的可执行集合记为Enabled(si),表示在程序状态为si时,下一步能够触发执行的所有语句集合;
102:计算完整序列C0和每一个已执行子序列之间的距离dist,例如,完整序列C0=1-2-3-4-5-6,已执行子序列为S1=1-2,则dist(C0,S1)=|PC0-PS1|。计算出完整序列与所有已执行子序列间的距离后,选择最远的N个子序列继续展开,执行其状态下对应Enabled(si)集合中的某一个语句,其他的子序列会被删除,不再继续执行后续程序语句;
其中,N是一个阈值,它代表每次搜索最多有N个子序列能够被保留。
103:ARS的搜索类似于广度优先算法,当程序执行结束时,会搜索得到一个resultSeqs集合,该集合存储了程序执行中的所有结果。另一个集合correctSeqs存储的是执行结果为正确的完整序列,用于在搜索的过程中计算距离;
其中,如果在搜索过程中程序报错了,如检测到执行结果不正确,抛出异常等情况,则为检测到程序缺陷,记下P-度量的值。
在程序执行的过程中,可能会有些能够正常执行没有报错的序列,它们被存放到了resultSeqs集合当中。如果resultSeqs集合中有结果为正确的序列,则把它加入到correctSeqs集合中。
104:执行下一次的迭代搜索,直到找出错误序列,检测出了并发缺陷,然后记下P-度量的值或程序全部执行完没有检查到缺陷。
综上所述,本发明实施例在传统简单随机测试算法的基础上加入自适应随机测试的思想作为指导,从而使程序跳出原有的搜索圈,扩大了程序的搜索范围,能够更快的检测到并发缺陷。
在具体实施的过程中,将原程序和一个已知运行结果为正确的序列作为输入,最终的运行结果会输出一个包含缺陷的错误调度序列,这个结果可以用于后续的并发缺陷定位及修复工作中。
实施例2
下面结合表1-表4对实施例1中的方案进行可行性验证,详见下文描述:
本发明实施例提出一个新的测量量——P-度量。它表示在同一个输入的情况下,检测到第一个并发缺陷时程序运行的次数。P-度量能够更加直观地反映检测方法的有效性。P-度量的值越低表示所用的检测方法越有效,因为这意味着暴露第一个缺陷需要更少的执行次数。在实际工程中,当检测到缺陷时,通常会停止测试开始进行调试。测试阶段会在缺陷修复后才继续恢复。因此,用P-度量作为方法的有效性的评测指标更加直观,也更贴合实际情况。
本发明实施例将本方法与简单随机算法的结果进行了对比。简单随机算法是对线程调度进行人为控制,在每一个调度点上从可执行线程集合中随机选取一个进行调度,实现了线程调度层面上的随机。这就使得程序的执行范围变大,增加了并发缺陷被检测到的可能性。简单随机算法简单、直观,在一定程度上提高了并发缺陷检测的效率,但是它存在冗余和信息浪费的问题。简单随机方法可能运行多次找到的都是同一个错误,没有有效地利用已执行序列的信息。本方法是在这个问题上提出自适应的优化策略,充分利用已执行序列的内存读写模式信息,使并发缺陷能够更快地被检测出来。
一、测评数据集
本发明实施例采用的实证研究使用程序都是近些年并发缺陷研究中常用的一些。一共有14个实验程序,并且每一个程序都有一个已知的错误。实证研究中测评程序的具体信息如表1所示:
表1程序信息表
本发明实施例在JPF(Java Path Finder)工具上实现了本方法,因为JPF能够对线程调度进行主动控制。JPF作为一个模型检测的工具,其内部实现了一个运行在本机Java虚拟机之上的、可以被完全控制的Java虚拟机。因此,使用JPF进行编程能够对测试程序的线程执行实现完全的监控和自由的调度。本实验利用JPF能够自定线程调度函数的特性,对运行于JPF之上的测试程序调度进行自适应的调度,实现本方法。
其中,阈值N的取值是从1到6,对于每一个值,将14个实验程序在JPF上分别用ARS和SR方法运行100次,记录每次实验的P-度量值,并计算这100结果的平均值。
二、结果分析
本发明实施例计算了不同算法条件下P-度量的平均值,表2到4是实验的数据结果。从这些数据中能够看出,阈值N对ARS的缺陷检测效率具有一定的影响。当N=1时效果是最差的,其他5个值的结果相差不多。因为当N为1时,ARS在每次进行节点展开时都自保留一个,这样的搜索空间会很小,这与本方法的设计初衷是相违背的。N的值越大,需要继续展开的分支就越多,使得算法的开销会增加。结果表明,当N为2,3,4,5,6时的实验效果相差不多,所以将N的值设置为2是比较合适的,这样能够使ARS具有较高的检测效率和较低的成本开销。
表4是ARS和SRT的实验结果对比。本方法只比较了当N=2时的情况,因为当N为其他值时的实验效果是相似的。表中的最后一列表示的是检测到第一个缺陷时程序执行次数减少的百分比,是用(SRT的平均P-度量值–ARS的平均P-度量值)/SRT的平均P-度量值。与SRT相比,ARS检测并发缺陷的速度平均加快了20%到30%,很大程度上提高了并发缺陷的检测速度。
表2不同阈值N的平均值
表3不同阈值N的标准差
表4 ARS和SRT的实证研究比较
本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种基于自适应随机测试的并发缺陷检测方法,其特征在于,所述方法包括以下步骤:
获取一条结果为正确的完整序列C0,对每个执行过程中的状态si,展开它的可执行集合记为Enabled(si),表示在程序状态为si时,下一步能够触发执行的所有语句集合;
计算完整序列C0和每一个已执行子序列之间的距离dist,选择最远的N个子序列继续展开,执行其状态下对应Enabled(si)集合中的某一个语句,其他的子序列会被删除,不再继续执行后续程序语句;N是一个阈值它代表每次搜索最多有N个子序列能够被保留;
当程序执行结束时,会搜索得到一个resultSeqs集合,该集合存储了程序执行中的所有结果,另一个集合correctSeqs存储执行结果为正确的完整序列,用于在搜索的过程中计算距离;
执行下一次的迭代搜索,直到找出错误序列,检测出了并发缺陷,然后记下P-度量的值或程序全部执行完没有检查到缺陷;P-度量表示在同一个输入的情况下,检测到第一个并发缺陷时程序运行的次数;
所述距离dist具体为:
dist(A,B)=|PA-PB|
其中,两个序列A和B,它们的内存读写模式集合分别为PA和PB;
所述方法满足两个假设条件:
(1)程序的输入是给定的,只需要找出该输入条件下产生错误的调度;
(2)至少知道一个执行结果为正确的完整序列,这个序列能够通过随机执行程序来获得。
2.根据权利要求1所述的一种基于自适应随机测试的并发缺陷检测方法,其特征在于,所述方法还包括:
如果在搜索过程中程序报错了,则为检测到程序缺陷,记下P-度量的值;
如果resultSeqs集合中有结果为正确的序列,则把它加入到correctSeqs集合中。
3.根据权利要求1-2中任一权利要求所述的一种基于自适应随机测试的并发缺陷检测方法,其特征在于,
所述方法在简单随机算法的基础上,加入自适应对线程调度进行控制,利用已执行序列的内存读写模式信息对之后的线程调度进行指导,使多线程执行空间得到更广范围的遍历。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811184521.1A CN109522097B (zh) | 2018-10-11 | 2018-10-11 | 一种基于自适应随机测试的并发缺陷检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811184521.1A CN109522097B (zh) | 2018-10-11 | 2018-10-11 | 一种基于自适应随机测试的并发缺陷检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522097A CN109522097A (zh) | 2019-03-26 |
CN109522097B true CN109522097B (zh) | 2023-03-07 |
Family
ID=65771748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811184521.1A Active CN109522097B (zh) | 2018-10-11 | 2018-10-11 | 一种基于自适应随机测试的并发缺陷检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522097B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813786A (zh) * | 2019-04-12 | 2020-10-23 | 阿里巴巴集团控股有限公司 | 缺陷检测/处理方法和装置 |
CN112835686B (zh) * | 2019-11-22 | 2024-03-08 | 北京金山云网络技术有限公司 | 一种时序验证方法、验证装置、电子设备及存储介质 |
CN112860224B (zh) * | 2019-11-28 | 2023-12-12 | 北京达佳互联信息技术有限公司 | 一种函数执行环境构建方法、装置、电子设备及存储介质 |
CN111858361B (zh) * | 2020-07-23 | 2023-07-21 | 中国人民解放军国防科技大学 | 一种基于预测和并行验证策略的原子性违例缺陷检测方法 |
CN113468047B (zh) * | 2021-06-17 | 2022-05-17 | 天津大学 | 基于启发式规则的并发式自适应随机测试方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899137A (zh) * | 2015-05-22 | 2015-09-09 | 华中师范大学 | 一种并发程序的缺陷模式发现方法 |
CN105760295A (zh) * | 2015-12-28 | 2016-07-13 | 天津大学 | 基于搜索算法的多缺陷定位方法 |
CN106529304A (zh) * | 2016-10-27 | 2017-03-22 | 南京大学 | 一种安卓应用并发漏洞检测系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135139B2 (en) * | 2012-06-27 | 2015-09-15 | Intel Corporation | Methods and systems to identify and reproduce concurrency violations in multi-threaded programs using expressions |
-
2018
- 2018-10-11 CN CN201811184521.1A patent/CN109522097B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899137A (zh) * | 2015-05-22 | 2015-09-09 | 华中师范大学 | 一种并发程序的缺陷模式发现方法 |
CN105760295A (zh) * | 2015-12-28 | 2016-07-13 | 天津大学 | 基于搜索算法的多缺陷定位方法 |
CN106529304A (zh) * | 2016-10-27 | 2017-03-22 | 南京大学 | 一种安卓应用并发漏洞检测系统 |
Non-Patent Citations (2)
Title |
---|
"基于多目标优化的软件缺陷预测特征选择方法";陈翔,沈宇翔,孟少卿等;《计算机科学与探索》;20171016;1420-1433 * |
"并发缺陷暴露、检测与规避研究综述";苏小红,禹振,王甜甜等;《计算机学报》;20141119;第38卷(第11期);2215-2233 * |
Also Published As
Publication number | Publication date |
---|---|
CN109522097A (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522097B (zh) | 一种基于自适应随机测试的并发缺陷检测方法 | |
Sen | Effective random testing of concurrent programs | |
Ng et al. | Towards formalizing UML state diagrams in CSP | |
CN109635568B (zh) | 一种基于静态分析和模糊测试相结合的并发漏洞检测方法 | |
CN102063328A (zh) | 一种用于检测中断驱动型程序数据竞争的系统 | |
CN114428733A (zh) | 基于静态程序分析与模糊测试的内核数据竞争检测方法 | |
CN112506801A (zh) | 一种基于注解的模糊测试方法 | |
US8276021B2 (en) | Concurrency test effectiveness via mutation testing and dynamic lock elision | |
Arcaini et al. | Combining model-based testing and runtime monitoring for program testing in the presence of nondeterminism | |
Chiang et al. | Formal analysis of GPU programs with atomics via conflict-directed delay-bounding | |
CN110059014B (zh) | 一种并发程序数据竞争指令级定位方法 | |
CN109522207B (zh) | 一种基于约束求解的原子集合序列化违背探测方法 | |
CN106294169A (zh) | 一种基于符号执行虚拟机的数据竞争检测与重放方法 | |
CN116305162A (zh) | 一种基于模糊测试和静态分析的并发程序漏洞检测方法 | |
CN109885489B (zh) | 驱动程序中数据竞争检测方法及装置 | |
US8607204B2 (en) | Method of analyzing single thread access of variable in multi-threaded program | |
Long et al. | A method for verifying concurrent Java components based on an analysis of concurrency failures | |
Xu et al. | PVcon: localizing hidden concurrency errors with prediction and verification | |
CN110851353B (zh) | 一种基于Delta Debugging与约束求解的并发程序缺陷定位方法 | |
CN111858361B (zh) | 一种基于预测和并行验证策略的原子性违例缺陷检测方法 | |
Sun et al. | A method for predicting two-variable atomicity violations | |
WO2014124691A1 (en) | Interleaving coverage criteria oriented testing of multi-threaded applications | |
CN110795327B (zh) | 一种基于加权依赖图的并发程序执行轨迹静态简化方法 | |
CN116881919B (zh) | 漏洞挖掘方法、装置、电子设备及存储介质 | |
Parízek et al. | Incremental Verification of Multithreaded Programs by Checking Interleavings for Pairs of Threads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |