Skip to main content
Log in

BIFER: a biphasic trace filter approach to scalable prediction of concurrency errors

  • Research Article
  • Published:
Frontiers of Computer Science Aims and scope Submit manuscript

Abstract

Predictive trace analysis (PTA), a static trace analysis technique for concurrent programs, can offer powerful capability support for finding concurrency errors unseen in a previous program execution. Existing PTA techniques always face considerable challenges in scaling to large traces which contain numerous critical events. One main reason is that an analyzed trace includes not only redundant memory accessing events and threads that cannot contribute to discovering any additional errors different from the found candidate ones, but also many residual synchronization events which still affect PTA to check whether these candidate ones are feasible or not even after removing the redundant events. Removing them from the trace can significantly improve the scalability of PTA without affecting the quality of the PTA results. In this paper, we propose a biphasic trace filter approach, BIFER in short, to filter these redundant events and residual events for improving the scalability of PTA to expose general concurrency errors. In addition, we design a model which indicates the lock history and the happens-before history of each thread with two kinds of ways to achieve the efficient filtering. We implement a prototypical tool BIFER for Java programs on the basis of a predictive trace analysis framework. Experiments show that BIFER can improve the scalability of PTA during the process of analyzing all of the traces.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Sen K, Rosu G, Agha G. Detecting errors in multithreaded programs by generalized predictive analysis of executions. In: Proceedings of the 7th IFIP WG6.1 International Conference on Formal Methods for Open Object-based Distributed Systems. 2005, 211–226

    Chapter  Google Scholar 

  2. Wang L, Stoller S. Accurate and efficient runtime detection of atomicity errors in concurrent programs. In: Proceedings of ACM International Conference on Principles and Practice of Parallel Programming. 2006, 137–146

    Google Scholar 

  3. Farzan A, Madhusudan P, Sorrentino F. Meta-analysis for atomicity violations under nested locking. In: Proceedings of the 21st International Conference on Computer Aided Verification. 2009, 248–262

    Chapter  Google Scholar 

  4. Chen F, Serbanuta T F, Rosu G. Predictor: a predictive runtime analysis tool for Java. In: Proceedings of the 30th International Conference on Software Engineering. 2008, 221–230

    Google Scholar 

  5. Wang C, Kundu S, Ganai M K, Gupta A. Symbolic predictive analysis for concurrent programs. In: Proceedings of International Symposium on Formal Methods. 2009, 256–272

    Google Scholar 

  6. Wang C, Limaye R, Ganai M K, Gupta A. Trace-based symbolic analysis for atomicity violations. In: Proceedings of the 16th International Conference on Tools and Algorithms for the Construction and Analysis of Systems. 2010, 328–342

    Chapter  Google Scholar 

  7. Kahlon V, Wang C. Universal causality graphs: a precise happensbefore model for detecting bugs in concurrent programs. In: Proceedings of the 22nd International Conference on Computer Aided Verification. 2010, 434–449

    Chapter  Google Scholar 

  8. Zhang W, Sun C, Lu S. Conmem: detecting severe concurrency bugs through an effect-oriented approach. ACM SIGPLAN Notices, 2010, 45(3): 179–192

    Article  Google Scholar 

  9. Vaziri M, Tip F, Dolby J. Associating synchronization constraints with data in an object-oriented language. ACM SIGPLAN Notices, 2006, 41(1): 334–345

    Article  Google Scholar 

  10. Huang J, Zhou J G, Zhang C. Scaling predictive analysis of concurrent programs by removing trace redundancy. ACM Transactions on Software Engineering and Methodology, 2013, 22(1): 8

    Article  Google Scholar 

  11. Lu S, Park S, Seo E, Zhou Y Y. Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. ACM SIGPLAN Notices, 2008, 43(3): 329–339

    Article  Google Scholar 

  12. Lucia B, Wood B P, Ceze L. Isolating and understanding concurrency errors using reconstructed execution fragments. ACM SIGPLAN Notices, 2011, 46(6): 378–388

    Article  Google Scholar 

  13. Shi Y, Park S, Yin Z N, Lu S, Zhou Y Y, Chen W G, Zheng W M. Do I use the wrong definition?: DeFuse: definition-use invariants for detecting concurrency and sequential bugs. ACM SIGPLAN Notices, 2010, 45(10): 160–174

    Article  Google Scholar 

  14. Wang C, Said M, Gupta A. Coverage guided systematic concurrency testing. In: Proceedings of the 33rd International Conference on Software Engineering. 2011, 221–230

    Google Scholar 

  15. Lai Z, Cheung S C, Chan W K. Detecting atomic-set serializability violations in multithreaded programs through active randomized testing. In: Proceedings of the 32nd International Conference on Software Engineering. 2010, 235–244

    Google Scholar 

  16. Huang J, Zhang C. Persuasive prediction of concurrency access anomalies. In: Proceedings of the 2011 International Symposium on Software Testing and Analysis. 2011, 144–154

    Chapter  Google Scholar 

  17. Savage S, Burrows M, Nelson G, Sobalvarro P, Anderson T E. Eraser: a dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems, 1997, 15(4): 391–411

    Article  Google Scholar 

  18. Sen K. Race directed random testing of concurrent programs. ACM SIGPLAN Notices, 2008, 43(6): 11–21

    Article  Google Scholar 

  19. Farchi E, Nir Y, Ur S. Concurrent bug patterns and how to test them. In: Proceedings of IEEE International Parallel and Distributed Processing Symposium. 2003

    Google Scholar 

  20. Flanagan C, Godefroid P. Dynamic partial-order reduction for model checking software. ACM SIGPLAN Notices, 2005, 40(1): 110–121

    Article  Google Scholar 

  21. Sinha N, Wang C. Staged concurrent program analysis. In: Proceedings of the 18th ACM SIGSOFT International Symposium on the Foundations of Software Engineering. 2010, 47–56

    Google Scholar 

  22. Serebryany K, Potapenko A, Iskhodzhanov T, Vyukov D. Dynamic race detection with LLVM compiler. In: Proceedings of the 2nd International Conference on Runtime Verification. 2011, 110–114

    Google Scholar 

  23. Sack P, Bliss B E, Ma Z Q, Petersen P, Torrellas J. Accurate and efficient filtering for the intel thread checker race detector. In: Proceedings of the 1st Workshop on Architectural and System Support for Improving Software Dependability. 2006, 34–41

    Chapter  Google Scholar 

  24. Marino D, Musuvathi M, Narayanasamy S. Literace: effective sampling for lightweight data-race detection. ACM SIGPLAN Notices, 2009, 44(6): 134–143

    Article  Google Scholar 

  25. Bond M D, Coons K E, Mc Kinley K S. Pacer: proportional detection of data races. ACM SIGPLAN Notices, 2010, 45(6): 255–268

    Article  Google Scholar 

  26. Yu Y, Rodeheffer T, W C. Racetrack: efficient detection of data race conditions via adaptive tracking. ACM SIGOPS Operating Systems Review, 2005, 39(5): 221–234

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Xi Chang.

Additional information

Xi Chang received her BS in computer science and technology in 2000 and her MS in software engineering in 2006 from National University of Defense Technology, China. She is currently a PhD candidate in Department of Computer Science and Engineering, Shanghai Jiao Tong University, China. Her research interests include program analysis and testing for concurrent program.

Zhuo Zhang received his BS in computer science and technology in 2007 from National University of Defense Technology (NUDT), China. He is currently a master in computer science and technology at School of Computer, NUDT. His research interest includes software debugging and program slicing.

Peng Zhang is currently a master in computer science and technology at School of Computer, National University of Defense Technology, China. His research interest includes software debugging and maintenance.

Jianxin Xue received his MS in software engineering from National University of Defense Technology, China in 2006, and his PhD in computer software and theory from Shanghai Jiao Tong University, China in 2013. Jianxin Xue has been an assistant professor in Department of Software engineering, Shanghai Second Polytechnic University, China. His primary research interest is concurrency theory and analysis of concurrent program.

Jianjun Zhao received his BE in computer science from Tsinghua University, China in 1987, and his PhD in computer science from Kyushu University, Japan in 1997. He was an assistant professor at the Department of Computer Science and Engineering, Fukuoka Institute of Technology, Japan from 1997 to 2000, and an associate professor from 2000 to 2005. He also worked as a visiting scientist at the Laboratory for Computer Science, Massachusetts Institute of Technology from 2002 to 2003. Since 2005, he has been a full professor at the School of Software, Shanghai Jiao Tong University, China. His primary research interest is program analysis, software testing, model checking, and formal specification and verification techniques.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Chang, X., Zhang, Z., Zhang, P. et al. BIFER: a biphasic trace filter approach to scalable prediction of concurrency errors. Front. Comput. Sci. 9, 944–955 (2015). https://doi.org/10.1007/s11704-015-4334-4

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11704-015-4334-4

Keywords

Navigation