Skip to main content

Parallel Symbolic Execution: Merging In-Flight Requests

  • Conference paper
  • First Online:
Hardware and Software: Verification and Testing (HVC 2015)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 9434))

Included in the following conference series:

Abstract

The strength of symbolic execution is the systematic analysis and validation of all possible control flow paths of a program and their respective properties, which is done by use of a solver component. Thus, it can be used for program testing in many different domains, e.g. test generation, fault discovery, information leakage detection, or energy consumption analysis. But major challenges remain, notably the huge (up to infinite) number of possible paths and the high computation costs generated by the solver to check the satisfiability of the constraints imposed by the paths. To tackle these challenges, researchers proposed the parallelization of symbolic execution by dividing the state space and handling the parts independently. Although this approach scales out well, we can further improve it by proposing a thread-based parallelized approach. It allows us to reuse shared resources like caches more efficiently – a vital part to reduce the solving costs. More importantly, this architecture enables us to use a new technique, which merges parallel incoming solver requests, leveraging incremental solving capabilities provided by modern solvers. Our results show a reduction of the solver time up to 50 % over the multi-threaded execution.

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 EPUB and 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

Notes

  1. 1.

    https://github.com/klee/klee.

  2. 2.

    https://www.gnu.org/software/coreutils/.

References

  1. Anand, S., Naik, M., Harrold, M.J., Yang, H.: Automated concolic testing of smartphone apps. In: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, FSE 2012, pp. 59:1–59:11. ACM, New York (2012). http://doi.acm.org/10.1145/2393596.2393666

  2. Anand, S., Păsăreanu, C.S., Visser, W.: JPF–SE: a symbolic execution extension to Java PathFinder. In: Grumberg, O., Huth, M. (eds.) TACAS 2007. LNCS, vol. 4424, pp. 134–138. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  3. Avancini, A., Ceccato, M.: Comparison and integration of genetic algorithms and dynamic symbolic execution for security testing of cross-site scripting vulnerabilities. Inf. Softw. Tech. 55(12), 2209–2222 (2013). http://dx.doi.org/10.1016/j.infsof.2013.08.001

    Article  Google Scholar 

  4. Bucur, S., Ureche, V., Zamfir, C., Candea, G.: Parallel symbolic execution for automated real-world software testing. In: EuroSys 2011: Proceedings of the Sixth Conference on Computer Systems, pp. 183–198. ACM Request Permissions, New York, April 2011. http://portal.acm.org/citation.cfm?doid=1966445.1966463

  5. Cadar, C., Dunbar, D., Engler, D.: 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 2008, pp. 209–224. USENIX Association, Berkeley (2008). http://dl.acm.org/citation.cfm?id=1855741.1855756

  6. Cimatti, A., Griggio, A., Schaafsma, B.J., Sebastiani, R.: The MathSAT5 SMT solver. In: Piterman, N., Smolka, S.A. (eds.) TACAS 2013. LNCS, vol. 7795, pp. 93–107. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  7. Ciortea, L., Zamfir, C., Bucur, S., Chipounov, V., Candea, G.: Cloud9: a software testing service. ACM SIGOPS Operat. Syst. Rev. 43(4), 5–10 (2010). http://dl.acm.org/citation.cfm?id=1713254.1713257

    Article  Google Scholar 

  8. Corin, R., Manzano, F.A.: Taint analysis of security code in the KLEE symbolic execution engine. In: Chim, T.W., Yuen, T.H. (eds.) ICICS 2012. LNCS, vol. 7618, pp. 264–275. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  9. Ganesh, V., Dill, D.L.: A decision procedure for bit-vectors and arrays. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 519–531. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  10. Hönig, T., Eibel, C., Kapitza, R., Schröder-Preikschat, W.: SEEP: exploiting symbolic execution for energy-aware programming. Operat. Syst. Rev. 45(3), 58–62 (2011). http://doi.acm.org/10.1145/2094091.2094106

    Article  Google Scholar 

  11. King, A.: Distributed Parallel Symbolic Execution. Master’s thesis, August 2009

    Google Scholar 

  12. King, J.C.: Symbolic execution and program testing. Commun. ACM 19(7), 385–394 (1976). http://doi.acm.org/10.1145/360248.360252

    Article  MathSciNet  MATH  Google Scholar 

  13. Lattner, C., Adve, V.: LLVM: a compilation framework for lifelong program analysis & transformation. In: CGO 2004: Proceedings of the International Symposium on Code Generation and Optimization: Feedback-Directed and Runtime Optimization. pp. 75–86. IEEE Computer Society, March 2004. http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1281665

  14. Mirzaei, N., Malek, S., Pasareanu, C.S., Esfahani, N., Mahmood, R.: Testing android apps through symbolic execution. ACM SIGSOFT Softw. Eng. Not. 37(6), 1–5 (2012). http://doi.acm.org/10.1145/2382756.2382798

    Article  Google Scholar 

  15. de Moura, L., Bjørner, N.S.: Z3: an efficient smt solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  16. Palikareva, H., Cadar, C.: Multi-solver support in symbolic execution. In: Sharygina, N., Veith, H. (eds.) CAV 2013. LNCS, vol. 8044, pp. 53–68. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  17. Pötzl, D., Holzer, A.: Solving constraints for generational search. In: Veanes, M., Viganò, L. (eds.) TAP 2013. LNCS, vol. 7942, pp. 197–213. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  18. Staats, M., Pǎsǎreanu, C.: Parallel symbolic execution for structural test generation. In: The 19th International Symposium, p. 183. ACM Press, New York (2010). http://portal.acm.org/citation.cfm?doid=1831708.1831732

Download references

Acknowledgment

We thank the anonymous reviewers for their insightful comments. This work was partially founded by the German Research Foundation (DFG) under grant FE 1035/1-2.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Martin Nowack .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2015 Springer International Publishing Switzerland

About this paper

Cite this paper

Nowack, M., Tietze, K., Fetzer, C. (2015). Parallel Symbolic Execution: Merging In-Flight Requests. In: Piterman, N. (eds) Hardware and Software: Verification and Testing. HVC 2015. Lecture Notes in Computer Science(), vol 9434. Springer, Cham. https://doi.org/10.1007/978-3-319-26287-1_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-26287-1_8

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-26286-4

  • Online ISBN: 978-3-319-26287-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics