Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/1928137.1928160guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Context-bounded translations for concurrent software: an empirical evaluation

Published: 27 September 2010 Publication History

Abstract

Context-Bounded Analysis has emerged as a practical automatic formal analysis technique for fine-grained, shared-memory concurrent software. Two recent papers (in CAV 2008 and 2009) have proposed ingenious translation approaches that promise much better scalability, backed by compelling, but differing, theoretical and conceptual advantages. Empirical evidence comparing the translations, however, has been lacking. Furthermore, these papers focused exclusively on Boolean model checking, ignoring the also widely used paradigm of verification-condition checking. In this paper, we undertake a methodical, empirical evaluation of the three main source-to-source translations for context-bounded analysis of concurrent software, in a verification-condition-checking paradigm. We evaluate their scalability under a wide range of experimental conditions. Our results show: (1) The newest, CAV 2009 translation is the clear loser, with the CAV 2008 translation the best in most instances, but the oldest, brute-force translation doing surprisingly well. Clearly, previous results for Boolean model checking do not apply to verification-condition checking. (2) Disturbingly, confounding factors in the experimental design can change the relative performance of the translations, highlighting the importance of extensive and thorough experiments. For example, using a different (slower) SMT solver changes the relative ranking of the translations, potentially misleading researchers and practitioners to use an inferior translation. (3) SMT runtimes grow exponentially with verification-condition length, but different translations and parameters give different exponential curves. This suggests that the practical scalability of a translation scheme might be estimated by combining the size of the queries with an empirical or theoretical measure of the complexity of solving that class of query.

References

[1]
Babic, D., Hu, A.J.: Calysto: Scalable and precise extended static checking. In: Intl. Conf. on Software Engineering (ICSE), pp. 211-220 (2008).
[2]
Ball, T., Majumdar, R., Millstein, T., Rajamani, S.K.: Automatic predicate abstraction of C programs. In: Conf. on Programming Language Design and Implementation (PLDI), pp. 203-213 (2001).
[3]
Barnett, M., Chang, B.-Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: A modular reusable verifier for object-oriented programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO2005. LNCS, vol. 4111, pp. 364-387. Springer, Heidelberg (2006).
[4]
Barrett, C., Tinelli, C.: CVC3. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 298-302. Springer, Heidelberg (2007).
[5]
Chatterjee, S., Lahiri, S.K., Qadeer, S., Rakamaric, Z.: A reachability predicate for analyzing low-level software. In: Grumberg, O., Huth, M. (eds.) TACAS 2007. LNCS, vol. 4424, pp. 19-33. Springer, Heidelberg (2007).
[6]
Clarke, E.M., Biere, A., Raimi, R., Zhu, Y.: Bounded model checking using satisfiability solving. Formal Methods in System Design (FMSD) 19(1), 7-34 (2001).
[7]
Clarke, E.M., Emerson, E.A.: Design and synthesis of synchronization skeletons using branching-time temporal logic. In: Logic of Programs, Workshop, pp. 52-71 (1981).
[8]
Clarke, E.M., Kroening, D., Lerda, F.: A tool for checking ANSI-C programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168-176. Springer, Heidelberg (2004).
[9]
Clarke, E.M., Kroening, D., Sharygina, N., Yorav, K.: Predicate abstraction of ANSI-C programs using SAT. Formal Methods in System Design (FMSD) 25, 105-127 (2004).
[10]
Corbett, J.C., Dwyer, M.B., Hatcliff, J., Laubach, S., Pasareanu, C.S., Robby, Zheng, H.: Bandera: Extracting finite-state models from Java source code. In: Intl. Conf. on Software Engineering (ICSE), pp. 439-448 (2000).
[11]
de Moura, L., Bjørner, N.: Z3: An efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337-340. Springer, Heidelberg (2008).
[12]
DeLine, R., Leino, K.R.M.: BoogiePL: A typed procedural language for checking object-oriented programs. Technical Report MSR-TR-2005-70, Microsoft Research (2005).
[13]
Demartini, C., Iosif, R., Sisto, R.: A deadlock detection tool for concurrent Java programs. Software -- Practice and Experience 29(7), 577-603 (1999).
[14]
Dijkstra, E.W.: Guarded commands, nondeterminacy and formal derivation of programs. Communications of the ACM 18, 453-457 (1975).
[15]
Esparza, J., Schwoon, S.: A BDD-based model checker for recursive programs. In: Berry, G., Comon, H., Finkel, A. (eds.) CAV 2001. LNCS, vol. 2102, pp. 324-336. Springer, Heidelberg (2001).
[16]
Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for Java. In: Conf. on Programming Language Design and Implementation (PLDI), pp. 234-245 (2002).
[17]
Ganai, M.K., Gupta, A.: Efficient modeling of concurrent systems in BMC. In: Havelund, K., Majumdar, R., Palsberg, J. (eds.) SPIN 2008. LNCS, vol. 5156, pp. 114-133. Springer, Heidelberg (2008).
[18]
Holzmann, G.J.: Design and Validation of Computer Protocols. Prentice-Hall, Englewood Cliffs (1991).
[19]
Holzmann, G.J., Smith, M.H.: Software model checking. In: Formal Methods for Protocol Engineering and Distributed Systems (FORTE), pp. 481-497 (1999).
[20]
Kahlon, V., Sankaranarayanan, S., Gupta, A.: Semantic reduction of thread interleavings in concurrent programs. In: Tools and Algorithms for the Construction and Analysis of Systems (TACAS), pp. 124-138 (2009).
[21]
Lahiri, S.K., Qadeer, S., Rakamaric, Z.: Static and precise detection of concurrency errors in systems code using SMT solvers. In: Bouajjani, A., Maler, O. (eds.) CAV 2009. LNCS, vol. 5643, pp. 509-524. Springer, Heidelberg (2009).
[22]
Lal, A., Reps, T.W.: Reducing concurrent analysis under a context bound to sequential analysis. In: Gupta, A., Malik, S. (eds.) CAV 2008. LNCS, vol. 5123, pp. 37-51. Springer, Heidelberg (2008).
[23]
Lal, A., Touili, T., Kidd, N., Reps, T.W.: Interprocedural analysis of concurrent programs under a context bound. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 282-298. Springer, Heidelberg (2008).
[24]
Musuvathi, M., Qadeer, S.: Iterative context bounding for systematic testing of multithreaded programs. In: Conf. on Programming Language Design and Implementation (PLDI), pp. 446-455 (2007).
[25]
Qadeer, S., Rehof, J.: Context-bounded model checking of concurrent software. In: Halbwachs, N., Zuck, L.D. (eds.) TACAS 2005. LNCS, vol. 3440, pp. 93-107. Springer, Heidelberg (2005).
[26]
Qadeer, S., Wu, D.: KISS: Keep it simple and sequential. In: Conf. on Programming Language Design and Implementation (PLDI), pp. 14-24 (2004).
[27]
Rabinovitz, I., Grumberg, O.: Bounded model checking of concurrent programs. In: Etessami, K., Rajamani, S.K. (eds.) CAV 2005. LNCS, vol. 3576, pp. 82-97. Springer, Heidelberg (2005).
[28]
Rakamaric, Z., Hu, A.J.: A scalable memory model for low-level code. In: Jones, N.D., Müller-Olm, M. (eds.) VMCAI 2009. LNCS, vol. 5403, pp. 290-304. Springer, Heidelberg (2009).
[29]
Schulte, W., Xia, S., Smans, J., Piessens, F.: A glimpse of a verifying C compiler (extended abstract). In: C/C++ Verification Workshop, CCV (2007).
[30]
Suwimonteerabuth, D., Esparza, J., Schwoon, S.: Symbolic context-bounded analysis of multithreaded Java programs. In: Havelund, K., Majumdar, R., Palsberg, J. (eds.) SPIN 2008. LNCS, vol. 5156, pp. 270-287. Springer, Heidelberg (2008).
[31]
Torre, S.L., Madhusudan, P., Parlato, G.: Reducing context-bounded concurrent reachability to sequential reachability. In: Bouajjani, A., Maler, O. (eds.) CAV 2009. LNCS, vol. 5643, pp. 477-492. Springer, Heidelberg (2009).
[32]
Visser, W., Havelund, K., Brat, G.P., Park, S., Lerda, F.: Model checking programs. Automated Software Engineering 10(2), 203-232 (2003).

Cited By

View all
  • (2021)Bounded Verification of Multi-threaded Programs via Lazy SequentializationACM Transactions on Programming Languages and Systems10.1145/347853644:1(1-50)Online publication date: 9-Dec-2021
  • (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
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
SPIN'10: Proceedings of the 17th international SPIN conference on Model checking software
September 2010
261 pages
ISBN:3642161634

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 27 September 2010

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

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

Other Metrics

Citations

Cited By

View all
  • (2021)Bounded Verification of Multi-threaded Programs via Lazy SequentializationACM Transactions on Programming Languages and Systems10.1145/347853644:1(1-50)Online publication date: 9-Dec-2021
  • (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
  • (2014)Efficient Verification of Periodic Programs using Sequential Consistency and SnapshotsProceedings of the 14th Conference on Formal Methods in Computer-Aided Design10.5555/2682923.2682939(51-58)Online publication date: 21-Oct-2014
  • (2014)Bounded Model Checking of Multi-threaded C Programs via Lazy SequentializationProceedings of the 16th International Conference on Computer Aided Verification - Volume 855910.1007/978-3-319-08867-9_39(585-602)Online publication date: 18-Jul-2014
  • (2013)Compositional Sequentialization of Periodic ProgramsProceedings of the 14th International Conference on Verification, Model Checking, and Abstract Interpretation - Volume 773710.1007/978-3-642-35873-9_31(536-554)Online publication date: 20-Jan-2013
  • (2011)Time-bounded analysis of real-time systemsProceedings of the International Conference on Formal Methods in Computer-Aided Design10.5555/2157654.2157669(72-80)Online publication date: 30-Oct-2011
  • (2011)On sequentializing concurrent programsProceedings of the 18th international conference on Static analysis10.5555/2041552.2041565(129-145)Online publication date: 14-Sep-2011
  • (2011)Compositionality entails sequentializabilityProceedings of the 17th international conference on Tools and algorithms for the construction and analysis of systems: part of the joint European conferences on theory and practice of software10.5555/1987389.1987394(26-40)Online publication date: 26-Mar-2011
  • (2011)Verifying multi-threaded software using smt-based context-bounded model checkingProceedings of the 33rd International Conference on Software Engineering10.1145/1985793.1985839(331-340)Online publication date: 21-May-2011
  • Show More Cited By

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media