Automatic Debugging of Concurrent Programs through Active Sampling of Low Dimensional Random Projections

Concurrent computer programs are fast becoming prevalent in many critical applications. Unfortunately, these programs are especially difficult to test and debug. Recently, it has been suggested that injecting random timing noise into many points within a program can assist in eliciting bugs within the program. Upon eliciting the bug, it is necessary to identify a minimal set of points that indicate the source of the bug to the programmer. In this paper, we pose this problem as an active feature selection problem. We propose an algorithm called the iterative group sampling algorithm that iteratively samples a lower dimensional projection of the program space and identifies candidate relevant points. We analyze the convergence properties of this algorithm. We test the proposed algorithm on several real-world programs and show its superior performance. Finally, we show the algorithms' performance on a large concurrent program.

[1]  John G. Proakis,et al.  Probability, random variables and stochastic processes , 1985, IEEE Trans. Acoust. Speech Signal Process..

[2]  Larry A. Rendell,et al.  A Practical Approach to Feature Selection , 1992, ML.

[3]  James M. Bieman,et al.  The relationship between test coverage and reliability , 1994, Proceedings of 1994 IEEE International Symposium on Software Reliability Engineering.

[4]  Michael Burrows,et al.  Eraser: a dynamic data race detector for multi-threaded programs , 1997, TOCS.

[5]  James R. Larus,et al.  Protocol-based data-race detection , 1998, SPDT '98.

[6]  Jong-Deok Choi,et al.  Deterministic replay of Java multithreaded applications , 1998, SPDT '98.

[7]  Andreas Zeller,et al.  Yesterday, my program worked. Today, it does not. Why? , 1999, ESEC/FSE-7.

[8]  Assaf Schuster,et al.  Toward Integration of Data Race Detection in DSM Systems , 1999, J. Parallel Distributed Comput..

[9]  A. Gupta,et al.  Towards Integration of Data Race Detection in DSM Systems , 1999 .

[10]  James C. Corbett,et al.  Bandera: extracting finite-state models from Java source code , 2000, ICSE.

[11]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[12]  Eitan Farchi,et al.  Multithreaded Java program test generation , 2001, JGI '01.

[13]  Scott D. Stoller,et al.  Testing Concurrent Java Programs using Randomized Scheduling , 2002, RV@FLoC.

[14]  James M. Bieman,et al.  Software reliability growth with test coverage , 2002, IEEE Trans. Reliab..

[15]  Scott D. Stoller,et al.  Model-checking multi-threaded distributed Java programs , 2000, International Journal on Software Tools for Technology Transfer.

[16]  Elad Yom-Tov,et al.  An Introduction to Pattern Classification , 2003, Advanced Lectures on Machine Learning.

[17]  Michael I. Jordan,et al.  Statistical Debugging of Sampled Programs , 2003, NIPS.

[18]  Paul A. Strooper,et al.  A classification of concurrency failures in Java components , 2003, Proceedings International Parallel and Distributed Processing Symposium.

[19]  Shmuel Ur,et al.  Compiling a benchmark of documented multi-threaded bugs , 2004, 18th International Parallel and Distributed Processing Symposium, 2004. Proceedings..

[20]  Mary Jean Harrold,et al.  Empirical evaluation of the tarantula automatic fault-localization technique , 2005, ASE.

[21]  Eitan Farchi,et al.  Applications of synchronization coverage , 2005, PPoPP.

[22]  Masoud Nikravesh,et al.  Feature Extraction - Foundations and Applications , 2006, Feature Extraction.

[23]  Koushik Sen,et al.  CUTE and jCUTE: Concolic Unit Testing and Explicit Path Model-Checking Tools , 2006, CAV.

[24]  Yosi Ben-Asher,et al.  Noise Makers Need to Know Where to be Silent – Producing Schedules That Find Bugs , 2006, Second International Symposium on Leveraging Applications of Formal Methods, Verification and Validation (isola 2006).

[25]  Masoud Nikravesh,et al.  Feature Extraction: Foundations and Applications (Studies in Fuzziness and Soft Computing) , 2006 .

[26]  Yaniv Eytani Concurrent Java Test Generation as a Search Problem , 2006, Electron. Notes Theor. Comput. Sci..

[27]  Klaus Havelund,et al.  Towards a framework and a benchmark for testing tools for multi‐threaded programs , 2007, Concurr. Comput. Pract. Exp..

[28]  Klaus Havelund,et al.  Towards a framework and a benchmark for testing tools for multi-threaded programs: Research Articles , 2007 .

[29]  Shmuel Ur,et al.  Toward Automatic Concurrent Debugging Via Minimal Program Mutant Generation with AspectJ , 2007, TV@FLoC.

[30]  Elad Yom-Tov,et al.  Instrumenting where it hurts: an automatic concurrent debugging technique , 2007, ISSTA '07.