【24h】

Pinpoint Data Races via Testing and Classification

机译:通过测试和分类针对数据比赛

获取原文

摘要

Data races, i.e. the uncoordinated read/write access of threads to a shared variable resulting in unexpected program behaviour, in parallel shared memory programs occur highly dependent on the timing and scheduling of threads during execution. This makes data races hard to detect manually and automatically. Corresponding tools typically suspect too many code locations to cause data races and miss critical ones as the observed execution and timing did not raise them. We present methods and a tool chain for C/C++ codes with POSIX threads to detect data races and verify their harmfulness. We use automatic instrumentation and repeated test-case execution using a user-space thread scheduler overriding the kernel-space scheduler to intentionally generate specific thread interleavings. As the thread scheduling becomes deterministic and independent from the system in use, targeted testing of thread schedules can reveal and verify otherwise hard to find data races. For each data race we classify its harmfulness based on well-defined attributes and can in most cases identify and report its root cause, i.e. the data race which, when fixed, protects the program from crashing. This and a low false positive rate in the reports greatly reduces the overhead in fixing data races for developers.
机译:数据播放,即线程的未开销读/写访问在并行共享内存程序中导致意外的程序行为导致的共享变量,高度依赖于执行期间线程的定时和调度。这使得数据比赛难以手动和自动检测。相应的工具通常可疑过多的代码位置,以使数据竞争和错过关键的位置,因为观察到的执行和时间没有提高它们。我们为C / C ++代码提供了方法和工具链,使用POSIX线程来检测数据种族并验证其危害。我们使用用户空间线程调度程序覆盖内核空间调度程序的用户空间线程调度程序来使用自动仪表和重复的测试用例执行,以故意生成特定的线程交织。由于线程调度变为确定性和独立于使用中的系统,因此针对线程调度的目标测试可以揭示和验证难以查找数据比赛。对于每个数据竞争,我们根据明确定义的属性对其危害进行分类,并且在大多数情况下可以标识并报告其根本原因,即,数据竞争,在固定时,保护程序免受崩溃。此报告中的低误率和低误率大大减少了修复开发人员数据比赛的开销。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号