Abstract
The notion that certain procedures are atomic provides a valuable partial specification for many multithreaded software systems. Several existing tools verify atomicity by showing that every interleaved execution reduces to an equivalent serial execution (in which the actions of each atomic procedure are not interleaved with actions of other threads). However, experiments with these tools have highlighted a number of interesting procedures that, although atomic, are not reducible.
This paper presents a more complete technique for verifying atomicity. Essentially, this technique explores non-serial and serial executions of the multithreaded system simultaneously to ensure that every non-serial execution yields the same final state as the corresponding serial execution. Using the SPIN model checker, we have applied this technique to verify the atomicity of a number of irreducible procedures that could not be handled by previous reduction-based tools for checking atomicity.
This work was partly supported by the NSF under Grant CCR-03411797 and by faculty research funds granted by the University of California at Santa Cruz.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Atkinson, M.P., Chisholm, K.J., Cockshott, W.P.: PS-Algol: an Algol with a persistent heap. ACM SIGPLAN Notices 17(7), 24–31 (1981)
Atkinson, M.P., Morrison, D.: Procedures as persistent data objects. ACM Transactions on Programming Languages and Systems 7(4), 539–559 (1985)
Back, R.-J.: A method for refining atomicity in parallel algorithms. In: Odijk, E., Rem, M., Syre, J.-C. (eds.) PARLE 1989. LNCS, vol. 366, pp. 199–216. Springer, Heidelberg (1989)
Cohen, E., Lamport, L.: Reduction in TLA. In: Sangiorgi, D., de Simone, R. (eds.) CONCUR 1998. LNCS, vol. 1466, pp. 317–331. Springer, Heidelberg (1998)
Deng, X., Dwyer, M., Hatcliff, J., Mizuno, M.: Invariant-based specification, synthesis, and verification of synchronization in concurrent programs. In: International Conference on Software Engineering, pp. 442–452 (2002)
Doeppner Jr., T.W.: Parallel program correctness through refinement. In: Proceedings of the ACM Symposium on the Principles of Programming Languages, pp. 155–169 (1977)
Eppinger, J.L., Mummert, L.B., Spector, A.Z.: Camelot and Avalon: A Distributed Transaction Facility. Morgan Kaufmann, San Francisco (1991)
Flanagan, C., Freund, S.N.: Atomizer: A dynamic atomicity checker for multithreaded programs. In: Proceedings of the ACM Symposium on the Principles of Programming Languages (2004)
Flanagan, C., Qadeer, S.: A type and effect system for atomicity. In: Proceedings of the ACM Conference on Programming Language Design and Implementation, pp. 338–349 (2003)
Flanagan, C., Qadeer, S.: Types for atomicity. In: Proceedings of the ACM Workshop on Types in Language Design and Implementation, pp. 1–12 (2003)
Freund, S.N., Qadeer, S.: Checking concise specifications for multithreaded software. In: Workshop on Formal Techniques for Java-like Programs (2003)
Harris, T.L., Fraser, K.: Language support for lightweight transactions. In: Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, pp. 388–402 (2003)
Hatcliff, J., Robby, Dwyer, M.B.: Verifying atomicity specifications for concurrent object-oriented software using model-checking. In: Proceedings of the International Conference on Verification, Model Checking and Abstract Interpretation (2004)
Herlihy, M.P., Wing, J.M.: Linearizability: A correctness condition for concurrent objects. ACM Transactions on Programming Languages and Systems 12(3), 463–492 (1990)
Lamport, L., Schneider, F.B.: Pretending atomicity. Research Report 44, DEC Systems Research Center (1989)
Lipton, R.J.: Reduction: A method of proving properties of parallel programs. Communications of the ACM 18(12), 717–721 (1975)
Liskov, B., Curtis, D., Johnson, P., Scheifler, R.: Implementation of Argus. In: Proceedings of the Symposium on Operating Systems Principles, pp. 111–122 (1987)
Lomet, D.B.: Process structuring, synchronization, and recovery using atomic actions. Language Design for Reliable Software, 128–137 (1977)
Misra, J.: A Discipline of Multiprogramming: Programming Theory for Distributed Applications. Springer, Heidelberg (2001)
Papadimitriou, C.: The theory of database concurrency control. Computer Science Press, Rockville (1986)
Peled, D.: Combining partial order reductions with on-the-fly model-checking. In: Dill, D. (ed.) CAV 1994. LNCS, vol. 818, pp. 377–390. Springer, Heidelberg (1994)
Qadeer, S., Wu, D.: Debugging concurrent programs with sequential analysis (2003) (submitted for publication)
Wang, L., Stoller, S.D.: Run-time analysis for atomicity. In: Proceedings of the Workshop on Runtime Verification. Electronic Notes in Computer Science, vol. 89(2), Elsevier, Amsterdam (2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Flanagan, C. (2004). Verifying Commit-Atomicity Using Model-Checking. In: Graf, S., Mounier, L. (eds) Model Checking Software. SPIN 2004. Lecture Notes in Computer Science, vol 2989. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-24732-6_18
Download citation
DOI: https://doi.org/10.1007/978-3-540-24732-6_18
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-21314-7
Online ISBN: 978-3-540-24732-6
eBook Packages: Springer Book Archive