ABSTRACT
Concurrency fault are difficult to find because they usually occur under specific thread interleavings. Fault-detection tools in this area find data-access patterns among thread interleavings, but they report benign patterns as well as actual faulty patterns. Traditional fault-localization techniques have been successful in identifying faults in sequential, deterministic programs, but they cannot detect faulty data-access patterns among threads. This paper presents a new dynamic fault-localization technique that can pinpoint faulty data-access patterns in multi-threaded concurrent programs. The technique monitors memory-access sequences among threads, detects data-access patterns associated with a program's pass/fail results, and reports dataaccess patterns with suspiciousness scores. The paper also presents the description of a prototype implementation of the technique in Java, and the results of an empirical study we performed with the prototype on several Java benchmarks. The empirical study shows that the technique can effectively and efficiently localize the faults for our subjects.
- R. Abreu, P. Zoeteweij, and A. J. C. van Gemund. On the accuracy of spectrum-based fault localization. In TAIC PART, pages 89--98, 2007. Google ScholarDigital Library
- K. Asanovic, R. Bodik, B. C. Catanzaro, J. J. Gebis, P. Husbands, K. Keutzer, D. A. Patterson, W. L. Plishker, J. Shalf, S. W. Williams, and K. A. Yelick. The landscape of parallel computing research: A view from Berkeley. Technical Report UCB/EECS-2006-183, UC Berkeley, 2006.Google Scholar
- Q. Chen, L. Wang, Z. Yang, and S. D. Stoller. HAVE: detecting atomicity violations via integrated dynamic and static analysis. In ETAPS, pages 425--439, 2009. Google ScholarDigital Library
- J. DeSouza, B. Kuhn, B. R. de Supinski, V. Samofalov, S. Zheltov, and S. Bratanov. Automated, scalable debugging of MPI programs with the Intel® Message Checker. In Proc. Int'l. Wkshp. Software Eng. for HPC System Applications, IEEE Int'l. Conf. Software Eng. (ICSE), pages 78--82, 2005. Google ScholarDigital Library
- O. Edelstein, E. Farchi, Y. Nir, G. Ratsaby, and S. Ur. Multithreaded java program test generation. In Java Grande, page 181, 2001. Google ScholarDigital Library
- Y. Eytani, K. Havelund, S. D. Stoller, and S. Ur. Towards a framework and a benchmark for testing tools for multi-threaded programs. Concurr. Comput.: Pract. Exper., 19(3):267--279, 2007. Google ScholarDigital Library
- C. Flanagan and S. N. Freund. Type-based race detection for java. In PLDI, pages 219--232, June 2000. Google ScholarDigital Library
- C. Flanagan and S. N. Freund. Atomizer: a dynamic atomicity checker for multithreaded programs. In POPL, pages 256--267, 2003. Google ScholarDigital Library
- C. Flanagan, S. N. Freund, and J. Yi. Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs. In PLDI, pages 293--303, 2008. Google ScholarDigital Library
- C. Flanagan and S. Qadeer. A type and effect system for atomicity. In PLDI, pages 338--349, 2003. Google ScholarDigital Library
- P. Godefroid and N. Nagappan. Concurrency at Microsoft: An exploratory survey. In Workshop on Exploiting Concurrency Efficiently and Correctly, 2008.Google Scholar
- R. L. Halpert. Static lock allocation. Master's thesis, McGill University, 2008.Google Scholar
- C. Hammer, J. Dolby, M. Vaziri, and F. Tip. Dynamic detection of atomic-set-serializability violations. In ICSE, pages 231--240, 2008. Google ScholarDigital Library
- J. A. Jones and M. J. Harrold. Empirical evaluation of the tarantula automatic fault-localization technique. In ASE, pages 273--282, 2005. Google ScholarDigital Library
- B. Liblit, M. Naik, A. X. Zheng, A. Aiken, and M. I. Jordan. Scalable statistical bug isolation. In PLDI, pages 15--26, 2005. Google ScholarDigital Library
- S. Lu, S. Park, E. Seo, and Y. Zhou. Learning from mistakes: A comprehensive study on real world concurrency bug characteristics. In ASPLOS, pages 329--339, March 2008. Google ScholarDigital Library
- S. Lu, J. Tucek, F. Qin, and Y. Zhou. AVIO: detecting atomicity violations via access interleaving invariants. In ASPLOS, pages 37--48, 2006. Google ScholarDigital Library
- B. Lucia and L. Ceze. Finding concurrency bugs with context-aware communication graphs. In MICRO, pages 553--563, 2009. Google ScholarDigital Library
- C. E. McDowell and D. P. Helmbold. Debugging concurrent programs. ACM Computing Surveys (CSUR), 21(4):593--622, 1989. Google ScholarDigital Library
- M. Musuvathi and S. Qadeer. Iterative context bounding for systematic testing of multithreaded programs. In PLDI, pages 446--455, June 2007. Google ScholarDigital Library
- M. Musuvathi, S. Qadeer, T. Ball, G. Basler, P. Nainar, and I. Neamtiu. Finding and reproducing heisenbugs in concurrent programs. In OSDI, pages 267--280, 2008. Google ScholarDigital Library
- M. Naik and A. Aiken. Conditional must not aliasing for static race detection. In POPL, pages 327--338, 2007. Google ScholarDigital Library
- S. Narayanasamy, Z. Wang, J. Tigani, A. Edwards, and B. Calder. Automatically classifying benign and harmful data racesallusing replay analysis. In PLDI, pages 22--31, 2007. Google ScholarDigital Library
- R. O'Callahan and J. Choi. Hybrid dynamic data race detection. In PPoPP, pages 167--178, 2003. Google ScholarDigital Library
- C. Park and K. Sen. Randomized active atomicity violation detection in concurrent programs. In FSE, pages 135--145, 2008. Google ScholarDigital Library
- S. Park, S. Lu, and Y. Zhou. CTrigger: exposing atomicity violation bugs from their hiding places. In ASPLOS, pages 25--36, 2009. Google ScholarDigital Library
- K. Poulsen. Tracking the blackout bug. SecurityFocus, February 2004. http://www.securityfocus.com/news/8412.Google Scholar
- M. Ronsse and K. D. Bosschere. RecPlay: a fully integrated practical record/replay system. Trans. Comput. Syst., 17(2):133--152, 1999. Google ScholarDigital Library
- S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: a dynamic data race detector for multithreaded programs. Trans. Comput. Syst., 15(4):391--411, 1997. Google ScholarDigital Library
- K. Sen. Race directed random testing of concurrent programs. In PLDI, pages 11--21, 2008. Google ScholarDigital Library
- M. Süß and C. Leopold. Common mistakes in OpenMP and how to avoid them. In OpenMP Shared Memory Parallel Programming, volume LNCS 4315, pages 312--323, 2008. Google ScholarDigital Library
- A. Thakur, R. Sen, B. Liblit, and S. Lu. Cooperative crug isolation. In WODA, pages 35--41, 2009. Google ScholarDigital Library
- C. von Praun and T. R. Gross. Object race detection. In OOPSLA, pages 70--82, 2001. Google ScholarDigital Library
- R. Vuduc, M. Schulz, D. Quinlan, B. de Supinski, and A. Sæbjørnsen. Improving distributed memory applications testing by message perturbation. In PADTAD, pages 27--36, 2006. Google ScholarDigital Library
- L. Wang and S. D. Stoller. Accurate and efficient runtime detection of atomicity errors in concurrent programs. In PPoPP, pages 137--146, 2006. Google ScholarDigital Library
- J. Yi, C. Sadowski, and C. Flanagan. Sidetrack: Generalizing dynamic atomicity analysis. In PADTAD, 2009. Google ScholarDigital Library
Recommendations
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
ASPLOS XIII: Proceedings of the 13th international conference on Architectural support for programming languages and operating systemsThe reality of multi-core hardware has made concurrent programs pervasive. Unfortunately, writing correct concurrent programs is difficult. Addressing this challenge requires advances in multiple directions, including concurrency bug detection, ...
Empirical evaluation of the tarantula automatic fault-localization technique
ASE '05: Proceedings of the 20th IEEE/ACM International Conference on Automated Software EngineeringThe high cost of locating faults in programs has motivated the development of techniques that assist in fault localization by automating part of the process of searching for faults. Empirical studies that compare these techniques have reported the ...
Fuzzing: A Survey for Roadmap
Fuzz testing (fuzzing) has witnessed its prosperity in detecting security flaws recently. It generates a large number of test cases and monitors the executions for defects. Fuzzing has detected thousands of bugs and vulnerabilities in various ...
Comments