Staccato: A Bug Finder for Dynamic Configuration Updates

Authors John Toman, Dan Grossman

Thumbnail PDF


  • Filesize: 0.6 MB
  • 25 pages

Document Identifiers

Author Details

John Toman
Dan Grossman

Cite AsGet BibTex

John Toman and Dan Grossman. Staccato: A Bug Finder for Dynamic Configuration Updates. In 30th European Conference on Object-Oriented Programming (ECOOP 2016). Leibniz International Proceedings in Informatics (LIPIcs), Volume 56, pp. 24:1-24:25, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2016)


Modern software applications are highly configurable, allowing configuration options to be changed even during program execution. When dynamic configuration updating is implemented incorrectly, program errors can result. These program errors occur primarily when stale data—computed from old configurations—or inconsistent data—computed from different configurations—are used. We introduce Staccato, the first tool designed to detect these errors. Staccato uses a dynamic analysis in the style of taint analysis to find the use of stale configuration data in Java programs. It supports concurrent programs running on commodity JVMs. In some cases, Staccato can provide automatic bug avoidance and semi-automatic repair when errors occur. We evaluated Staccato on 3 open-source applications that support complex reconfigurability. Staccato found multiple errors in all of them. Staccato requires only modest annotation overhead and has moderate performance overhead.
  • Dynamic Configuration Updates
  • Dynamic Analysis
  • Software configuration


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Mona Attariyan, Michael Chow, and Jason Flinn. X-ray: Automating root-cause diagnosis of performance anomalies in production software. In OSDI, 2012. Google Scholar
  2. Mona Attariyan and Jason Flinn. Using causality to diagnose configuration bugs. In USENIX Annual Technical Conference, 2008. Google Scholar
  3. Mona Attariyan and Jason Flinn. Automating configuration troubleshooting with dynamic information flow analysis. In OSDI, 2010. Google Scholar
  4. Jonathan Bell and Gail Kaiser. Phosphor: illuminating dynamic data flow in commodity JVMs. In OOPSLA, 2014. Google Scholar
  5. Gilad Bracha, Martin Odersky, David Stoutamire, and Philip Wadler. Making the future safe for the past: Adding genericity to the Java programming language. In OOPSLA. Google Scholar
  6. Sebastian Burckhardt, Chris Dern, Madanlal Musuvathi, and Roy Tan. Line-up: A complete and automatic linearizability checker. In PLDI, 2010. Google Scholar
  7. Shigeru Chiba. Javassist-a reflection-based programming wizard for Java. In OOPSLA Workshop on Reflective Programming in C++ and Java, 1998. Google Scholar
  8. James Clause, Wanchun Li, and Alessandro Orso. Dytan: a generic dynamic taint analysis framework. In ISSTA, 2007. Google Scholar
  9. Songyun Duan, Vamsidhar Thummala, and Shivnath Babu. Tuning database configuration parameters with iTuned. Proceedings of the VLDB Endowment, 2009. Google Scholar
  10. Cormac Flanagan, Stephen N. Freund, and Jaeheon Yi. Velodrome: A sound and complete dynamic atomicity checker for multithreaded programs. In PLDI, 2008. Google Scholar
  11. Malay Ganai, Dongyoon Lee, and Aarti Gupta. Dtam: dynamic taint analysis of multi-threaded programs for relevancy. In FSE, 2012. Google Scholar
  12. Vivek Haldar, Deepak Chandra, and Michael Franz. Dynamic taint propagation for Java. In Computer Security Applications Conference, 2005. Google Scholar
  13. Christopher M Hayden, Karla Saur, Michael Hicks, and Jeffrey S Foster. A study of dynamic software update quiescence for multithreaded programs. In Workshop on Hot Topics in Software Upgrades, 2012. Google Scholar
  14. Christopher M. Hayden, Edward K. Smith, Michail Denchev, Michael Hicks, and Jeffrey S. Foster. Kitsune: Efficient, general-purpose dynamic software updating for C. In OOPSLA, 2012. Google Scholar
  15. Daniel Jackson. Software abstractions: Logic. Language, and Analysis. MIT Press, 2012, 2006. Google Scholar
  16. Dongpu Jin, Myra B Cohen, Xiao Qu, and Brian Robinson. PrefFinder: getting the right preference in configurable software systems. In ASE, 2014. Google Scholar
  17. Dongpu Jin, Xiao Qu, Myra B Cohen, and Brian Robinson. Configurations everywhere: Implications for testing and debugging in practice. In ICSE, 2014. Google Scholar
  18. Min Gyung Kang, Stephen McCamant, Pongsin Poosankam, and Dawn Song. Dta++: Dynamic taint analysis with targeted control-flow propagation. In NDSS, 2011. Google Scholar
  19. Eugene Kuleshov. Using the ASM framework to implement common Java bytecode transformation patterns. Aspect-Oriented Software Development, 2007. Google Scholar
  20. Max Lillack, Christian Kästner, and Eric Bodden. Tracking load-time configuration options. In ASE, 2014. Google Scholar
  21. Yu Lin. Automated refactoring for Java concurrency. PhD thesis, University of Illinois at Urbana-Champaign, 2015. Google Scholar
  22. Yu Lin and Danny Dig. Check-then-act misuse of Java concurrent collections. In ICST, 2013. Google Scholar
  23. Peng Liu, Omer Tripp, and Xiangyu Zhang. Flint: fixing linearizability violations. In OOPLSA, 2014. Google Scholar
  24. Kristis Makris and Rida A Bazzi. Immediate multi-threaded dynamic software updates using stack reconstruction. In USENIX Annual Technical Conference, 2009. Google Scholar
  25. Kristis Makris and Kyung Dong Ryu. Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In EuroSys, 2007. Google Scholar
  26. Jeremy Manson, William Pugh, and Sarita V Adve. The Java memory model, volume 40. ACM, 2005. Google Scholar
  27. Sarah Nadi, Thorsten Berger, Christian Kästner, and Krzysztof Czarnecki. Mining configuration constraints: Static analyses and empirical results. In ICSE, 2014. Google Scholar
  28. Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. Practical dynamic software updating for C. In PLDI, 2006. Google Scholar
  29. Mathias Payer and Thomas R. Gross. Protecting applications against TOCTTOU races by user-space caching of file metadata. In VEE, 2012. Google Scholar
  30. Luís Pina, Luís Veiga, and Michael Hicks. Rubah: DSU for Java on a stock JVM. In OOPSLA, 2014. Google Scholar
  31. Mario Pukall, Christian Kästner, Walter Cazzola, Sebastian Götz, Alexander Grebhahn, Reimar Schröter, and Gunter Saake. Javadaptor—flexible runtime updates of Java applications. Software: Practice and Experience, 2013. Google Scholar
  32. Ariel Rabkin and Randy Katz. Precomputing possible configuration error diagnoses. In ASE, 2011. Google Scholar
  33. Ariel Rabkin and Randy Katz. Static extraction of program configuration options. In ICSE, 2011. Google Scholar
  34. Elnatan Reisner, Charles Song, Kin-Keung Ma, Jeffrey S Foster, and Adam Porter. Using symbolic evaluation to understand behavior in configurable software systems. In ICSE, 2010. Google Scholar
  35. Ohad Shacham, Nathan Bronson, Alex Aiken, Mooly Sagiv, Martin Vechev, and Eran Yahav. Testing atomicity of composed concurrent operations. In OOPSLA, 2011. Google Scholar
  36. Ohad Shacham, Eran Yahav, Guy Golan Gueta, Alex Aiken, Nathan Bronson, Mooly Sagiv, and Martin Vechev. Verifying atomicity via data independence. In ISSTA, 2014. Google Scholar
  37. Ya-Yunn Su, Mona Attariyan, and Jason Flinn. Autobash: Improving configuration management with operating system causality analysis. In SOSP, 2007. Google Scholar
  38. Liqiang Wang and Scott D Stoller. Runtime analysis of atomicity for multithreaded programs. Transactions on Software Engineering, 2006. Google Scholar
  39. Yi-Min Wang, Chad Verbowski, John Dunagan, Yu Chen, Helen J Wang, Chun Yuan, and Zheng Zhang. Strider: A black-box, state-based approach to change and configuration management and support. Science of Computer Programming, 2004. Google Scholar
  40. Yingfei Xiong, Arnaud Hubaux, Steven She, and Krzysztof Czarnecki. Generating range fixes for software configuration. In ICSE, 2012. Google Scholar
  41. Tianyin Xu, Jiaqi Zhang, Peng Huang, Jing Zheng, Tianwei Sheng, Ding Yuan, Yuanyuan Zhou, and Shankar Pasupathy. Do not blame users for misconfigurations. In SOSP, 2013. Google Scholar
  42. Sai Zhang and Michael D Ernst. Automated diagnosis of software configuration errors. In ICSE, 2013. Google Scholar
  43. Sai Zhang and Michael D Ernst. Which configuration option should I change? In ICSE, 2014. Google Scholar