一种程序并发缺陷检测方法、装置、存储介质及电子设备制造方法及图纸

技术编号:37318344 阅读:16 留言:0更新日期:2023-04-21 22:59
本发明专利技术公开了一种程序并发缺陷检测方法、装置、存储介质及电子设备,利用自动劫持工具获取待检测程序中的同步语句;获取劫持函数并利用所述劫持函数控制所述同步语句的执行;当所述同步语句执行,判断所述待检测程序中的缺陷是否暴露;当所述待检测程序中的缺陷未暴露,记录所述同步语句的执行轨迹;利用轻量级预测分析对所述执行轨迹进行分析,确定所述待检测程序中所述缺陷的位置。本发明专利技术利用轻量级预测分析,避免了为每一个同步事件建立约束表达式进行求解,而是考虑对检测阻塞缺陷更加重要的事件进行分析,通过循环依赖环而非盲目枚举来计算可能阻塞位置。因此,通过实施本发明专利技术,降低了依赖性,提高了检测效果。提高了检测效果。提高了检测效果。

【技术实现步骤摘要】
一种程序并发缺陷检测方法、装置、存储介质及电子设备


[0001]本专利技术涉及计算机应用
,具体涉及一种程序并发缺陷检测方法、装置、存储介质及电子设备。

技术介绍

[0002]Go语言是世界范围内最热门的语言之一,由于它编译速度快、具有静态类型、内存安全和简便的并发编程模型等特点,它常被用于编写云服务后端的高并发程序。Go语言提供了多种并发原语,从而帮助开发者更容易地编写并发程序,但是如若这些并发原语使用不当,那么程序就更容易产生并发缺陷。Go语言中不同的轻量级线程交替时机使得这些并发缺陷难以被找到,同样的程序在测试环境可能表现一切正常,但是到了生产环境却暴露出并发缺陷。这些并发缺陷中以阻塞缺陷最具代表性,由于Go程序中的路径条件和事件交替顺序受到并发的影响,所以阻塞缺陷在测试环境难以被找到。
[0003]现有技术中,静态检测工具GCatch在每个channel的作用域中寻找互相依赖的同步事件,并且枚举这些同步事件所在的路径的组合,从而静态构造出可能的执行轨迹,最后建立约束模型求解潜在的阻塞缺陷;动态检测工具GFuzz强制Go语言中可与多个channel进行通信的结构中的case顺序,以此来对其影响的控制流进行模糊测试,在运行时GFuzz通过监控channel的引用来寻找程序是否陷入了阻塞的状态。
[0004]但是,静态检测方法需要枚举的状态空间太大,为了在有效时间内计算出结果,GCatch需要对程序进行大量的剪枝(包括数据读写、函数、路径等),从而产生漏报和误报;动态检测方法通过不同的case来触发程序中的不同路径,但是在检测并发缺陷时,仍然依赖于程序在运行时恰好触发该缺陷,依赖性较强,检测结果较差。

技术实现思路

[0005]有鉴于此,本专利技术实施例提供了涉及一种程序并发缺陷检测方法、装置、存储介质及电子设备,以解决现有技术中阻塞缺陷方法容易产生漏报和误报,且依赖性较强,检测结果较差的技术问题。
[0006]本专利技术提出的技术方案如下:
[0007]第一方面,本专利技术实施例提供一种程序并发缺陷检测方法,该程序并发缺陷检测方法包括:利用自动劫持工具获取待检测程序中的同步语句;获取劫持函数并利用所述劫持函数控制所述同步语句的执行;当所述同步语句执行,判断所述待检测程序中的缺陷是否暴露;当所述待检测程序中的缺陷未暴露,记录所述同步语句的执行轨迹;利用轻量级预测分析对所述执行轨迹进行分析,确定所述待检测程序中所述缺陷的位置。
[0008]结合第一方面,在第一方面的一种可能的实现方式中,当所述同步语句执行,判断所述待检测程序中的缺陷是否暴露,包括:当所述同步语句执行,在所述同步语句中注入延迟;利用预设在线检测机制判断注入延迟后的所述同步语句是否发生错误;根据判断结果确定所述待检测程序中的缺陷是否暴露。
[0009]结合第一方面,在第一方面的另一种可能的实现方式中,利用轻量级预测分析对所述执行轨迹进行分析,确定所述待检测程序中所述缺陷的位置,包括:当所述执行轨迹发生错误,根据所述执行轨迹中发生错误的位置确定所述待检测程序中所述缺陷的位置。
[0010]结合第一方面,在第一方面的又一种可能的实现方式中,利用轻量级预测分析对所述执行轨迹进行分析,确定所述待检测程序中所述缺陷的位置,还包括:当所述执行轨迹未发生错误,根据所述同步语句的执行结果判断所述待检测程序中所述同步语句的覆盖率是否提高;根据判断结果对所述同步语句中注入的延迟进行处理;根据处理结果确定所述待检测程序中所述缺陷的位置。
[0011]结合第一方面,在第一方面的又一种可能的实现方式中,根据判断结果对所述同步语句中注入的延迟进行处理,包括:当所述覆盖率提高,对所述延迟进行标记,得到目标延迟;将所述目标延迟加入预设种子队列,经过种子选择,对所述目标延迟进行变异处理。
[0012]结合第一方面,在第一方面的又一种可能的实现方式中,当所述同步语句执行,判断所述待检测程序中的缺陷是否暴露之后,所述方法还包括:当所述待检测程序中的缺陷暴露,利用预设在线检测工具捕获所述缺陷。
[0013]第二方面,本专利技术实施例提供一种程序并发缺陷检测装置,该程序并发缺陷检测装置包括:获取模块,用于利用自动劫持工具获取待检测程序中的同步语句;控制模块,用于获取劫持函数并利用所述劫持函数控制所述同步语句的执行;判断模块,用于当所述同步语句执行,判断所述待检测程序中的缺陷是否暴露;记录模块,用于当所述待检测程序中的缺陷未暴露,记录所述同步语句的执行轨迹;分析确定模块,用于利用轻量级预测分析对所述执行轨迹进行分析,确定所述待检测程序中所述缺陷的位置。
[0014]结合第二方面,在第二方面的一种可能的实现方式中,所述第一判断模块包括:注入子模块,用于当所述同步语句执行,在所述同步语句中注入延迟;第一判断子模块,用于利用预设在线检测机制判断注入延迟后的所述同步语句是否发生错误;第一确定子模块,用于根据判断结果确定所述待检测程序中的缺陷是否暴露。
[0015]第三方面,本专利技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行如本专利技术实施例第一方面及第一方面任一项所述的程序并发缺陷检测方法。
[0016]第四方面,本专利技术实施例提供一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行如本专利技术实施例第一方面及第一方面任一项所述的程序并发缺陷检测方法。
[0017]本专利技术提供的技术方案,具有如下效果:
[0018]本专利技术实施例提供的程序并发缺陷检测方法,利用自动劫持工具获取待检测程序中的同步语句;获取劫持函数并利用所述劫持函数控制所述同步语句的执行;当所述同步语句执行,判断所述待检测程序中的缺陷是否暴露;当所述待检测程序中的缺陷未暴露,记录所述同步语句的执行轨迹;利用轻量级预测分析对所述执行轨迹进行分析,确定所述待检测程序中所述缺陷的位置。本专利技术利用轻量级预测分析,避免了为每一个同步事件建立约束表达式进行求解,而是考虑对检测阻塞缺陷更加重要的事件进行分析,通过循环依赖环而非盲目枚举来计算可能阻塞位置。因此,通过实施本专利技术,降低了依赖性,提高了检测
效果。
附图说明
[0019]为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1是根据本专利技术实施例提供的一种程序并发缺陷检测方法的流程图;
[0021]图2是根据本专利技术实施例提供的一种程序并发缺陷检测方法的具体流程示意图;
[0022]图3是根据本专利技术实施例提供的一种程序并发缺陷检测装置的结构框图;
[0023]图4是根据本专利技术实施例提供的计算本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序并发缺陷检测方法,其特征在于,所述方法包括:利用自动劫持工具获取待检测程序中的同步语句;获取劫持函数并利用所述劫持函数控制所述同步语句的执行;当所述同步语句执行,判断所述待检测程序中的缺陷是否暴露;当所述待检测程序中的缺陷未暴露,记录所述同步语句的执行轨迹;利用轻量级预测分析对所述执行轨迹进行分析,确定所述待检测程序中所述缺陷的位置。2.根据权利要求1所述的方法,其特征在于,当所述同步语句执行,判断所述待检测程序中的缺陷是否暴露,包括:当所述同步语句执行,在所述同步语句中注入延迟;利用预设在线检测机制判断注入延迟后的所述同步语句是否发生错误;根据判断结果确定所述待检测程序中的缺陷是否暴露。3.根据权利要求2所述的方法,其特征在于,利用轻量级预测分析对所述执行轨迹进行分析,确定所述待检测程序中所述缺陷的位置,包括:当所述执行轨迹发生错误,根据所述执行轨迹中发生错误的位置确定所述待检测程序中所述缺陷的位置。4.根据权利要求3所述的方法,其特征在于,利用轻量级预测分析对所述执行轨迹进行分析,确定所述待检测程序中所述缺陷的位置,还包括:当所述执行轨迹未发生错误,根据所述同步语句的执行结果判断所述待检测程序中所述同步语句的覆盖率是否提高;根据判断结果对所述同步语句中注入的延迟进行处理;根据处理结果确定所述待检测程序中所述缺陷的位置。5.根据权利要求4所述的方法,其特征在于,根据判断结果对所述同步语句中注入的延迟进行处理,包括:当所述覆盖率提高,对所述延迟进行标记,得到目标延迟;将所述目标延迟加入预设种子队列,经过种子选择,对所述目标...

【专利技术属性】
技术研发人员:袁挺刘晨陆杰李昊峰李炼高琳
申请(专利权)人:中科天齐山西软件安全技术研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1