Abstract
Trends in modern multicore architecture design requires software developers to develop and debug multithreaded programs. Consequently, software developers must face new challenges because of bug patterns occurring at runtime and due to the non-deterministic behavior of multi-threaded program executions. This calls for new defect-localization techniques. There has been much work in the field of defect localization for sequential programs on the one side and on the localization of specific multithreading bugs on the other side, but we are not aware of any general technique for multithreaded programs. This paper proposes such an approach. It generalizes data mining-based defect-localization techniques for sequential programs. The techniques work by analyzing call graphs. More specifically, we propose new graph representations of multithreaded program executions as well as two mining-based localization approaches based on these representations. Our evaluation shows that our technique yields good results and is able to find defects that other approaches cannot localize.
Similar content being viewed by others
Notes
In this paper we use the terms processor core and processor interchangeably.
References
Bond, M.D., Coons, K.E., McKinley, K.S.: Pacer: proportional detection of data races. In: PLDI (2010)
Copty, S., Ur, S.: Multi-threaded testing with AOP is easy, and it finds bugs!. In: 11th Int. Euro-Par Conf. (2005)
Di Fatta, G., Leue, S., Stegantova, E.: Discriminative pattern mining in software fault detection. In: 3rd Int. Workshop on Software Quality Assurance (SOQUA) (2006)
Edelstein, O., et al.: Framework for testing multi-threaded java programs. Concurr. Comput. Pract. Exp. 15:485–499 (2003)
Eichinger, F., Böhm, K., Huber, M.: Mining edge-weighted Call graphs to localise software bugs. In: ECML PKDD (2008)
Eichinger, F., et al.: Localizing defects in multithreaded programs by mining dynamic call graphs. In: TAIC PART (2010)
Eichinger, F., Oßner, C., Böhm, K.: Scalable software-defect localisation by hierarchical mining of dynamic call graphs. In: SDM (2011)
Engler, D., Ashcraft, K.: Racerx: effective, static detection of race conditions and deadlocks. SIGOPS 37:237–252 (2003)
Eytani, Y., Ur, S.: Compiling a benchmark of documented multi-threaded bugs. In: Proc. of the Parallel and Distributed Processing Symposium (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)
Flanagan, C., et al.: Extended static checking for java. In: PLDI (2002)
Flanagan, C., Freund, S.N.: Fasttrack: efficient and precise dynamic race detection. In: Hind, M., Diwan, A. (eds.) PLDI, pp. 121–133. ACM (2009)
Garey, M.R., Johnson, D.S.: Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman, San Francisco, CA (1979)
Gray, J.: Why do computers stop and what can be done about it?. In: Symposium on Reliability in Distributed Software and Database Systems (1986)
Hutchins, M., et al.: Experiments on the effectiveness of dataflow- and controlflow-based test adequacy criteria. In: Int. Conf. on Software Engineering (ICSE) (1994)
Jalan, R., Kejariwal, A.: Trin-trin: Who’s calling? a pin-based dynamic call graph extraction framework. International Journal of Parallel Programming 40:410–442 (2012)
Jannesari, A., et al.: Dynamic data race detection for correlated variables. In: Proc. of the Int. Conf. on Algorithms and Architectures for Parallel Processing (2011)
Jones, J., Harrold, M., Stasko, J.: Visualization of test information to assist fault localization. In: 24th Int. Conf. on Software Engineering (ICSE) (2002)
Le Goues, C., et al.: A systematic study of automated program repair: fixing 55 out of 105 bugs for 8 each. In: ICSE (2012)
Liu, C., et al.: Mining behavior graphs for “Backtrace” of Noncrashing Bugs. In: SDM (2005)
Lu, S., et al.: Learning from mistakes—a comprehensive study on real world concurrency bug characteristics. SIGARCH 36:329–339 (2008)
Luo, Z., Das, R., Qi, Y.: Multicore sdk: a practical and efficient deadlock detector for real-world applications. In: IEEE Fourth Int. Conf. on Software Testing, Verification and Validation (ICST), pp. 309–318, March (2011)
Musuvathi, M., Qadeer, S., Ball, T.: CHESS: A Systematic Testing Tool for Concurrent Software. Technical report, Microsoft Research (2007)
Nagappan, N., Ball, T., Zeller, A.: Mining metrics to predict component failures. In: Proc. of the Int. Conf. on Software Engineering (ICSE) (2006)
O’Callahan, R., Choi, J.: Hybrid dynamic data race detection. SIGPLAN Notices 38:167–178 (2003)
Rungta, N., Mercer, E.G.: Clash of the titans: tools and techniques for hunting bugs in concurrent programs. In: PADTAD (2009)
Savage, S., et al.: Eraser: a dynamic data race detector for multithreaded programs. ACM Trans. Comput. Syst. 15:391–411 (1997)
Vermeulen, A.L., et al.: In: Vermeulen, A.L. (ed.) The Elements of Java Style. Cambridge University Press (2000)
Yan, X., Han, J.: CloseGraph: mining closed frequent graph patterns. In: KDD (2003)
Zeller, A.: Why Programs Fail: A Guide to Systematic Debugging. Morgan Kaufmann (2009)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Oßner, C., Böhm, K. Graphs for Mining-Based Defect Localization in Multithreaded Programs. Int J Parallel Prog 41, 570–593 (2013). https://doi.org/10.1007/s10766-012-0237-2
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10766-012-0237-2