Does it matter?: OMPSanitizer: an impact analyzer of reported data races in OpenMP programs

Data races are a primary source of concurrency bugs in parallel programs. Yet, debugging data races is not easy, even with a large amount of data race detection tools. In particular, there still exists a manually-intensive and time-consuming investigation process after data races are reported by existing race detection tools. To address this issue, we present OMPSanitizer in this paper. OMPSanitizer employs a novel and semantic-aware impact analysis mechanism to assess the potential impact of detected data races so that developers can focus on data races with a high probability to produce a harmful impact. This way, OMPSanitizer can remove the heavy debugging burden of data races from developers and simultaneously enhance the debugging efficiency. We have implemented OMPSanitizer based on the widely-used dynamic binary instrumentation infrastructure, Intel Pin. Our evaluation results on a broad range of OpenMP programs from the DataRaceBench benchmark suite and an ECP Proxy application demonstrate that OMPSanitizer can precisely report the impact of data races detected by existing race detectors, e.g., Helgrind and ThreadSanitizer. We believe OMPSanitizer will provide a new perspective on automating the debugging support for data races in OpenMP programs.

[1]  Yuanyuan Zhou,et al.  Learning from mistakes: a comprehensive study on real world concurrency bug characteristics , 2008, ASPLOS.

[2]  Markus Schordan,et al.  DataRaceBench: A Benchmark Suite for Systematic Evaluation of Data Race Detection Tools , 2017, SC17: International Conference for High Performance Computing, Networking, Storage and Analysis.

[3]  Yuanyuan Zhou,et al.  CTrigger: exposing atomicity violation bugs from their hiding places , 2009, ASPLOS.

[4]  Pei-Hung Lin,et al.  Detecting Data-Races in High-Performance Computing , 2019 .

[5]  Wenwen Wang,et al.  Localization of concurrency bugs using shared memory access pairs , 2014, ASE.

[6]  Jeff Huang,et al.  OMPRacer: A Scalable and Precise Static Race Detector for OpenMP Programs , 2020, SC20: International Conference for High Performance Computing, Networking, Storage and Analysis.

[7]  Douglas C. Schmidt,et al.  Double-checked locking , 1997 .

[8]  Harish Patil,et al.  Pin: building customized program analysis tools with dynamic instrumentation , 2005, PLDI '05.

[9]  Martin Schulz,et al.  ARCHER: Effectively Spotting Data Races in Large OpenMP Applications , 2016, 2016 IEEE International Parallel and Distributed Processing Symposium (IPDPS).

[10]  Satish Narayanasamy,et al.  Automatically classifying benign and harmful data races using replay analysis , 2007, PLDI '07.

[11]  Ramakrishna Upadrasta,et al.  LLOV: A Fast Static Data-Race Checker for OpenMP Programs , 2019, ArXiv.

[12]  S. Savage,et al.  Eraser: a dynamic data race detector for multi-threaded programs , 1997 .

[13]  Konstantin Serebryany,et al.  ThreadSanitizer: data race detection in practice , 2009, WBIA '09.

[14]  George Candea,et al.  Data races vs. data race bugs: telling the difference with portend , 2012, ASPLOS XVII.

[15]  Stephen N. Freund,et al.  FastTrack: efficient and precise dynamic race detection , 2009, PLDI '09.

[16]  Simone Atzeni,et al.  SWORD: A Bounded Memory-Overhead Detector of OpenMP Data Races in Production Runs , 2018, 2018 IEEE International Parallel and Distributed Processing Symposium (IPDPS).

[17]  John M. Mellor-Crummey,et al.  Dynamic Data Race Detection for OpenMP Programs , 2018, SC18: International Conference for High Performance Computing, Networking, Storage and Analysis.