首页> 外文会议>ACM SIGPLAN Conference on Programming Language Design and Implementation >CLAP: Recording Local Executions to Reproduce Concurrency Failures
【24h】

CLAP: Recording Local Executions to Reproduce Concurrency Failures

机译:拍手:录制本地执行以重现并发失败

获取原文

摘要

We present CLAP, a new technique to reproduce concurrency bugs. CLAP has two key steps. First, it logs thread local execution paths at runtime. Second, offline, it computes memory dependencies that accord with the logged execution and are able to reproduce the observed bug. The second step works by combining constraints from the thread paths and constraints based on a memory model, and computing an execution with a constraint solver. CLAP has four major advantages. First, logging purely local execution of each thread is substantially cheaper than logging memory interactions, which enables CLAP to be efficient compared to previous approaches. Second, our logging does not require any synchronization and hence with no added memory barriers or fences; this minimizes perturbation and missed bugs due to extra synchronizations foreclosing certain racy behaviors. Third, since it uses no synchronization, we extend CLAP to work on a range of relaxed memory models, such as TSO and PSO, in addition to sequential consistency. Fourth, CLAP can compute a much simpler execution than the original one, that reveals the bug with minimal thread context switches. To mitigate the scalability issues, we also present an approach to parallelize constraint solving, which theoretically scales our technique to programs with arbitrary execution length. Experimental results on a variety of multithreaded benchmarks and real world concurrent applications validate these advantages by showing that our technique is effective in reproducing concurrency bugs even under relaxed memory models; furthermore, it is significantly more efficient than a state-of-the-art technique that records shared memory dependencies, reducing execution time overhead by 45% and log size by 88% on average.
机译:我们现在拍,一种新技术重现的并发错误。淋病的有两个关键步骤。首先,它记录在运行时线程本地执行路径。其次,离线,它计算内存的依赖关系符合记录的执行,但它们能够重现观察到的错误。第二步骤的工作原理是从基于存储器模型线程路径和约束相结合的限制,并且计算与约束求解器的执行。淋病的有四大优势。首先,每个线程的登录纯粹本地执行比记录存储器的相互作用,这使CLAP相比以前的方法是有效的基本上便宜。其次,我们的记录并不需要任何同步,因此没有添加内存屏障或围栏;这最大限度地减少扰动和错过的错误,由于要额外同步取消抵押品赎回权的某些行为活泼。第三,因为它不使用同步,我们扩展击掌工作在一系列宽松的内存模型,如TSO和PSO的,除了顺序一致性。四,拍可以计算比原来的更简单的执行,揭示以最少的线程上下文切换的bug。为了缓解可扩展性问题,我们还提出了一种方法来并行约束求解,从理论上扩展我们的技术与任意处决长度程序。在各种多线程基准和现实世界的并发应用程序的实验结果通过展示我们的技术是有效的再现,即使在较为宽松的内存模型并发错误验证这些优势;此外,它是比显著国家的最先进的技术的记录共享存储器相关性,通过对平均88%45%和日志大小减少执行时间开销更有效。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号