Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1007/11513988_49guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Reasoning about threads communicating via locks

Published: 06 July 2005 Publication History

Abstract

We propose a new technique for the static analysis of concurrent programs comprised of multiple threads. In general, the problem is known to be undecidable even for programs with only two threads but where the threads communicate using CCS-style pairwise rendezvous [11]. However, in practice, a large fraction of concurrent programs can either be directly modeled as threads communicating solely using locks or can be reduced to such systems either by applying standard abstract interpretation techniques or by exploiting separation of control from data. For such a framework, we show that for the commonly occurring case of threads with nested access to locks, the problem is efficiently decidable. Our technique involves reducing the analysis of a concurrent program with multiple threads to individually analyzing augmented versions of the given threads. This not only yields decidability but also avoids construction of the state space of the concurrent program at hand and thus bypasses the state explosion problem making our technique scalable. We go on to show that for programs with threads that have non-nested access to locks, the static analysis problem for programs with even two threads becomes undecidable even for reachability, thus sharpening the result of [11]. As a case study, we consider the Daisy file system [1] which is a benchmark for analyzing the efficacy of different methodologies for debugging concurrent programs and provide results for the detection of several bugs.

References

[1]
Joint CAV/ISSTA Special Event on Specification, Verification, and Testing of Concurrent Software. In http://research.microsoft.com/qadeer/cav-issta.htm.
[2]
Ahmed Bouajjani, Javier Esparza, and Oded Maler. Reachability Analysis of Pushdown Automata: Application to Model-Checking. In CONCUR, LNCS 1243, pages 135-150, 1997.
[3]
Ahmed Bouajjani, Javier Esparza, and Tayssir Touili. A generic approach to the static analysis of concurrent programs with procedures. In IJFCS, volume 14(4), pages 551, 2003.
[4]
M. B. Dwyer and L. A. Clarke. Data flow analysis for verifying properties of concurrent programs. In ACM SIGSOFT, pages 62-75, 1994.
[5]
P. Godefroid. Model Checking for Programming Languages using Verisoft. In POPL, pages 174-186, 1997.
[6]
P. Godefroid and P. Wolper. Using Partial Orders for Efficient Verification of deadlockfreedom and safety properties. In Formal Methods in Systems Design, pages 149-164, 1993.
[7]
T. Henzinger, R. Jhala, R. Mazumdar, and S. Qadeer. Thread-Modular Abstraction Refinement. In CAV, LNCS 2725, pages 262-274, 2003.
[8]
F. Ivančic, Z. Yang, M. Ganai, A. Gupta, and P. Ashar. Efficient SAT-based Bounded Model Checking for Software Verification. In Symposium on Leveraging Applications of Formal Methods, 2004.
[9]
S. Qadeer, S. K. Rajamani, and J. Rehof. Summarizing procedures in concurrent programs. In POPL, pages 245-255, 2004.
[10]
S. Qadeer and J. Rehof. Context-Bounded Model Checking of Concurrent Software. In TACAS, 2005.
[11]
G. Ramalingam. Context-sensitive synchronization-sensitive analysis is undecidable. In ACM Trans. Program. Lang. Syst., volume 22(2), pages 416-430, 2000.
[12]
T. W. Reps, S. Horwitz, and S. Sagiv. Precise Interprocedural Dataflow Analysis via Graph Reachability. In POPL, pages 49-61, 1985.
[13]
D. A. Schmidt and B. Steffen. Program Analysis as Model Checking of Abstract Interpretations. In Static Analysis, 5th International Symposium, LNCS 1503, pages 351-380, 1998.
[14]
S. D. Stoller. Model-Checking Multi-Threaded Distributed Java Programs. In STTT, volume 4(1), pages 71-91, 2002.
[15]
W. Visser, K. Havelund, G. P. Brat, S. Park, and F. Lerda. Model Checking Programs. In Automated Software Engineering, volume 10(2), pages 203-232, 2003.
[16]
I. Walukeiwicz. Model Checking CTL Properties of Pushdown Systems. In FSTTCS, LNCS 1974, pages 127-138, 2000.

Cited By

View all
  • (2023)Dynamic Race Detection with O(1) SamplesProceedings of the ACM on Programming Languages10.1145/35712387:POPL(1308-1337)Online publication date: 11-Jan-2023
  • (2021)Improving Thread-Modular Abstract InterpretationStatic Analysis10.1007/978-3-030-88806-0_18(359-383)Online publication date: 17-Oct-2021
  • (2020)Interprocedural Context-Unbounded Program Analysis Using Observation SequencesACM Transactions on Programming Languages and Systems10.1145/341858342:4(1-34)Online publication date: 7-Dec-2020
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Guide Proceedings
CAV'05: Proceedings of the 17th international conference on Computer Aided Verification
July 2005
564 pages
ISBN:3540272313

Sponsors

  • Jasper Design Automation: Jasper Design Automation
  • Weizmann Institute: Weizmann Institute
  • Microsoft: Microsoft
  • Intel: Intel
  • IBM: IBM

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 06 July 2005

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 28 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Dynamic Race Detection with O(1) SamplesProceedings of the ACM on Programming Languages10.1145/35712387:POPL(1308-1337)Online publication date: 11-Jan-2023
  • (2021)Improving Thread-Modular Abstract InterpretationStatic Analysis10.1007/978-3-030-88806-0_18(359-383)Online publication date: 17-Oct-2021
  • (2020)Interprocedural Context-Unbounded Program Analysis Using Observation SequencesACM Transactions on Programming Languages and Systems10.1145/341858342:4(1-34)Online publication date: 7-Dec-2020
  • (2019)Fast, sound, and effectively complete dynamic race predictionProceedings of the ACM on Programming Languages10.1145/33710854:POPL(1-29)Online publication date: 20-Dec-2019
  • (2018)CUBA: interprocedural Context-UnBounded Analysis of concurrent programsACM SIGPLAN Notices10.1145/3296979.319241953:4(105-119)Online publication date: 11-Jun-2018
  • (2018)CUBA: interprocedural Context-UnBounded Analysis of concurrent programsProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192419(105-119)Online publication date: 11-Jun-2018
  • (2017)Static deadlock detection for asynchronous C# programsACM SIGPLAN Notices10.1145/3140587.306236152:6(292-305)Online publication date: 14-Jun-2017
  • (2017)Adaptively generating high quality fixes for atomicity violationsProceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering10.1145/3106237.3106239(303-314)Online publication date: 21-Aug-2017
  • (2017)Static deadlock detection for asynchronous C# programsProceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3062341.3062361(292-305)Online publication date: 14-Jun-2017
  • (2016)Radius aware probabilistic testing of deadlocks with guaranteesProceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering10.1145/2970276.2970307(356-367)Online publication date: 25-Aug-2016
  • Show More Cited By

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media