DocumentCode
2977412
Title
PathExpander: Architectural Support for Increasing the Path Coverage of Dynamic Bug Detection
Author
Lu, Shan ; Zhou, Pin ; Liu, Wei ; Zhou, Yuanyuan ; Torrellas, Josep
Author_Institution
Dept. of Comput. Sci., Illinois Univ., Urbana, IL
fYear
2006
fDate
Dec. 2006
Firstpage
38
Lastpage
52
Abstract
Dynamic software bug detection tools are commonly used because they leverage run-time information. However, they suffer from a fundamental limitation, the path coverage problem: they detect bugs only in taken paths but not in non-taken paths. In other words, they require bugs to be exposed in the monitored execution. This paper makes one of the first attempts to address this fundamental problem with a simple hardware extension. First, we propose PathExpander, a novel design that dynamically increases the code path coverage of dynamic bug detection tools with no programmer involvement. As a program executes, PathExpander selectively executes non-taken paths in a sandbox without side effects. This enables dynamic bug detection tools to find bugs that are present in these non-taken paths and would otherwise not be detected. Second, we propose a simple hardware extension to control the huge overhead in its pure software implementation to a moderate level. To further minimize overhead, PathExpander provides an optimization option to execute non-taken paths on idle cores in chip multi-processor architectures that support speculative execution. To evaluate PathExpander, we use three dynamic bug detection methods: dynamic software-only checker (CCured), dynamic hardware-assisted checker (iWatcher) and assertions; and conduct side-by-side comparison with PathExpander´s counterpart software implementation. Our experiments with seven buggy programs using general inputs that do not expose the tested bugs show that PathExpander is able to help these tools detect 21 (out of 38) tested bugs that are otherwise missed. This is because PathExpander increases the code coverage of each test case from 40% to 65% on average, based on the branch coverage metric. When applications are tested with multiple inputs, the cumulative coverage also significantly improves by 19%. We also show that PathExpander introduces modest false positives (4 on average) and overhead (less than 9.9%). The 3-4- orders of magnitude lower overhead compared with pure-software implementation further justifies the hardware design in PathExpander
Keywords
computer architecture; program debugging; PathExpander evaluation; buggy program; dynamic hardware-assisted checker; dynamic software bug detection; dynamic software-only checker; multiprocessor architecture; path coverage problem; software implementation; speculative execution; Benchmark testing; Computer architecture; Computer bugs; Computer science; Hardware; Monitoring; Programming profession; Runtime; Software testing; Software tools;
fLanguage
English
Publisher
ieee
Conference_Titel
Microarchitecture, 2006. MICRO-39. 39th Annual IEEE/ACM International Symposium on
Conference_Location
Orlando, FL
ISSN
1072-4451
Print_ISBN
0-7695-2732-9
Type
conf
DOI
10.1109/MICRO.2006.40
Filename
4041834
Link To Document