Accurate and efficient filtering for the Intel thread checker race detector

  • Authors:
  • Paul Sack;Brian E. Bliss;Zhiqiang Ma;Paul Petersen;Josep Torrellas

  • Affiliations:
  • University of Illinois at Urbana-Champaign;Intel Corporation;Intel Corporation;Intel Corporation;University of Illinois at Urbana-Champaign

  • Venue:
  • Proceedings of the 1st workshop on Architectural and system support for improving software dependability
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

Debugging data races in parallel applications is a difficult task. Error-causing data races may appear to vanish due to changes in an application's optimization level, thread scheduling, whether or not a debugger is used, and other effects. Further, many race conditions cause incorrect program behavior only in rare scenarios and may lie undetected during software testing.Tools exist today that do a decent job in finding data races in multi-threaded applications. Some data-race detection tools are very efficient and can detect data races with less than a 2x performance penalty. Most such tools, however, do not provide enough information to the user, require recompilation, or impose other usage restrictions. Other tools, such as the one considered in this paper (Intel's Thread Checker), provide users with plenty of useful information and can be used with any application binary, but have high overheads - often over 200x. It is the goal of this paper to speed up Thread Checker by filtering out the vast majority of memory references that are highly unlikely to be involved in data races. In our work, we develop filters that filter 90-100% of all memory references from the datarace detection algorithm, resulting in speedups of 2.2-5.5x, with an average improvement of 3.3x.