国内刊号:51-1307/TP
国际刊号:1001-9081
发布日期:
作者:张杨, 梁亚楠, 张冬雯, 孙仕欣
单位:河北科技大学 信息科学与工程学院, 石家庄 050000
关键词:并发程序,数据竞争,控制流分析,别名分析,程序切片
基金:国家自然科学基金资助项目(61440012);河北省自然科学基金资助项目(F2016208007);河北省基础研究计划重点基础专项(18960106D)。
针对数据竞争检测过程中的误报和漏报问题,提出一种静态数据竞争检测方法。首先,使用控制流分析自动构造线程内和线程间函数调用图;然后,收集线程内变量访问事件信息,定义竞争产生条件并分析检测出所有可能的竞争;其次,为了提高检测的准确率,进行别名变量和别名锁的分析降低漏报和误报;最后,通过控制流分析来抽象访问事件之间的时序关系,并结合程序切片技术对访问事件的发生序关系进行判断,以此避免因忽略线程交互带来的误报。依据该方法,使用Java语言在Soot软件分析框架下实现了一个数据竞争检测工具。在实验中,对JGF和IBM Contest基准测试套件中的raytracer和airline等程序进行数据竞争检测,并与目前已有的数据竞争检测算法和工具(HB算法和RVPredict)进行对比。实验结果表明,与HB算法和RVPredict工具相比,该方法检测到的数据竞争总数分别增加了81%和16%,数据竞争检测的准确率分别提升了约14%和19%,有效地避免了数据竞争检测中的漏报和误报现象。
来源:2019年第1期
《计算机应用》期刊编辑部