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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Tornado HTTP Server, http://tornado.sourceforge.net/
WebLech URL Spider, http://weblech.sourceforge.net/
Abreu, R., Zoeteweij, P., van Gemund, A.J.: Spectrum-Based Multiple Fault Localization. In: Proc. ASE (2009)
Ayewah, N., Hovemeyer, D., Morgenthaler, J.D., Penix, J., Pugh, W.: Using Static Analysis to Find Bugs. IEEE Softw. 25(5), 22–29 (2008)
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)
Cheng, H., Lo, D., Zhou, Y., Wang, X., Yan, X.: Identifying Bug Signatures Using Discriminative Graph Mining. In: Proc. ISSTA (2009)
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)
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)
Di Fatta, G., Leue, S., Stegantova, E.: Discriminative Pattern Mining in Software Fault Detection. In: Proc. Int. Workshop on Software Quality Assurance (2006)
Edelstein, O., Farchi, E., Nir, Y., Ratsaby, G., Ur, S.: Multithreaded Java Program Test Generation. IBM Syst. J. 41(1), 111–125 (2002)
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)
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)
Engler, D., Ashcraft, K.: RacerX: Effective, Static Detection of Race Conditions and Deadlocks. In: Proc. Symposium on Operating Systems Principles (SOSP) (2003)
Eytani, Y., Ur, S.: Compiling a Benchmark of Documented Multi-Threaded Bugs. In: Proc. Int. Parallel and Distributed Processing Symposium (IPDPS) (2004)
Farchi, E., Nir, Y., Ur, S.: Concurrent Bug Patterns and How to Test Them. In: Proc. Int. Parallel and Distributed Processing Symposium (IPDPS) (2003)
Jones, J.A., Harrold, M.J., Stasko, J.: Visualization of Test Information to Assist Fault Localization. In: Proc. ICSE (2002)
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)
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)
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)
Musuvathi, M., Qadeer, S., Ball, T.: CHESS: A Systematic Testing Tool for Concurrent Software. Technical Report MSR-TR-2007-149, Microsoft Research
Nagappan, N., Ball, T., Zeller, A.: Mining Metrics to Predict Component Failures. In: Proc. ICSE (2006)
O’Callahan, R., Choi, J.-D.: Hybrid Dynamic Data Race Detection. SIGPLAN Not. 38(10), 167–178 (2003)
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)
Quinlan, J.R.: C4.5: Programs for Machine Learning. Morgan Kaufmann, San Francisco (1993)
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)
Tzoref, R., Ur, S., Yom-Tov, E.: Instrumenting Where it Hurts – An Automatic Concurrent Debugging Technique. In: Proc. ISSTA (2007)
Witten, I.H., Frank, E.: Data Mining: Practical Machine Learning Tools and Techniques with Java Implementations. Morgan Kaufmann, San Francisco (2005)
Zeller, A.: Why Programs Fail: A Guide to Systematic Debugging. Morgan Kaufmann, San Francisco (2009)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)