skip to main content
research-article

Distributed Assertion Checking Using Symbolic Execution

Published: 11 November 2015 Publication History

Abstract

Annotating functional correctness properties of code using assertions, in principle, enables systematic checking of code against behavioral properties. In practice however, checking assertions can be costly, especially for complex code annotated with rich behavioral properties. This paper introduces a novel approach for distributing the problem of checking assertions for better scalability. Leveraging that assertions should be side effect free, our approach distributes assertion checking into simpler sub-problems---each focusing on checking one single assertion, so that different assertions are checked in parallel among multiple workers. Furthermore, the sub-problem analysis performed by each worker is guided by the checked assertion to avoid irrelevant path exploration and is prioritized based on the distance towards the checked assertion to provide earlier feedback. A case study shows that our approach can provide a reduction in analysis time required for symbolic execution of Java programs compared to non-distributed approach using the Symbolic PathFinder tool.

References

[1]
D. Beyer, T. A. Henzinger, R. Jhala, and R. Majumdar. The software model checker blast: Applications to software engineering. Int. J. Softw. Tools Technol. Transf., 9(5):505--525, Oct. 2007.
[2]
C. Boyapati, S. Khurshid, and D. Marinov. Korat: automated testing based on Java predicates. In Proceedings of the 2002 ACM SIGSOFT International Symposium on Software Testing and Analysis, ISSTA '02, pages 123--133, New York, NY, USA, 2002. ACM.
[3]
C. Cadar, D. Dunbar, and D. Engler. KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation (OSDI), pages 209--224, 2008.
[4]
E. M. Clarke, D. Kroening, and F. Lerda. A tool for checking ANSI-C programs. In Proceedings of the 10th International Conference Tools and Algorithms for the Construction and Analysis of Systems (TACAS), pages 168--176, 2004.
[5]
L. A. Clarke. A program testing system. In Proceedings of the 1976 annual conference, ACM '76, pages 488--491. ACM, 1976.
[6]
L. A. Clarke and D. S. Rosenblum. A historical perspective on runtime assertion checking in software development. SIGSOFT Software Engineering Notes, 31(3), 2006.
[7]
M. B. Dwyer, S. G. Elbaum, S. Person, and R. Purandare. Parallel randomized state-space search. In Proceedings of the 29th International Conference on Software Engineering (ICSE), pages 3--12, 2007.
[8]
K. Ghori. Constraint-based program repair. Master's thesis, Department of Electrical and Computer Engineering, University of Texas at Austin, Aug. 2006.
[9]
P. Godefroid. Model checking for programming languages using VeriSoft. In Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), pages 174--186, 1997.
[10]
P. Godefroid, N. Klarlund, and K. Sen. DART: Directed automated random testing. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 213--223, 2005.
[11]
P. Godefroid and D. Luchaup. Automatic partial loop summarization in dynamic test generation. In Proceedings of the 2011 International Symposium on Software Testing and Analysis, ISSTA '11, pages 23--33, New York, NY, USA, 2011. ACM.
[12]
G. J. Holzmann and D. Bosnacki. The design of a multicore extension of the spin model checker. IEEE Transactions Software Engineering, 33(10):659--674, Oct. 2007.
[13]
G. J. Holzmann, R. Joshi, and A. Groce. Swarm verification techniques. IEEE Transactions Software Engineering, 37(6):845--857, Nov. 2011.
[14]
D. Jackson and M. Vaziri. Finding bugs with a constraint solver. In Proceedings of the 2000 International Symposium on Software Testing and Analysis, ISSTA '00, pages 14--25, New York, NY, USA, 2000. ACM.
[15]
J. A. Jones. Semi-Automatic Fault Localization. PhD thesis, Georgia Institute of Technology, Atlanta, GA, 2008.
[16]
S. Khurshid, C. S. Păsăreanu, and W. Visser. Generalized symbolic execution for model checking and testing. In Proceedings of the 9th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), pages 553--568, 2003.
[17]
J. C. King. Symbolic execution and program testing. Communications of the ACM, 19(7):385--394, 1976.
[18]
F. Lerda and W. Visser. Addressing dynamic issues of program model checking. In Proceedings of the 8th International SPIN Workshop on Model Checking of Software (SPIN), pages 80--102, 2001.
[19]
C. S. Păsăreanu, W. Visser, D. Bushnell, J. Geldenhuys, P. Mehlitz, and N. Rungta. Symbolic Pathfinder: integrating symbolic execution with model checking for Java bytecode analysis. Automated Software Engineering, 20(3):391--425, 2013.
[20]
C. S. Păsăreanu and N. Rungta. Symbolic PathFinder: symbolic execution of Java bytecode. In Proceedings of the IEEE/ACM International Conference on Automated Software Engineering (ASE), pages 179--180, 2010.
[21]
K. Sen, D. Marinov, and G. Agha. CUTE: a concolic unit testing engine for C. In Proceedings of the 10th European Software Engineering Conference held jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE), pages 263--272, 2005.
[22]
J. H. Siddiqui and S. Khurshid. ParSym: Parallel symbolic execution. In Proceedings of the 2nd International Conference on Software Technology and Engineering, pages V1-405--V1-409, 2010.
[23]
J. H. Siddiqui and S. Khurshid. Scaling symbolic execution using ranged analysis. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA '12, pages 523--536, New York, NY, USA, 2012. ACM.
[24]
M. Staats and C. Păsăreanu. Parallel symbolic execution for structural test generation. In Proceedings of the 19th International Symposium on Software Testing and Analysis, ISSTA '10, pages 183--194, New York, NY, USA, 2010. ACM.
[25]
U. Stern and D. L. Dill. Parallelizing the murphi verifier. In Proceedings of the 9th International Conference on Computer Aided Verification (CAV), CAV '97, pages 256--278, 1997.
[26]
W. Visser, K. Havelund, G. Brat, S. Park, and F. Lerda. Model checking programs. Automated Software Engg., 10(2):203--232, Apr. 2003.
[27]
G. Yang, S. Khurshid, S. Person, and N. Rungta. Property differencing for incremental checking. In Proceedings of the 36th International Conference on Software Engineering, ICSE 2014, pages 1059--1070, New York, NY, USA, 2014. ACM.
[28]
L. Zhang, G. Yang, N. Rungta, S. Person, and S. Khurshid. Feedback-driven dynamic invariant discovery. In Proceedings of the 2014 International Symposium on Software Testing and Analysis, ISSTA 2014, pages 362--372, New York, NY, USA, 2014. ACM.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGSOFT Software Engineering Notes
ACM SIGSOFT Software Engineering Notes  Volume 40, Issue 6
November 2015
77 pages
ISSN:0163-5948
DOI:10.1145/2830719
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 November 2015
Published in SIGSOFT Volume 40, Issue 6

Check for updates

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)1
  • Downloads (Last 6 weeks)0
Reflects downloads up to 08 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Parallel program analysis on path rangesScience of Computer Programming10.1016/j.scico.2024.103154238:COnline publication date: 1-Dec-2024
  • (2024)CPA-Daemon: Mitigating Tool Restarts for Java-Based VerifiersAutomated Technology for Verification and Analysis10.1007/978-3-031-78750-8_8(158-173)Online publication date: 21-Oct-2024
  • (2023)Ranged Program Analysis via InstrumentationSoftware Engineering and Formal Methods10.1007/978-3-031-47115-5_9(145-164)Online publication date: 6-Nov-2023
  • (2023)Parallel Program Analysis via Range SplittingFundamental Approaches to Software Engineering10.1007/978-3-031-30826-0_11(195-219)Online publication date: 20-Apr-2023
  • (2019)Parallel property checking with staged symbolic executionProceedings of the 34th ACM/SIGAPP Symposium on Applied Computing10.1145/3297280.3297457(1802-1809)Online publication date: 8-Apr-2019
  • (2017)Staged Symbolic Execution for Parallel Property CheckingACM SIGSOFT Software Engineering Notes10.1145/3011286.301129741:6(1-5)Online publication date: 5-Jan-2017

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media