摘 要 针对目前已有的基于深度学习的数据竞争检测方法提取特征单一和准确率低的问题,提出一种基于深度学习的数据竞争检测方法DeleRace,该方法首先利用程序静态分析工具WALA从多个实际应用程序中提取指令、方法和文件等多个级别的特征,对其向量化并构造训练样本数据;然后通过ConRacer工具对真实数据竞争进行判定进而标记样本数据,采用SMOTE增强算法使正负数据样本分布均衡化;最后构建并训练CNN-LSTM深度神经网络进行数据竞争检测.从DaCapo,JGF,IBM Contest,PJBench基准测试程序套件中分别选取26个不同应用领域的基准测试程序进行训练数据样本抽取和数据竞争检测,结果表明DeleRace的数据竞争检测准确率为96.79%,与目前已有的基于深度学习的检测方法DeepRace相比提升了4.65%.此外还将DeleRace与已有的动态数据竞争检测工具(Said和RVPredict)和静态数据竞争检测工具(SRD和ConRacer)进行比较,验证了DeleRace的有效性.
关键词 数据竞争;并发程序;深度学习;特征抽取;CNN-LSTM模型
数据竞争[1]是指2个或多个线程同时访问1个内存位置并且至少有1个线程执行写操作.数据竞争是目前最常见的并发缺陷之一,它是一种典型的运行时故障,通常在特定的并发执行环境中发生,难以被检测,它的存在会给程序运行带来潜在的风险,严重时会导致程序无法正常运行甚至崩溃,造成无法估量的损失,因此迫切需要对数据竞争检测问题进行研究.
数据竞争检测一直是国内外并发缺陷研究领域的热点问题之一,很多学者对数据竞争检测问题进行了研究,所采用的方法包括基于动态程序分析的检测方法、基于静态程序分析的检测方法、动静结合的检测方法[2-4].基于动态
文章评论