Automatically Repairing Concurrency Bugs with ARC

In this paper we introduce ARC --- a fully automated system for repairing deadlocks and data races in concurrent Java programs. ARC consists of two phases: 1 a bug repair phase and 2 an optimization phase. In the first phase, ARC uses a genetic algorithm without crossover to mutate an incorrect program, searching for a variant of the original program that fixes the deadlocks and data races. As this first phase may introduce unneeded synchronization that can negatively affect performance, a second phase attempts to optimize the concurrent source code by removing any excess synchronization without sacrificing program correctness. We describe both phases of our approach and report on our results.

[1]  Claire Le Goues,et al.  A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[2]  James R. Larus,et al.  Software and the Concurrency Revolution , 2005, ACM Queue.

[3]  R. Lipton,et al.  Mutation analysis , 1998 .

[4]  Shaz Qadeer,et al.  CHESS: A Systematic Testing Tool for Concurrent Software , 2007 .

[5]  Xin Yao,et al.  A novel co-evolutionary approach to automatic software bug fixing , 2008, 2008 IEEE Congress on Evolutionary Computation (IEEE World Congress on Computational Intelligence).

[6]  Tomás Vojnar,et al.  A Uniform Classification of Common Concurrency Errors , 2011, EUROCAST.

[7]  Shan Lu,et al.  Automated atomicity-violation fixing , 2011, PLDI '11.

[8]  Daniel R. Tauritz,et al.  Coevolutionary automated software correction , 2010, GECCO '10.

[9]  Shmuel Ur,et al.  Experience with a Concurrency Bugs Benchmark , 2008, 2008 IEEE International Conference on Software Testing Verification and Validation Workshop.

[10]  Name M. Lastname Automatically Finding Patches Using Genetic Programming , 2013 .

[11]  Tomás Vojnar,et al.  Healing data races on-the-fly , 2007, PADTAD '07.

[12]  Eitan Farchi,et al.  Multithreaded Java program test generation , 2002, IBM Syst. J..

[13]  Julian F. Miller,et al.  Genetic and Evolutionary Computation — GECCO 2003 , 2003, Lecture Notes in Computer Science.

[14]  Perdita Stevens,et al.  Modelling Recursive Calls with UML State Diagrams , 2003, FASE.

[15]  J. S. Bradbury,et al.  Defining a Catalog of Programming Anti-Patterns for Concurrent Java , 2009 .

[16]  Franz Pichler,et al.  Computer Aided Systems Theory – EUROCAST 2011 , 2011, Lecture Notes in Computer Science.

[17]  Alexander Aiken,et al.  Conditional must not aliasing for static race detection , 2007, POPL '07.

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

[19]  Paul A. Strooper,et al.  A method for verifying concurrent Java components based on an analysis of concurrency failures , 2007, Concurr. Comput. Pract. Exp..

[20]  Mark Harman,et al.  Why the Virtual Nature of Software Makes It Ideal for Search Based Optimization , 2010, FASE.

[21]  J. Dingel,et al.  Mutation Operators for Concurrent Java (J2SE 5.0) , 2006, Second Workshop on Mutation Analysis (Mutation 2006 - ISSRE Workshops 2006).

[22]  J. Galletly An Overview of Genetic Algorithms , 1992 .

[23]  Tomás Vojnar,et al.  AtomRace: data race and atomicity violation detector and healer , 2008, PADTAD '08.

[24]  Charles Zhang,et al.  Axis: Automatically fixing atomicity violations through solving control constraints , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[25]  Andrea Arcuri,et al.  On the automation of fixing software bugs , 2008, ICSE Companion '08.

[26]  Klaus Havelund,et al.  Benchmark and framework for encouraging research on multi-threaded testing tools , 2003, Proceedings International Parallel and Distributed Processing Symposium.

[27]  James R. Cordy,et al.  TXL: A Rapid Prototyping System for Programming Language Dialects , 1991, Comput. Lang..

[28]  Tomás Vojnar,et al.  A platform for search-based testing of concurrent software , 2010, PADTAD '10.