首页> 外文期刊>IAENG Internaitonal journal of computer science >Efficient Execution Path Exploration for Detecting Races in Concurrent Programs
【24h】

Efficient Execution Path Exploration for Detecting Races in Concurrent Programs

机译:在并发程序中检测种族的有效执行路径探索

获取原文
获取原文并翻译 | 示例
           

摘要

Concurrent programs are more difficult to test or debug than sequential programs because their non-deterministic behaviors can produce errors that depend on timing and interleaving of threads. A different interleaving might affect branch outcomes that can lead the execution path into one different from that in which the error was detected. In order to detect concurrent errors, a programmer needs to re-execute the concurrent program many times by changing the interleaving, but it is not always feasible to conduct all the tests due to a large number of possible different interleavings. This paper proposes an efficient method to minimize the number of test cases for detecting errors in a concurrent program. This method generates test cases with different interleavings based on the execution trace. The method reduces redundant test cases without sacrificing the precision of error detection. The method is novel because it exploits the branch structure and utilizes data flows from trace information to identify only those interleavings that affect branch outcomes, whereas existing methods try to identify all interleavings that seem to affect shared variables. In order to reduce the number of test cases, those execution paths with equivalent lock sequences and accesses to shared variables are grouped together into the same "race-equivalent" group and only one member of the group is tested. We evaluated the proposed method against several concurrent Java programs. The experimental results for a Java program for telnet show the number of test cases is reduced from 147, which is based on the existing TPAIR method, to only 2 by the proposed method. Moreover, for concurrent programs that contain infinite loops, the proposed method generates only a finite and very few number of test cases, while many existing methods generate an infinite number of test cases.
机译:并发程序比顺序程序更难于测试或调试,因为并发程序的不确定性行为会产生取决于线程时间和交织的错误。不同的交错可能会影响分支结果,从而可能导致执行路径与检测到错误的路径不同。为了检测并发错误,程序员需要通过更改交织来多次重新执行并发程序,但是由于存在大量可能的不同交织,进行所有测试并不总是可行的。本文提出了一种有效的方法来最小化并发程序中用于检测错误的测试用例的数量。此方法基于执行跟踪生成具有不同交错的测试用例。该方法在不牺牲错误检测精度的情况下减少了冗余测试用例。该方法之所以新颖,是因为它利用分支结构并利用来自跟踪信息的数据流来仅识别那些影响分支结果的交错,而现有方法试图识别所有似乎影响共享变量的交错。为了减少测试用例的数量,将具有等效锁定序列和对共享变量的访问权限的那些执行路径组合到同一“种族等效”组中,并且仅测试该组中的一个成员。我们针对多个并发Java程序评估了所提出的方法。针对telnet的Java程序的实验结果表明,测试案例的数量从基于现有TPAIR方法的147个减少到了所建议的方法的2个。此外,对于包含无限循环的并发程序,所提出的方法仅生成有限且数量很少的测试用例,而许多现有方法均生成无限数量的测试用例。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号