Skip to main content

Localizing Defects in Multithreaded Programs by Mining Dynamic Call Graphs

  • Conference paper
Testing – Practice and Research Techniques (TAIC PART 2010)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 6303))

  • 805 Accesses

Abstract

Writing multithreaded software for multicore computers confronts many developers with the difficulty of finding parallel programming errors. In the past, most parallel debugging techniques have concentrated on finding race conditions due to wrong usage of synchronization constructs. A widely unexplored issue, however, is that a wrong usage of non-parallel programming constructs may also cause wrong parallel application behavior. This paper presents a novel defect-localization technique for multithreaded shared-memory programs that is based on analyzing execution anomalies. Compared to race detectors that report just on wrong synchronization, this method can detect a wider range of defects affecting parallel execution. It works on a condensed representation of the call graphs of multithreaded applications and employs data-mining techniques to locate a method containing a defect. Our results from controlled application experiments show that we found race conditions, but also other programming errors leading to incorrect parallel program behavior. On average, our approach reduced in our benchmark the amount of code to be inspected to just 7.1% of all methods.

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

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. Tornado HTTP Server, http://tornado.sourceforge.net/

  2. WebLech URL Spider, http://weblech.sourceforge.net/

  3. Abreu, R., Zoeteweij, P., van Gemund, A.J.: Spectrum-Based Multiple Fault Localization. In: Proc. ASE (2009)

    Google Scholar 

  4. Ayewah, N., Hovemeyer, D., Morgenthaler, J.D., Penix, J., Pugh, W.: Using Static Analysis to Find Bugs. IEEE Softw. 25(5), 22–29 (2008)

    Article  Google Scholar 

  5. Berger, E.D., McKinley, K.S., Blumofe, R.D., Wilson, R.P.: Hoard: A Scalable Memory Allocator for Multithreaded Applications. SIGPLAN Not. 35(11), 117–128 (2000)

    Article  Google Scholar 

  6. Cheng, H., Lo, D., Zhou, Y., Wang, X., Yan, X.: Identifying Bug Signatures Using Discriminative Graph Mining. In: Proc. ISSTA (2009)

    Google Scholar 

  7. Copty, S., Ur, S.: Multi-threaded Testing with AOP Is Easy, and It Finds Bugs! In: Cunha, J.C., Medeiros, P.D. (eds.) Euro-Par 2005. LNCS, vol. 3648, pp. 740–749. Springer, Heidelberg (2005)

    Google Scholar 

  8. Dallmeier, V., Lindig, C., Zeller, A.: Lightweight Defect Localization for Java. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 528–550. Springer, Heidelberg (2005)

    Google Scholar 

  9. Di Fatta, G., Leue, S., Stegantova, E.: Discriminative Pattern Mining in Software Fault Detection. In: Proc. Int. Workshop on Software Quality Assurance (2006)

    Google Scholar 

  10. Edelstein, O., Farchi, E., Nir, Y., Ratsaby, G., Ur, S.: Multithreaded Java Program Test Generation. IBM Syst. J. 41(1), 111–125 (2002)

    Article  Google Scholar 

  11. Eichinger, F., Böhm, K.: Software-Bug Localization with Graph Mining. In: Aggarwal, C.C., Wang, H. (eds.) Managing and Mining Graph Data. Springer, Heidelberg (2010)

    Google Scholar 

  12. Eichinger, F., Böhm, K., Huber, M.: Mining Edge-Weighted Call Graphs to Localise Software Bugs. In: Daelemans, W., Goethals, B., Morik, K. (eds.) ECML PKDD 2008, Part I. LNCS (LNAI), vol. 5211, pp. 333–348. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  13. Engler, D., Ashcraft, K.: RacerX: Effective, Static Detection of Race Conditions and Deadlocks. In: Proc. Symposium on Operating Systems Principles (SOSP) (2003)

    Google Scholar 

  14. Eytani, Y., Ur, S.: Compiling a Benchmark of Documented Multi-Threaded Bugs. In: Proc. Int. Parallel and Distributed Processing Symposium (IPDPS) (2004)

    Google Scholar 

  15. Farchi, E., Nir, Y., Ur, S.: Concurrent Bug Patterns and How to Test Them. In: Proc. Int. Parallel and Distributed Processing Symposium (IPDPS) (2003)

    Google Scholar 

  16. Jones, J.A., Harrold, M.J., Stasko, J.: Visualization of Test Information to Assist Fault Localization. In: Proc. ICSE (2002)

    Google Scholar 

  17. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, p. 327. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  18. Liu, C., Yan, X., Yu, H., Han, J., Yu, P.S.: Mining Behavior Graphs for “Backtrace” of Noncrashing Bugs. In: Proc. Int. Conf. on Data Mining (SDM) (2005)

    Google Scholar 

  19. Lu, S., Park, S., Seo, E., Zhou, Y.: Learning from Mistakes – A Comprehensive Study on Real World Concurrency Bug Characteristics. SIGARCH Comput. Archit. News 36(1), 329–339 (2008)

    Article  Google Scholar 

  20. Musuvathi, M., Qadeer, S., Ball, T.: CHESS: A Systematic Testing Tool for Concurrent Software. Technical Report MSR-TR-2007-149, Microsoft Research

    Google Scholar 

  21. Nagappan, N., Ball, T., Zeller, A.: Mining Metrics to Predict Component Failures. In: Proc. ICSE (2006)

    Google Scholar 

  22. O’Callahan, R., Choi, J.-D.: Hybrid Dynamic Data Race Detection. SIGPLAN Not. 38(10), 167–178 (2003)

    Article  Google Scholar 

  23. Qi, Y., Das, R., Luo, Z.D., Trotter, M.: MulticoreSDK: A Practical and Efficient Data Race Detector for Real-World Applications. In: Proc. Workshop on Parallel and Distributed Systems (2009)

    Google Scholar 

  24. Quinlan, J.R.: C4.5: Programs for Machine Learning. Morgan Kaufmann, San Francisco (1993)

    Google Scholar 

  25. Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.: Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs. In: Proc. Symposium on Operating systems principles (SOSP) (1997)

    Google Scholar 

  26. Tzoref, R., Ur, S., Yom-Tov, E.: Instrumenting Where it Hurts – An Automatic Concurrent Debugging Technique. In: Proc. ISSTA (2007)

    Google Scholar 

  27. Witten, I.H., Frank, E.: Data Mining: Practical Machine Learning Tools and Techniques with Java Implementations. Morgan Kaufmann, San Francisco (2005)

    Google Scholar 

  28. Zeller, A.: Why Programs Fail: A Guide to Systematic Debugging. Morgan Kaufmann, San Francisco (2009)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2010 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Eichinger, F., Pankratius, V., Große, P.W.L., Böhm, K. (2010). Localizing Defects in Multithreaded Programs by Mining Dynamic Call Graphs. In: Bottaci, L., Fraser, G. (eds) Testing – Practice and Research Techniques. TAIC PART 2010. Lecture Notes in Computer Science, vol 6303. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-15585-7_7

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-15585-7_7

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-15584-0

  • Online ISBN: 978-3-642-15585-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics