【24h】

PathExpander

机译:路径扩展器

获取原文

摘要

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 overheadcompared with pure-software implementation further justifies the hardware design in PathExpander.
机译:通常使用动态软件错误检测工具,因为它们会利用运行时信息。但是,它们受到一个基本限制,即路径覆盖问题:它们仅在已采用的路径中检测错误,而未在未采用的路径中检测错误。换句话说,它们要求在受监视的执行中暴露错误。本文是通过简单的硬件扩展来解决此基本问题的首批尝试之一。首先,我们提出PathExpander,这是一种新颖的设计,可以动态增加动态错误检测工具的代码路径覆盖范围,而无需程序员参与。在执行程序时,PathExpander在沙箱中有选择地执行未采用的路径,而不会产生副作用。这使动态错误检测工具能够发现这些未采用的路径中存在的错误,否则将无法检测到。其次,我们提出了一个简单的硬件扩展,以将其纯软件实现中的巨大开销控制在中等水平。为了进一步最小化开销,PathExpander提供了一个优化选项,可以在支持推测执行的芯片多处理器体系结构中的空闲内核上执行未采用的路径。为了评估PathExpander,我们使用三种动态错误检测方法:动态仅软件检查器(CCured),动态硬件辅助检查器(iWatcher)和断言。并与PathExpander的对应软件实现进行并排比较。我们使用不泄漏测试错误的常规输入对七个错误程序进行的实验表明,PathExpander能够帮助这些工具检测到21个(共38个)测试错误,而这些错误可能会被遗漏。这是因为PathExpander基于分支覆盖率度量,将每个测试用例的代码覆盖率平均从40%增加到65%。当使用多个输入测试应用程序时,累积覆盖率也显着提高了19%。我们还显示,PathExpander会引入适度的误报(平均4个)和开销(小于9.9%)。与纯软件实现相比,其开销降低了3.4个数量级,这进一步证明了PathExpander中的硬件设计是合理的。
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号