Interleaving-Tree Based Fine-Grained Linearizability Fault Localization

Linearizability is an important correctness criterion for concurrent objects. Existing work mainly focuses on linearizability verification of coarse-grained traces with operation invocations and responses only. However, when linearizability is violated, such coarse-grained traces do not provide sufficient information for reasoning about the underlying concurrent program faults. In this paper, we propose a notion of critical data race sequence (CDRS), based on our fine-grained trace model, to characterize concurrent program faults that cause violation of linearizability. We then develop a labeled tree model of interleaved program executions and show how to identify CDRSes and localize concurrent program faults automatically with a specific node-labeling mechanism. We also implemented a prototype tool, FGVT, for real-world Java concurrent programs. Experiments show that our localization technique is effective, i.e., all the CDRSes reported by FGVT indeed reveal the root causes of linearizability faults.

[1]  Eitan Farchi,et al.  Framework for testing multi‐threaded Java programs , 2003, Concurr. Comput. Pract. Exp..

[2]  Jong-Deok Choi,et al.  Deterministic replay of Java multithreaded applications , 1998, SPDT '98.

[3]  Yu Zhang,et al.  Localization of Linearizability Faults on the Coarse-Grained Level , 2017, Int. J. Softw. Eng. Knowl. Eng..

[4]  Maurice Herlihy,et al.  The art of multiprocessor programming , 2020, PODC '06.

[5]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[6]  Gavin Lowe,et al.  Testing for linearizability , 2017, Concurr. Comput. Pract. Exp..

[7]  Sangmin Park,et al.  Fault comprehension for concurrent programs , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[8]  Armin Biere,et al.  High‐level data races , 2003, Softw. Test. Verification Reliab..

[9]  Yosi Ben-Asher,et al.  Heuristics for finding concurrent bugs , 2003, Proceedings International Parallel and Distributed Processing Symposium.

[10]  Mark Moir,et al.  DCAS is not a silver bullet for nonblocking algorithm design , 2004, SPAA '04.

[11]  Daniel Kroening,et al.  Faster Linearizability Checking via P-Compositionality , 2015, FORTE.

[12]  Yu Zhang,et al.  Checking linearizability with fine-grained traces , 2016, SAC.

[13]  Madan Musuvathi,et al.  Iterative context bounding for systematic testing of multithreaded programs , 2007, PLDI '07.

[14]  Scott D. Stoller,et al.  Testing Concurrent Java Programs using Randomized Scheduling , 2002, RV@FLoC.

[15]  Nir Shavit,et al.  An Optimistic Approach to Lock-Free FIFO Queues , 2004, DISC.

[16]  Gilles Pokam,et al.  Concurrent predicates: A debugging technique for every parallel programmer , 2013, Proceedings of the 22nd International Conference on Parallel Architectures and Compilation Techniques.

[17]  Sebastian Burckhardt,et al.  Line-up: a complete and automatic linearizability checker , 2010, PLDI '10.

[18]  Eran Yahav,et al.  Deriving linearizable fine-grained concurrent objects , 2008, PLDI '08.

[19]  Richard W. Vuduc,et al.  Falcon: fault localization in concurrent programs , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[20]  Wenguang Chen,et al.  Do I use the wrong definition?: DeFuse: definition-use invariants for detecting concurrency and sequential bugs , 2010, OOPSLA.

[21]  Bin Wang,et al.  Pinso: Precise Isolation of Concurrency Bugs via Delta Triaging , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

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

[23]  Eitan Farchi,et al.  Concurrent bug patterns and how to test them , 2003, Proceedings International Parallel and Distributed Processing Symposium.

[24]  Constantin Enea,et al.  Tractable Refinement Checking for Concurrent Objects , 2015, POPL.

[25]  Chao Wang,et al.  ConcBugAssist: constraint solving for diagnosis and repair of concurrency bugs , 2015, ISSTA.

[26]  Jeannette M. Wing,et al.  Testing and Verifying Concurrent Objects , 1993, J. Parallel Distributed Comput..

[27]  Richard W. Vuduc,et al.  A Unified Approach for Localizing Non-deadlock Concurrency Bugs , 2012, ICST.

[28]  Constantin Enea,et al.  Monitoring refinement via symbolic reasoning , 2015, PLDI.

[29]  Koushik Sen,et al.  Concurrent breakpoints , 2012, PPoPP '12.