• 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