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.
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
King, J.C.: Symbolic Execution and Program Testing. Communications of the ACM 19(7), 385–394 (1976)
Gecode Tool-set. http://www.gecode.org/
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)
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
Allen, F.E.: Control flow analysis. SIGPLAN Not. 5(7), 1–19 (1970)
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)
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)
Csallner, C., Smaragdakis, Y.: JCrasher: an Automatic Robustness Tester for Java. Software Practice and Experience 34(11), 1025–1050 (2004)
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)
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)
Coward, P.D.: Symbolic Execution Systems - a Review. Software Engineering Journal 3(6), 229–239 (1988)
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)
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)
Java PathFinder Tool-set. http://babelfish.arc.nasa.gov/trac/jpf
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)
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)
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)
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)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights 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)