10.1145/1147403.1147412acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
Article

Confirmation of deadlock potentials detected by runtime analysis

Online:17 July 2006Publication History

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

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. M. Dahm. BCEL. http://jakarta.apache.org/bcelGoogle ScholarGoogle Scholar
  6. 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 ScholarGoogle Scholar
  7. O. Edelstein, E. Farchi, Y. Nir, G. Ratsaby, and S. Ur. Multithreaded Java Program Test Generation. Software Testing and Verification, 41(1), 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle Scholar
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarCross RefCross Ref
  12. 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 ScholarGoogle ScholarCross RefCross Ref
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. E. Knapp. Deadlock Detection in Distributed Database Systems. ACM Computing Surveys, pages 303--328, Dec. 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. B. Nichols, D. Buttlar, and J. P. Farrell. Pthreads Programming. O'Reilly, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. PolySpace. An Automatic Run-Time Error Detection Tool. http://www.polyspace.comGoogle ScholarGoogle Scholar
  19. M. Singhal. Deadlock Detection in Distributed Systems. IEEE Computer, pages 37--48, Nov. 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Confirmation of deadlock potentials detected by runtime analysis

                  Comments

                  Login options

                  Check if you have access through your login credentials or your institution to get full access on this article.

                  Sign in

                  PDF Format

                  View or Download as a PDF file.

                  PDF

                  eReader

                  View online with eReader.

                  eReader
                  About Cookies On This Site

                  We use cookies to ensure that we give you the best experience on our website.

                  Learn more

                  Got it!