Antipattern-based detection of deficiencies in Java multithreaded software

We investigate an antipattern-based approach to analyze Java multithreaded (MT) programs. We present a library of 38 antipatterns, which describe predefined recognized sources of multithreading related errors in the code. The antipatterns are archived in practical, easy to use templates, and are classified according to their potential effects on the program behavior. We also report on our experience in using these antipatterns in the analysis of real multithreaded applications.

[1]  Marcel Christian Baur,et al.  Instrumenting Java Bytecode to Replay Execution Traces of Multithreaded Programs , 2003 .

[2]  Patrice Godefroid,et al.  Model checking for programming languages using VeriSoft , 1997, POPL '97.

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

[4]  Michael R. Lowry,et al.  Experiments with Test Case Generation and Runtime Analysis , 2003, Abstract State Machines.

[5]  Thomas J. Mowbray,et al.  AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis , 1998 .

[6]  Lori L. Pollock,et al.  All-du-path coverage for parallel programs , 1998, ISSTA '98.

[7]  Dawson R. Engler,et al.  Using Redundancies to Find Errors , 2003, IEEE Trans. Software Eng..

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

[9]  David Hovemeyer,et al.  Finding bugs is easy , 2004, SIGP.

[10]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[11]  Emin Gün Sirer,et al.  Static Analyses for Eliminating Unnecessary Synchronization from Java Programs , 1999, SAS.

[12]  George S. Avrunin,et al.  Property specification patterns for finite-state verification , 1998, FMSP '98.

[13]  Barton P. Miller,et al.  Detecting Data Races in Parallel Program Executions , 1989 .

[14]  Michael Burrows,et al.  Eraser: a dynamic data race detector for multithreaded programs , 1997, TOCS.

[15]  Eitan Farchi,et al.  Concurrent bug patterns and how to test them , 2003, Proceedings International Parallel and Distributed Processing Symposium.

[16]  Thomas W. Reps,et al.  Putting static analysis to work for verification: A case study , 2000, ISSTA '00.

[17]  Martin C. Rinard,et al.  Analysis of Multithreaded Programs , 2001, SAS.

[18]  Stephen N. Freund,et al.  Detecting race conditions in large programs , 2001, PASTE '01.

[19]  Cyrille Artho Finding faults in multi-threaded programs , 2001 .

[20]  Connie U. Smith,et al.  Software performance antipatterns , 2000, WOSP '00.

[21]  Patrick Naughton,et al.  The Java Handbook , 1996 .