skip to main content
10.1145/1639622.1639632acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

An annotation assistant for interactive debugging of programs with common synchronization idioms

Published: 19 July 2009 Publication History

Abstract

This paper explores an approach to improving the practical usability of static verification tools for debugging synchronization idioms. Synchronization idioms such as mutual exclusion and readers/writer locks are widely-used to ensure atomicity of critical regions. We present an annotation assistant that automatically generates program annotations. These annotations express noninterference between program statements, ensured by the synchronization idioms, and are used to identify atomic code regions. This allows the programmer to debug the use of the idioms in the program. We start by formalizing several well-known idioms by providing an abstract semantics for each idiom. For programs that use these idioms, we require the programmer to provide a few predicates linking the idiom with its realization in terms of program variables. From these, we automatically generate a proof script that is mechanically checked. These scripts include steps such as automatically generating assertions and annotating program actions with them, introducing auxiliary variables and invariants. We have successfully shown the applicability of this approach to several concurrent programs from the literature.

References

[1]
M. Barnett, B.-Y. E. Chang, R. DeLine, B. Jacobs, and K. R. M. Leino. Boogie: A modular reusable verifier for object-oriented programs. FMCO, 2005.
[2]
L. M. de Moura and N. Bjrner. Z3: An efficient smt solver. In C. R. Ramakrishnan and J. Rehof, editors, TACAS, volume 4963 of Lecture Notes in Computer Science, pages 337--340. Springer, 2008.
[3]
T. Elmas, S. Qadeer, and S. Tasiran. A calculus of atomic actions. Technical Report MSR-TR-2008-99, Microsoft Research Redmond, July 2008.
[4]
T. Elmas, S. Qadeer, and S. Tasiran. A calculus of atomic actions. In In POPL '09: Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, New York, NY, USA, 2009. ACM.
[5]
C. Flanagan, S. N. Freund, S. Qadeer, and S. A. Seshia. Modular verification of multithreaded programs. Theor. Comput. Sci., 338(1--3):153--183, 2005.
[6]
C. Flanagan and K. R. M. Leino. Houdini, an annotation assistant for esc/java. In FME '01: Proceedings of the International Symposium of Formal Methods Europe on Formal Methods for Increasing Software Productivity, pages 500--517, London, UK, 2001. Springer-Verlag.
[7]
C. Flanagan, K. R. M. Leino, M. Lillibridge, G. Nelson, J. B. Saxe, and R. Stata. Extended static checking for java. In PLDI '02: Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, pages 234--245, New York, NY, USA, 2002. ACM Press.
[8]
C. Flanagan and S. Qadeer. Transactions for software model checking. Electronic Notes in Theoretical Computer Science, 89, 2003.
[9]
C. Flanagan and S. Qadeer. Types for atomicity. In TLDI '03: Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation, pages 1--12, New York, NY, USA, 2003. ACM.
[10]
O. Krieger, M. Stumm, R. Unrau, and J. Hanna. A fair fast scalable reader-writer lock. In ICPP '93: Proceedings of the 1993 International Conference on Parallel Processing, pages 201--204, Washington, DC, USA, 1993. IEEE Computer Society.
[11]
R. J. Lipton. Reduction: a method of proving properties of parallel programs. Commun. ACM, 18(12):717--721, 1975.
[12]
J. MacCormick, N. Murphy, M. Najork, C. A. Thekkath, and L. Zhou. Boxwood: abstractions as the foundation for storage infrastructure. In OSDI '04: Proceedings of the 6th conference on Symposium on Opearting Systems Design&Implementation, pages 8--8, Berkeley, CA, USA, 2004. USENIX Association.
[13]
M. M. Michael and M. L. Scott. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In PODC '96: Proceedings of the fifteenth annual ACM symposium on Principles of distributed computing, pages 267--275, New York, NY, USA, 1996. ACM.
[14]
D. C. Schmidt and S. D. Huston. C++ Network Programming: Resolving Complexity Using Ace and Patterns (C++ in-Depth Series). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2001.
[15]
C. von Praun and T. R. Gross. Object race detection. In OOPSLA '01: Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pages 70--82, New York, NY, USA, 2001. ACM Press.
[16]
E. Yahav and S. Sagiv. Automatically verifying concurrent queue algorithms. Electr. Notes Theor. Comput. Sci., 89(3), 2003.

Cited By

View all
  • (2018)10 Years of research on debugging concurrent and multicore softwareSoftware Quality Journal10.1007/s11219-015-9301-725:1(49-82)Online publication date: 24-Dec-2018
  • (2010)QEDProceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 210.1145/1810295.1810454(507-508)Online publication date: 1-May-2010
  • (2010)Simplifying linearizability proofs with reduction and abstractionProceedings of the 16th international conference on Tools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-642-12002-2_25(296-311)Online publication date: 20-Mar-2010

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PADTAD '09: Proceedings of the 7th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
July 2009
99 pages
ISBN:9781605586557
DOI:10.1145/1639622
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 19 July 2009

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. atomicity
  2. concurrent programs
  3. synchronization idioms

Qualifiers

  • Research-article

Conference

ISSTA '09

Upcoming Conference

ISSTA '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 17 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2018)10 Years of research on debugging concurrent and multicore softwareSoftware Quality Journal10.1007/s11219-015-9301-725:1(49-82)Online publication date: 24-Dec-2018
  • (2010)QEDProceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 210.1145/1810295.1810454(507-508)Online publication date: 1-May-2010
  • (2010)Simplifying linearizability proofs with reduction and abstractionProceedings of the 16th international conference on Tools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-642-12002-2_25(296-311)Online publication date: 20-Mar-2010

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media