论文:2017,Vol:35,Issue(1):148-153
引用本文:
郑炜, 蔺军, 黄月明, 冯晨, 吴潇雪. 应用过程间分析技术的并行错误模式匹配方法[J]. 西北工业大学学报
Zheng Wei, Lin Jun, Huang Yueming, Feng Chen, Wu Xiaoxue. Concurrency Bug Pattern Matching Based on Interprocedural Analysis Technology[J]. Northwestern polytechnical university

应用过程间分析技术的并行错误模式匹配方法
郑炜, 蔺军, 黄月明, 冯晨, 吴潇雪
西北工业大学 软件与微电子学院, 陕西 西安 710072
摘要:
过程间分析技术通常用于静态检测并行程序中的错误模式实例,目前已成为静态测试、错误模式匹配等领域的研究热点。然而,现存的过程内分析技术对于并行错误的静态测试效果尚不够理想。为此,文章试图运用过程间分析技术对并行程序进行"错误模式"的匹配。通过遍历构建的全局控制流图,分析图中单个节点所包含的语句,对其中可能出现错误的程序进行了错误模式的匹配,最终得出"错误定位"的结果。通过在实际开源系统中的应用,结果表明文中所提出的方法效果良好,具有较好的错误定位能力。
关键词:    并行程序    静态测试    过程间分析    错误模式    错误检测   
Concurrency Bug Pattern Matching Based on Interprocedural Analysis Technology
Zheng Wei, Lin Jun, Huang Yueming, Feng Chen, Wu Xiaoxue
School of Software and Microelectronics, Northwestern Polytechnical University, Xi'an 710072, China
Abstract:
Interprocedural analysis technology, as statically detecting bug pattern instances in concurrency programs, becomes the hot topic of static testing, bug pattern matching and other areas. At present, the intraprocedural analysis technology doesn't have a desired effect in detecting concurrency bugs. Focused on this problem,this paper matched the concurrency program with bug patterns by using interprocedural analysis technology. Firstly, built the overall control flow graph and analyzed the statements that each node contained, then matched the problem program with the bug patterns. At last, received the fault localization results. According to the testing results in the actual open source systems, this method has a good ability to locate software faults.
Key words:    concurrency program    static testing    interprocedural analysis    bug pattern    failure modes    fault detection   
收稿日期: 2016-10-08     修回日期:
DOI:
基金项目: 国家自然科学基金(61402370)与中央高校基本科研业务费专项资金资助
通讯作者:     Email:
作者简介: 郑炜(1975-),西北工业大学副教授,主要从事软件工程及软件测试的研究。
相关功能
PDF(1350KB) Free
打印本文
把本文推荐给朋友
作者相关文章
郑炜  在本刊中的所有文章
蔺军  在本刊中的所有文章
黄月明  在本刊中的所有文章
冯晨  在本刊中的所有文章
吴潇雪  在本刊中的所有文章

参考文献:
[1] Andrews G R. Concurrent Programming:Principles and Practice[M]. Boston, MA,USA:Addison Wesley Press,1991, 425-451
[2] Dai Zhuofang, Zhang Weihua. Concurrency Program Fault Debugging Technology Research Review[J]. Computer System Application, 2014(10):5-6
[3] Ball Thomas, Burckhardt Sebastian, de Halleux Peli, et al. Predictable and Progressive Testing of Multithreaded Code[J].IEEE Trans on Software,2011,28(3):75-83
[4] Gao Q, Zhang W, Chen Z, et al. Toward Manifesting Hidden Concurrency Typestate Bugs[J]. ACM Sigplan Notices, 2012, 47(4):239-250
[5] 黄理,顾乃杰,曹华雄,等. 基于Petri网的多线程程序死锁检测[J]. 计算机工程,2016,42(4):1-6 Huang Li, Gu Naijie, Cao Huaxiong, et al. The Deadlock Detection of Multithreaded Program Based on Petri Net[J]. Computer Engineering,2016, 42(4):1-6(in Chinese)
[6] Hong S, Kim M. Effective Pattern-Driven Concurrency Bug Detection for Operating Systems[J].The Journal of Systems and Software,2013,86(2):377-388
[7] Kai Pan, Sunghun Kim E. James Whitehead Jr, et al. Toward an Understanding of Bug Fix Patterns[J]. Empirical software engineering,2009,14(3):257-261
[8] Hovemeyer D, Pugh W. Finding Concurrency Bugs in Java[C]//Proceedings of the Podc Workshop on Concurrency & Synchronization in Java Programs, 2004:1-2
[9] Shen Haihao, Fang Jianhong, Zhao Jianjun, et al. EFindBugs:Effective Error Ranking for FindBugs[C]//2011 Fourth IEEE International Conference on Software Testing, Verification and Validation, 2011:299-308
[10] Bertrand Jeannet. Relational Interprocedural Verification of Concurrent Programs[J]. Software and Systems Modeling, 2013,12(2):285-306
[11] 张树壮,吴志刚,罗浩,等. 一种高效的正则表达式匹配方法[J]. 高技术通讯,2014,24(6):551-557 Zhang Shuzhuang, Wu Zhigang, Luo Hao, et al. An Efficient Approach of Regular Expression Matching[J]. High Technology Letters,2014,24(6):551-557(in Chinese)
[12] 魏雪菲,吴健,阮园,等. 基于错误模式和模型检验的静态代码分析方法[J]. 计算机工程,2012,38(6):47-49 Wei Xuefei, Wu Jian, Ruan Yuan, et al. Static Code Analysis Method Based on Bug Pattern and Model Verification[J]. Computer Engineering,2012,38(6):47-49(in Chinese)
[13] Neelesh Bhattacharya, Olfat El-Mahi,Etienne Duclos, et al. Optimizing Threads Schedule Alignments to Expose the Interference Bug Pattern[C]//Synposium on Search Based Software Engineering, 2012:90-104
[14] 王雅文. 基于缺陷模式的软件测试技术研究[D]. 北京:北京邮电大学,2009 Wang Yawen. Software Testing Technology Research Based on Bug Pattern[D]. Beijing, Beijing University of Posts and Telecommunications, 2009(in Chinese)
[15] 章磊. Clang上的C/C++过程间分析[D]. 合肥:中国科学技术大学,2009 Zhang Lei. C/C++ Interprocedural Analysis in Clang[D]. Hefei, University of Science and Technology of China, 2009(in Chinese)
[16] Carlos Gómez-Rodróguez. Finding the Smallest Binarization of a CFG is NP-Hard[J]. Journal of Computer and System Sciences,2014,80(4):796-805
[17] Long F, Mohindra D, Seacord R, Svoboda D. Java Concurrency Guidelines[Z]. Pittsburgh, PA, USA:Software Engineering Institinte, 2010