passert: A Tool for Debugging Parallel Programs
passert is a new debugging tool for parallel programs which allows programmers to express correctness criteria using a simple, expressive assertion language. We demonstrate how these parallel assertions allow the detection and diagnosis of real world concurrency bugs, detecting 14/17 bugs in an independently selected set of bugs from open source software. We describe a runtime checker which allows automatic checking of parallel assertions in C and C++ programs, with a geometric mean of 6.6× overhead on a set of PARSEC benchmarks. We improve performance by introducing a relaxed timing semantics for parallel assertions, which better reflects real memory models, and exposes more bugs with less overhead (geometric mean overhead 3.5×).
KeywordsParallel Program Runtime Overhead Assertion Condition Semiconductor Research Corporation Debug Tool
- 1.Intel Corporation. Intel 64 and IA-32 Architectures Developer’s Manual (2010)Google Scholar
- 2.Lattner, C.: LLVM: An Infrastructure for Multi-Stage Optimization. Master’s thesis, Computer Science Dept., University of Illinois at Urbana-Champaign, Urbana, IL (2002)Google Scholar
- 3.Schwartz-Narbonne, D., Liu, F., Pondicherry, T., August, D., Malik, S.: Parallel assertions for debugging parallel programs. In: MEMOCODE 2011, pp. 181–190 (2011)Google Scholar
- 4.Yu, J., Narayanasamy, S.: A case for an interleaving constrained shared-memory multi-processor. In: ISCA 2009, pp. 325–336 (2009)Google Scholar