多线程程序数据竞争随机森林指令级检测模型
Random forest instruction level detection model for data race in multithreaded programs作者机构:西安邮电大学计算机学院中国西安710121 西安邮电大学陕西省网络数据分析与智能处理重点实验室中国西安710121 西密歇根大学计算机系美国卡拉马祖49008-5466
出 版 物:《清华大学学报(自然科学版)》 (Journal of Tsinghua University(Science and Technology))
年 卷 期:2020年第60卷第10期
页 面:804-813页
核心收录:
学科分类:0810[工学-信息与通信工程] 08[工学] 0805[工学-材料科学与工程(可授工学、理学学位)] 0701[理学-数学] 081201[工学-计算机系统结构] 0812[工学-计算机科学与技术(可授工学、理学学位)]
基 金:国家自然科学基金面上项目(61876138) 陕西省工业项目(2018GY-014) 西安邮电大学研究生创新基金项目(CXJJLA2018003) 陕西省普通高等学校重点学科专项资金建设项目
摘 要:数据竞争是典型的多线程程序并发缺陷。由于多线程程序中存在不确定性的交织,数据竞争很难被检测出来。该文以多线程数据竞争的5个相关属性作为特征,构建了多线程程序数据竞争随机森林指令级检测模型。首先基于happens-before关系与lockset算法指令级检测数据竞争,同时用汇编源码信息来剔除隐形同步对,然后利用happens-before关系与lockset算法的分析结果训练多线程程序数据竞争随机森林检测模型。在Pin上实现了多线程程序数据竞争检测工具AIRaceTest。利用GitHub中多线程程序的插桩结果作为样本集来训练随机森林模型,模型精度可达92.1%。对Google data-race-test、Parsec基准程序3.1中的经典多线程程序的检测结果表明:AIRaceTest与Eraser、Djit+以及Thread Sanitizer这3种目前常用的数据竞争检测工具相比,数据竞争的误报和漏报分别降低了约10.6%和12.3%,在线程数较多的情况下,时间和内存开销分别降低了41.8%和22.4%。