ABSTRACT
This paper presents a framework for confirming deadlock potentials detected by runtime analysis of a single run of a multi-threaded program. The multi-threaded program under examination is instrumented to emit lock and unlock events. When the instrumented program is executed, a trace is generated consisting of the lock and unlock operations performed during that specific run. A lock graph is constructed which can reveal deadlock potentials in the form of cycles. The effectiveness of this analysis is caused by the fact that successful non-deadlocking runs yield as good, and normally better, information as deadlocking runs. Each cycle is then used to construct an observer that can detect the occurrence of the corresponding real deadlock, should it occur during subsequent test runs; and a controller, which, when composed with the program, determines the optimal scheduling strategy that will maximize the probability for the corresponding real deadlock to occur. The framework is formalized in terms of transition systems and is implemented in Java.
References
- C. Artho and A. Biere. Applying Static Analysis to Large-Scale, Multi-threaded Java Programs. In D. Grant, editor, 13th Australien Software Engineering Conference, pages 68--75. IEEE Computer Society, August 2001. Google Scholar
Digital Library
- T. Ball, A. Podelski, and S. Rajamani. Boolean and Cartesian Abstractions for Model Checking C Programs. In Proceedings of TACAS ¿01: Tools and Algorithms for the Construction and Analysis of Systems, LNCS, Genova, Italy, April 2001. Google Scholar
Digital Library
- S. Bensalem and K. Havelund. Dynamic Deadlock Analysis of Multi-threaded Programs. In Shmuel Ur, Eyal Bin, and Yaron Wolfsthal, editors, Haifa Verification Conference, volume 3875 of LNCS, pages 208--223. Springer, 2005. Google Scholar
Digital Library
- J. Corbett, M. B. Dwyer, J. Hatcliff, C. S. Pasareanu, Robby, S. Laubach, and H. Zheng. Bandera : Extracting Finite-state Models from Java Source Code. In Proceedings of the 22nd International Conference on Software Engineering, Limerich, Ireland, June 2000. ACM Press. Google Scholar
Digital Library
- M. Dahm. BCEL. http://jakarta.apache.org/bcelGoogle Scholar
- D. L. Detlefs, K. Rustan M. Leino, G. Nelson, and J. B. Saxe. Extended Static Checking. Technical Report 159, Compaq Systems Research Center, Palo Alto, California, USA, 1998.Google Scholar
- O. Edelstein, E. Farchi, Y. Nir, G. Ratsaby, and S. Ur. Multithreaded Java Program Test Generation. Software Testing and Verification, 41(1), 2002. Google Scholar
Digital Library
- E. Farchi, Y. Nir-Buchbinder, and S. Ur. A Cross-Run Lock Discipline Checker for Java. Tool presented at the Parallel and Distributed Systems: Testing and Debugging (PADTAD)track of the 2005 IBM Verification Conference, Haifa, Israel. Tool is available at http://alphaworks.ibm.com/tech/contest November 2005.Google Scholar
- P. Godefroid. Model Checking for Programming Languages using VeriSoft. In Proceedings of the 24th ACM Symposium on Principles of Programming Languages, pages 174--186, Paris, France, January 1997. Google Scholar
Digital Library
- K. Havelund. Using Runtime Analysis to Guide Model Checking of Java Programs. In SPIN Model Checking and Software Verification, volume 1885 of LNCS, pages 245--264. Springer, 2000. Google Scholar
Digital Library
- K. Havelund and T. Pressburger. Model Checking Java Programs using Java PathFinder. International Journal on Software Tools for Technology Transfer, 2(4):366--381, April 2000. Special issue of STTT containing selected submissions to the 4th SPIN workshop, Paris, France, 1998.Google Scholar
Cross Ref
- K. Havelund and G. Roşu. Monitoring Java Programs with Java PathExplorer. Proceedings of the First International Workshop on Runtime Verification (RV'01), volume 55 of Electronic Notes in Theoretical Computer Science, pages 97--114, Paris, France, July 2001. Elsevier Science.Google Scholar
Cross Ref
- J. Harrow. Runtime Checking of Multithreaded Applications with Visual Threads. In SPIN Model Checking and Software Verification, volume 1885 of LNCS, pages 331--342. Springer, 2000. Google Scholar
Digital Library
- G. J. Holzmann and M. H. Smith. A Practical Method for Verifying Event-Driven Software. In Proceedings of ICSE'99, International Conference on Software Engineering, Los Angeles, California, USA, May 1999. IEEE/ACM. Google Scholar
Digital Library
- E. Knapp. Deadlock Detection in Distributed Database Systems. ACM Computing Surveys, pages 303--328, Dec. 1987. Google Scholar
Digital Library
- B. Nichols, D. Buttlar, and J. P. Farrell. Pthreads Programming. O'Reilly, 1998. Google Scholar
Digital Library
- D. Park, U. Stern, J. Skakkebaek, and D. Dill. Java Model Checking. In Proceedings of the 15th IEEE International Conference on Automated Software Engineering, pages 253--256, September 2000. Google Scholar
Digital Library
- PolySpace. An Automatic Run-Time Error Detection Tool. http://www.polyspace.comGoogle Scholar
- M. Singhal. Deadlock Detection in Distributed Systems. IEEE Computer, pages 37--48, Nov. 1989. Google Scholar
Digital Library
- S. D. Stoller. Model-Checking Multi-threaded Distributed Java Programs. In SPIN Model Checking and Software Verification, volume 1885 of LNCS, pages 224--244. Springer, 2000. Google Scholar
Digital Library
- R. Agarwal, L. Wang, and S. D. Stoller. Detecting Potential Deadlocks with Static Analysis and Run-Time Monitoring. In Proceedings of the Parallel and Distributed Systems: Testing and Debugging (PADTAD) track of the 2005 IBM Verification Conference, Haifa, Israel. Springer-Verlag, November 2005. These proceedings. Google Scholar
Digital Library
- W. Visser, K. Havelund, G. Brat, and S. Park. Model Checking Programs. In Proceedings of ASE'00: The 15th IEEE International Conference on Automated Software Engineering. IEEE CS Press, September 2000. Google Scholar
Digital Library
Index Terms
Confirmation of deadlock potentials detected by runtime analysis




Comments