计算机工程

• •    

基于Adaboost模型的并发程序数据竞争语句级检测方法

  

  • 发布日期:2020-12-28

Concurrent Programs Data Race Statement Level Detection Method Based on Adaboost Model

  • Published:2020-12-28

摘要: 针对软件测试领域中的并发程序数据竞争检测中存在的误报和漏报以及开销大等问题,提出了一种基于 Adaboost 模 型的并发程序数据竞争语句级检测方法。首先对多线程并发程序进行插桩,记录指令的相关内存信息。然后将取出的指令集 进行语句级转化,并提取出语句对相关属性特征,构建并发程序 Adaboost 数据竞争检测模型,最后实现了一个多线程程序 数据竞争检测工具 ADR。对 Google Code 的 data-race-test 数据集里的 TestCodes 程序,SPLASH-2 基本套件中的 radix、fft 程 序以及 Parsec 基准程序 3.1 中的 streamcluster、deup、x264 程序进行数据竞争检测实验,结果表明 ADR 相比于 Eraser,Djit+、 Thread Sanitizer 这三种数据竞争检测方法,显著降低了检测的漏报率和误报率,时间开销以及内存开销分别降低大约 29.3% 和 21.1%,为数据竞争检测提供了一种高效精确的检测方法。

Abstract: Aiming at false positives, false negatives and large overhead problem of concurrent programs data race detection in software test, a concurrent programs data race statement level detection method based on Adaboost model is put forward in this paper. In the method, we firstly have instrumentation to multithreading concurrent program to record the related memory information of the instruction. Then, the instruction set will have the statement level conversion, extract related features about statement pair and get concurrent programs Adaboost data race detection model by structure. Finally, a multithreading program data race detection tool ADR is got. We have a data race detection experiment to TestCodes program of data-race-test data sets from Google Code, and to radix and fft program from SPLASH-2 benchmark suit, to streamcluster, deup, and x264 program from Parsec benchmark program 3.1. We get the result that data race detection tool ADR lowers the false positives and false negatives,and lets runtime overhead and memory overhead respectively lower about 29.3% and 21.1%compared to Eraser, Djit+ and Thread Sanitizer, which provides data race test with an efficient and accurate detection method.