Skip to main content

Specifying and Verifying the Correctness of Dynamic Software Updates

  • Conference paper

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

Abstract

Dynamic software updating (DSU) systems allow running programs to be patched on-the-fly to add features or fix bugs. While dynamic updates can be tricky to write, techniques for establishing their correctness have received little attention. In this paper, we present the first methodology for automatically verifying the correctness of dynamic updates. Programmers express the desired properties of an updated execution using client-oriented specifications (CO-specs), which can describe a wide range of client-visible behaviors. We verify CO-specs automatically by using off-the-shelf tools to analyze a merged program, which is a combination of the old and new versions of a program. We formalize the merging transformation and prove it correct. We have implemented a program merger for C, and applied it to updates for the Redis key-value store and several synthetic programs. Using Thor, a verification tool, we could verify many of the synthetic programs; using Otter, a symbolic executor, we could analyze every program, often in less than a minute. Both tools were able to detect faulty patches and incurred only a factor-of-four slowdown, on average, compared to single version programs.

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

Buying options

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

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Ajmani, S., Liskov, B., Shrira, L.: Modular Software Upgrades for Distributed Systems. In: Hu, Q. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 452–476. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  2. Armstrong, J., Virding, R., Wikstrom, C., Williams, M.: Concurrent programming in ERLANG, 2nd edn. Prentice Hall International Ltd. (1996)

    Google Scholar 

  3. Bloom, T., Day, M.: Reconfiguration and module replacement in Argus: theory and practice. Software Engineering Journal 8(2), 102–108 (1993)

    Article  Google Scholar 

  4. Bracha, G.: Objects as software services (August 2006), http://bracha.org/objectsAsSoftwareServices.pdf

  5. Cassandra API overview, http://wiki.apache.org/cassandra/API

  6. Charlton, N., Horsfall, B., Reus, B.: Formal reasoning about runtime code update. In: HOTSWUP (2011)

    Google Scholar 

  7. Duggan, D.: Type-based hot swapping of running modules. In: ICFP (2001)

    Google Scholar 

  8. Flanagan, C., Sabry, A., Duba, B.F., Felleisen, M.: The essence of compiling with continuations. In: PLDI (1993)

    Google Scholar 

  9. Gupta, D., Jalote, P., Barua, G.: A formal framework for on-line software version change. IEEE TSE 22(2) (1996)

    Google Scholar 

  10. Hayden, C.M., Hardisty, E.A., Hicks, M., Foster, J.S.: Efficient Systematic Testing for Dynamically Updatable Software. In: HOTSWUP (2009)

    Google Scholar 

  11. Hayden, C.M., Magill, S., Hicks, M., Foster, N., Foster, J.S.: Specifying and verifying the correctness of dynamic software updates (extended version). Technical Report CS-TR-4997, Dept. of Computer Science, University of Maryland (2011)

    Google Scholar 

  12. Hayden, C.M., Smith, E.K., Hardisty, E.A., Hicks, M., Foster, J.S.: Evaluating dynamic software update safety using systematic testing (March 2011)

    Google Scholar 

  13. Hicks, M., Nettles, S.: Dynamic software updating. ACM TOPLAS 27(6) (2005)

    Google Scholar 

  14. The K42 Project, http://www.research.ibm.com/K42/

  15. Kramer, J., Magee, J.: The evolving philosophers problem: Dynamic change management. IEEE TSE 16(11) (1990)

    Google Scholar 

  16. Never reboot Linux for Linux security updates : Ksplice, http://www.ksplice.com

  17. Magill, S., Tsai, M.-H., Lee, P., Tsay, Y.-K.: THOR: A Tool for Reasoning about Shape and Arithmetic. In: Gupta, A., Malik, S. (eds.) CAV 2008. LNCS, vol. 5123, pp. 428–432. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  18. Magill, S., Tsai, M.-H., Lee, P., Tsay, Y.-K.: Automatic numeric abstractions for heap-manipulating programs. In: POPL (2010)

    Google Scholar 

  19. Neamtiu, I., Hicks, M., Stoyle, G., Oriol, M.: Practical dynamic software updating for C. In: PLDI (2006)

    Google Scholar 

  20. Qadeer, S., Wu, D.: KISS: Leep it simple and sequential. In: PLDI (2004)

    Google Scholar 

  21. The Redis project, http://code.google.com/p/redis/

  22. Reisner, E., Song, C., Ma, K.-K., Foster, J.S., Porter, A.: Using symbolic evaluation to understand behavior in configurable software systems. In: ICSE (2010)

    Google Scholar 

  23. Stoyle, G., Hicks, M., Bierman, G., Sewell, P., Neamtiu, I.: Mutatis Mutandis: Safe and flexible dynamic software updating. ACM TOPLAS 29(4) (2007)

    Google Scholar 

  24. Subramanian, S., Hicks, M., McKinley, K.S.: Dynamic software updates for Java: A VM-centric approach. In: PLDI (2009)

    Google Scholar 

  25. Walton, C.: Abstract Machines for Dynamic Computation. PhD thesis, University of Edinburgh, ECS-LFCS-01-425 (2001)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2012 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Hayden, C.M., Magill, S., Hicks, M., Foster, N., Foster, J.S. (2012). Specifying and Verifying the Correctness of Dynamic Software Updates. In: Joshi, R., Müller, P., Podelski, A. (eds) Verified Software: Theories, Tools, Experiments. VSTTE 2012. Lecture Notes in Computer Science, vol 7152. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-27705-4_22

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-27705-4_22

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-27704-7

  • Online ISBN: 978-3-642-27705-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics