Skip to main content

Adding Constraint Building Mechanisms to a Symbolic Execution Engine Developed for Detecting Runtime Errors

  • Conference paper
  • First Online:
Computational Science and Its Applications -- ICCSA 2015 (ICCSA 2015)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 9159))

Included in the following conference series:

Abstract

Most of the runtime failures of a software system can be revealed during test execution only, which has a very high cost. The symbolic execution engine developed at the Software Engineering Department of University of Szeged is able to detect runtime errors (such as null pointer dereference, bad array indexing, division by zero) in Java programs without running the program in real-life environment.

In this paper we present a constraint system building mechanism which improves the accuracy of the runtime errors found by the symbolic execution engine mentioned above. We extend the original principles of symbolic execution by tracking the dependencies of the symbolic variables and substituting them with concrete values if the built constraint system unambiguously determines their value.

The extended symbolic execution checker was tested on real-life open-source systems as well.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. King, J.C.: Symbolic Execution and Program Testing. Communications of the ACM 19(7), 385–394 (1976)

    Article  MATH  Google Scholar 

  2. Gecode Tool-set. http://www.gecode.org/

  3. Kádár, I., Hegedűs, P., Ferenc, R.: Runtime exception detection in java programs using symbolic execution. Acta Cybernetica 21(3), 331–352 (2014)

    MATH  Google Scholar 

  4. Ferenc, R., Beszédes, Á., Tarkiainen, M., Gyimóthy, T.: Columbus – reverse engineering tool and schema for C++. In: Proceedings of the 18th International Conference on Software Maintenance (ICSM 2002), pp. 172–181. IEEE Computer Society, October 2002

    Google Scholar 

  5. Allen, F.E.: Control flow analysis. SIGPLAN Not. 5(7), 1–19 (1970)

    Article  Google Scholar 

  6. Păsăreanu, C.S., Rungta, N.: Symbolic pathfinder: symbolic execution of Java bytecode. In: Proceedings of the IEEE/ACM International Conference on Automated Software Engineering, ASE 2010, pp. 179–180. ACM, New York (2010)

    Google Scholar 

  7. Weimer, W., Necula, G.C.: Finding and preventing run-time error handling mistakes. In: Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, OOPSLA 2004, pp. 419–431. ACM, New York (2004)

    Google Scholar 

  8. Csallner, C., Smaragdakis, Y.: JCrasher: an Automatic Robustness Tester for Java. Software Practice and Experience 34(11), 1025–1050 (2004)

    Article  Google Scholar 

  9. Godefroid, P., Klarlund, N., Sen, K.: DART: directed automated random testing. In: Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2005, pp. 213–223. ACM, New York (2005)

    Google Scholar 

  10. Cadar, C., Ganesh, V., Pawlowski, P.M., Dill, D.L., Engler, D.R.: EXE: automatically generating inputs of death. In: Proceedings of the 13th ACM Conference on Computer and Communications Security, CCS 2006, pp. 322–335. ACM, New York (2006)

    Google Scholar 

  11. Coward, P.D.: Symbolic Execution Systems - a Review. Software Engineering Journal 3(6), 229–239 (1988)

    Article  Google Scholar 

  12. Cadar, C., Godefroid, P., Khurshid, S., Păsăreanu, C.S., Sen, K., Tillmann, N., Visser, W.: Symbolic execution for software testing in practice: preliminary assessment. In: Proceedings of the 33rd International Conference on Software Engineering, ICSE 2011, pp. 1066–1071. ACM, New York (2011)

    Google Scholar 

  13. Song, J., Ma, T., Cadar, C., Pietzuch, P.: Rule-based verification of network protocol implementations using symbolic execution. In: Proceedings of the 20th IEEE International Conference on Computer Communications and Networks (ICCCN 2011), pp. 1–8 (2011)

    Google Scholar 

  14. Java PathFinder Tool-set. http://babelfish.arc.nasa.gov/trac/jpf

  15. Bushnell, D., Giannakopoulou, D., Mehlitz, P., Paielli, R., Păsăreanu, C.S.: Verification and validation of air traffic systems: tactical separation assurance. In: 2009 IEEE Aerospace Conference, pp. 1–10 (2009)

    Google Scholar 

  16. Khoo, Y.P., Chang, B.Y.E., Foster, J.S.: Mixing type checking and symbolic execution. In: Zorn, B.G., Aiken, A. (eds.) PLDI, pp. 436–447. ACM (2010)

    Google Scholar 

  17. Shannon, D., Zhan, D., Hajra, S., Lee, A., Khurshid, S.: Abstracting symbolic execution with string analysis testing. In: Academic and Industrial Conference Practice and Research TechniquesMUTATION, 2007. Taicpart-Mutation (2007)

    Google Scholar 

  18. Păsăreanu, C.S., Rungta, N., Visser, W.: Symbolic execution with mixed concrete-symbolic solving. In: Proceedings of the 2011 International Symposium on Software Testing and Analysis, ISSTA 2011, pp. 34–44. ACM, New York (2011)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Péter Hegedűs .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2015 Springer International Publishing Switzerland

About this paper

Cite this paper

Kádár, I., Hegedűs, P., Ferenc, R. (2015). Adding Constraint Building Mechanisms to a Symbolic Execution Engine Developed for Detecting Runtime Errors. In: Gervasi, O., et al. Computational Science and Its Applications -- ICCSA 2015. ICCSA 2015. Lecture Notes in Computer Science(), vol 9159. Springer, Cham. https://doi.org/10.1007/978-3-319-21413-9_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-21413-9_2

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-21412-2

  • Online ISBN: 978-3-319-21413-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics