Abstract
Concurrency faults are activated by specific thread interleavings at runtime. Traditional fault localization techniques and static analysis fall short to diagnose these faults efficiently. Existing dynamic fault-localization techniques focus on pinpointing data-access patterns that are subject to concurrency faults. In this paper, we propose a spectrum-based fault localization technique for localizing faulty code blocks instead. We systematically instrument the program to create versions that run in particular combinations of thread interleavings. We run tests on all these versions and utilize spectrum-based fault localization to correlate detected errors with concurrently executing code blocks. We have implemented a tool and applied our approach on several industrial case studies. Case studies show that our approach can effectively and efficiently localize concurrency faults.
Chapter PDF
Similar content being viewed by others
Keywords
References
Abreu, R., Zoeteweij, P., Golsteijn, R., van Gemund, A.: A practical evaluation of spectrum-based fault localization. Journal of Systems and Software 82(11), 1780–1792 (2009)
Abreu, R.: Spectrum-based Fault Localization in Embedded Software. Ph.D. thesis, Delft University of Technology (2009)
Abreu, R., Zoeteweij, P., van Gemund, A.J.C.: On the accuracy of spectrum-based fault localization. In: Proceedings of Testing: Academic and Industrial Conference Practice and Research Techniques, Windsor, UK, pp. 89–98 (2007)
Burckhardt, S., Kothari, P., Musuvathi, M., Nagarakatte, S.: A randomized scheduler with probabilistic guarantees of finding bugs. ACM SIGPLAN Notices 45(3), 167–178 (2010)
Dobbelsteen, J., Golsteijn, R., van de Laar, P.: An infrastructure for traceability to increase insight in complex embedded systems. Tech. Rep. PR-TN 2006/00506, Philips Electronics (2006)
Flanagan, C., Freund, S.N.: Type-based race detection for java. ACM SIGPLAN Notices 35(5), 219–232 (2000)
Flanagan, C., Qadeer, S.: A type and effect system for atomicity. ACM SIGPLAN Notices 38(5), 338–349 (2003)
Harrold, M., Rothermel, G., Wu, R., Yi, L.: An empirical investigation of program spectra. ACM SIGPLAN Notices 33(7) (1998)
Jin, G., Thakur, A., Liblit, B., Lu, S.: Instrumentation and sampling strategies for cooperative concurrency bug isolation. ACM SIGPLAN Notices 45(10), 241–255 (2010)
Jones, J.A., Harrold, M.J.: Empirical evaluation of the tarantula automatic fault-localization technique. In: Proceedings of the International Conference on Automated Software Engineering, Long Beach, California, USA, pp. 273–282 (2005)
Liblit, B., Naik, M., Zheng, A.X., Aiken, A., Jordan, M.I.: Scalable statistical bug isolation. In: Proceedings of the Conference on Programming Language Design and Implementation, Chicago, Illinois, USA, pp. 15–26 (2005)
Lucia, B., Wood, B., Ceze, L.: Isolating and understanding concurrency errors using reconstructed execution fragments. ACM SIGPLAN Notices 47(6), 378–388 (2011)
Lucia, B., Ceze, L.: Finding concurrency bugs with context-aware communication graphs. In: Proceedings of the International Symposium on Microarchitecture, New York, NY, USA, pp. 553–563 (2009)
Mayer, W., Stumptner, M.: Evaluating models for model-based debugging. In: Proceedings of the International Conference on Automated Software Engineering, L’Aquila, Italy, pp. 128–137 (2008)
Musuvathi, M., Qadeer, S., Ball, T., Basler, G., Nainar, P., Neamtiu, I.: Finding and reproducing heisenbugs in concurrent programs. In: Proceedings of the USENIX Conference on Operating Systems Design and Implementation, pp. 267–280 (2008)
Musuvathi, M., Qadeer, S.: Iterative context bounding for systematic testing of multithreaded programs. In: Proceedings of the Conference on Programming Language Design and Implementation, New York, NY, USA, pp. 446–455 (2007)
Naik, M., Aiken, A.: Conditional must not aliasing for static race detection. In: Proceedings of the Symposium on Principles of Programming Languages, New York, NY, USA, pp. 327–338 (2007)
Park, S., Lu, S., Zhou, Y.: CTrigger: exposing atomicity violation bugs from their hiding places. ACM SIGPLAN Notices 44(3), 25–36 (2009)
Park, S., Vuduc, R., Harrold, M.: Falcon: fault localization in concurrent programs. In: Proceedings of the International Conference on Software Engineering, pp. 245–254 (2010)
Park, S., Harrold, M.J., Vuduc, R.: Griffin: grouping suspicious memory-access patterns to improve understanding of concurrency bugs. In: Proceedings of the 2013 International Symposium on Software Testing and Analysis. ACM (2013)
Park, S., Vuduc, R., Harrold, M.J.: A unified approach for localizing non-deadlock concurrency bugs. In: International Conference on Software Testing, Verification and Validation, Montreal, QC, pp. 51–60 (2012)
Pugh, W., Ayewah, N.: Unit testing concurrent software. In: Proceedings of the International Conference on Automated Software Engineering, pp. 513–516 (2007)
Ronsse, M., De Bosschere, K.: Recplay: a fully integrated practical record/replay system. ACM Transactions on Computer Systems 17(2), 133–152 (1999)
Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.: Eraser: a dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems 15(4), 391–411 (1997)
Shi, Y., Park, S., Yin, Z., Lu, S., Zhou, Y., Chen, W., Zheng, W.: Do I use the wrong definition?: Defuse: definition-use invariants for detecting concurrency and sequential bugs. ACM SIGPLAN Notices 45(10), 160–174 (2010)
Vazirani, V.: Approximation Algorithms. Springer (2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 IFIP International Federation for Information Processing
About this paper
Cite this paper
Koca, F., Sözer, H., Abreu, R. (2013). Spectrum-Based Fault Localization for Diagnosing Concurrency Faults. In: Yenigün, H., Yilmaz, C., Ulrich, A. (eds) Testing Software and Systems. ICTSS 2013. Lecture Notes in Computer Science, vol 8254. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-41707-8_16
Download citation
DOI: https://doi.org/10.1007/978-3-642-41707-8_16
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-41706-1
Online ISBN: 978-3-642-41707-8
eBook Packages: Computer ScienceComputer Science (R0)