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

skip to main content
10.5555/2682923.2682937acmotherconferencesArticle/Chapter ViewAbstractPublication PagesfmcadConference Proceedingsconference-collections
tutorial

Synthesis of Synchronization using Uninterpreted Functions

Published: 21 October 2014 Publication History

Abstract

Correctness of a program with respect to concurrency is often hard to achieve, but easy to specify: the concurrent program should produce the same results as a sequential reference version. We show how to automatically insert small atomic sections into a program to ensure correctness with respect to this implicit specification. Using techniques from bounded software model checking, we transform the program into an SMT formula that becomes unsatisfiable when we add correct atomic sections. By using uninterpreted functions to abstract data-related computational details, we make our approach applicable to programs with very complex computations, e.g., cryptographic algorithms. Our method starts with an empty set of atomic sections, and, based on counterexamples obtained from the SMT solver, refines the program by adding new atomic sections until correctness is achieved. We compare two different such refinement methods and provide experimental results, including Linux kernel modules where we successfully fix race conditions.

References

[1]
L. Bachmair, I. V. Ramakrishnan, A. Tiwari, and L. Vigneron. Congruence closure modulo associativity and commutativity. In FroCoS'00, LNCS 1794, 2000.
[2]
R. Bloem, R. Drechsler, G. Fey, A. Finder, G. Hofferek, R. Könighofer, J. Raik, U. Repinski, and A. Sülflow. FoREnSiC - an automatic debugging environment for C programs. In HVC'12, LNCS 7857. Springer, 2012.
[3]
R. E. Bryant, S. M. German, and M. N. Velev. Processor verification using efficient reductions of the logic of uninterpreted functions to propositional logic. ACM Trans. Comput. Log., 2(1):93--134, 2001.
[4]
J. R. Burch and D. L. Dill. Automatic verification of pipelined microprocessor control. In CAV'94, LNCS 818. Springer, 1994.
[5]
P. Cerný, T. A. Henzinger, A. Radhakrishna, L. Ryzhyk, and T. Tarrach. Efficient synthesis for concurrency by semantics-preserving transformations. In CAV'13, LNCS 8044. Springer, 2013.
[6]
S. Cherem, T. M. Chilimbi, and S. Gulwani. Inferring locks for atomic sections. In PLDI'08. ACM, 2008.
[7]
E. M. Clarke and E. A. Emerson. Design and synthesis of synchronization skeletons using branching-time temporal logic. In Logic of Programs. Springer, 1981.
[8]
E. M. Clarke, E. A. Emerson, and A. P. Sistla. Automatic verification of finite-state concurrent systems using temporal logic specifications. ACM Trans. Program. Lang. Syst., 8(2):244--263, 1986.
[9]
E. M. Clarke, D. Kroening, and F. Lerda. A tool for checking ANSI-C programs. In TACAS'04, LNCS 2988. Springer, 2004.
[10]
E. Cohen, M. Dahlweid, M. A. Hillebrand, D. Leinenbach, M. Moskal, T. Santen, W. Schulte, and S. Tobies. VCC: A practical system for verifying concurrent C. In TPHOLs'09, LNCS 5674. Springer, 2009.
[11]
L. Cordeiro and B. Fischer. Verifying multi-threaded software using SMT-based context-bounded model checking. In ICSE'11. ACM, 2011.
[12]
L. M. de Moura and N. Bjørner. Z3: An efficient SMT solver. In TACAS'08, 2008.
[13]
E. Farchi, Y. Nir, and S. Ur. Concurrent bug patterns and how to test them. In IPDPS'03. IEEE, 2003.
[14]
M. K. Ganai and A. Gupta. Efficient modeling of concurrent systems in BMC. In SPIN'08, LNCS 5156. Springer, 2008.
[15]
G. Hofferek and R. Bloem. Controller synthesis for pipelined circuits using uninterpreted functions. In MEMOCODE'11. IEEE, 2011.
[16]
G. Hofferek, A. Gupta, B. Könighofer, J.-H. R. Jiang, and R. Bloem. Synthesizing multiple boolean functions using interpolation on a single proof. In FMCAD'13. IEEE, 2013.
[17]
U. Junker. Quickxplain: Preferred explanations and relaxations for over-constrained problems. In AAAI'04. AAAI Press / The MIT Press, 2004.
[18]
V. Kahlon. Automatic lock insertion in concurrent programs. In FMCAD'12. IEEE, 2012.
[19]
A. Menezes, P. C. van Oorschot, and S. A. Vanstone. Handbook of Applied Cryptography. CRC Press, 1996.
[20]
A. Pnueli, O. Strichman, and M. Siegel. The code validation tool CVT: Automatic verification of a compilation process. STTT, 2(2):192--201, 1998.
[21]
I. Rabinovitz and O. Grumberg. Bounded model checking of concurrent programs. In CAV'05, LNCS 3576. Springer, 2005.
[22]
R. Reiter. A theory of diagnosis from first principles. Artif. Intell, 32(1), 1987.
[23]
A. Solar-Lezama, C. G. Jones, and R. Bodík. Sketching concurrent data structures. In PLDI'08. ACM, 2008.
[24]
M. T. Vechev, E. Yahav, and G. Yorsh. Abstraction-guided synthesis of synchronization. In POPL'10. ACM, 2010.

Cited By

View all
  • (2021)Grafs: declarative graph analyticsProceedings of the ACM on Programming Languages10.1145/34735885:ICFP(1-32)Online publication date: 19-Aug-2021
  • (2018)Datalog-based scalable semantic diffing of concurrent programsProceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering10.1145/3238147.3238211(656-666)Online publication date: 3-Sep-2018
  • (2017)From non-preemptive to preemptive scheduling using synchronization synthesisFormal Methods in System Design10.1007/s10703-016-0256-550:2-3(97-139)Online publication date: 1-Jun-2017
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Other conferences
FMCAD '14: Proceedings of the 14th Conference on Formal Methods in Computer-Aided Design
October 2014
219 pages
ISBN:9780983567844

Sponsors

  • FMCAD: FMCAD, Inc

In-Cooperation

Publisher

FMCAD Inc

Austin, Texas

Publication History

Published: 21 October 2014

Check for updates

Qualifiers

  • Tutorial
  • Research
  • Refereed limited

Conference

FMCAD '14
Sponsor:
  • FMCAD
FMCAD '14: Formal Methods in Computer-Aided Design
October 21 - 24, 2014
Lausanne, Switzerland

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)3
  • Downloads (Last 6 weeks)0
Reflects downloads up to 12 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2021)Grafs: declarative graph analyticsProceedings of the ACM on Programming Languages10.1145/34735885:ICFP(1-32)Online publication date: 19-Aug-2021
  • (2018)Datalog-based scalable semantic diffing of concurrent programsProceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering10.1145/3238147.3238211(656-666)Online publication date: 3-Sep-2018
  • (2017)From non-preemptive to preemptive scheduling using synchronization synthesisFormal Methods in System Design10.1007/s10703-016-0256-550:2-3(97-139)Online publication date: 1-Jun-2017
  • (2016)Specification, verification, and synthesis using extended state machines with callbacksProceedings of the 14th ACM-IEEE International Conference on Formal Methods and Models for System Design10.5555/3343414.3343428(95-104)Online publication date: 18-Nov-2016
  • (2015)ConcBugAssist: constraint solving for diagnosis and repair of concurrency bugsProceedings of the 2015 International Symposium on Software Testing and Analysis10.1145/2771783.2771798(165-176)Online publication date: 13-Jul-2015

View Options

Get Access

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