skip to main content
10.1145/1806596.1806600acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Decoupled lifeguards: enabling path optimizations for dynamic correctness checking tools

Published:05 June 2010Publication History

ABSTRACT

Dynamic correctness checking tools (a.k.a. lifeguards) can detect a wide array of correctness issues, such as memory, security, and concurrency misbehavior, in unmodified executables at run time. However, lifeguards that are implemented using dynamic binary instrumentation (DBI) often slow down the monitored application by 10-50X, while proposals that replace DBI with hardware still see 3-8X slowdowns. The remaining overhead is the cost of performing the lifeguard analysis itself. In this paper, we explore compiler optimization techniques to reduce this overhead.

The lifeguard software is typically structured as a set of event-driven handlers, where the events are individual instructions in the monitored application's dynamic instruction stream. We propose to decouple the lifeguard checking code from the application that it is monitoring so that the lifeguard analysis can be invoked at the granularity of hot paths in the monitored application. In this way, we are able to find many more opportunities for eliminating redundant work in the lifeguard analysis, even starting with well-optimized applications and hand-tuned lifeguard handlers. Experimental results with two lifeguard frameworks - one DBI-based and one hardware-assisted - show significant reduction in monitoring overhead.

References

  1. A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison Wesley, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: A Transparent Dynamic Optimization System. In PLDI, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. D. Bruening. Efficient, Transparent, and Comprehensive Runtime Code Manipulation. PhD thesis, MIT, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. W. R. Bush, J. D. Pincus, and D. J. Sielaff. A static analyzer for finding dynamic programming errors. Software - Practice and Experience, 30 (7), 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. Chen, M. Kozuch, T. Strigkos, B. Falsafi, P. B. Gibbons, T. C. Mowry, V. Ramachandran, O. Ruwase, M. Ryan, and E. Vlachos. Flexible Hardware Acceleration for Instruction-grain Program Monitoring. In ISCA, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. Chen, M. Kozuch, P. B. Gibbons, M. Ryan, T. Strigkos, T. C. Mowry, O. Ruwase, E. Vlachos, B. Falsafi, and V. Ramachandran. Flexible hardware acceleration for instruction-grain lifeguards. IEEE Micro, 29 (1), 2009. Top Picks from the 2008 Computer Architecture Conferences. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. B. Cmelik and D. Keppel. Shade : a Fast Instruction Set Simulator for Execution Profiling. In SIGMETRICS, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. M. L. Corliss, E. C. Lewis, and A. Roth. DISE: A programmable macro engine for customizing applications. In ISCA, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. Dalton, H. Kannan, and C. Kozyrakis. Raksha: a Flexible Information Flow Architecture for Software Security. In ISCA, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Engler, B. Chelf, A. Chou, and S. Hallem. Checking system rules using system-specific, programmer-written compiler extensions. In OSDI, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. C. Flanagan, K. R. M. Leino, M. Lillibridge, G. Nelson, J. B. Saxe, and R. Stata. Extended static checking for Java. In PLDI, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. Gal and M. F. C. W. Probst. Hotpathvm: an effective JIT compiler for resource-constrained devices. In VEE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. L. Goodstein, E. Vlachos, S. Chen, P. B. Gibbons, M. Kozuch, and T. C. Mowry. Butterfly analysis: Adapting dataflow analysis to dynamic parallel monitoring. In ASPLOS, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. N. D. Jones. An introduction to partial evaluation. ACM Comput. Surv., 28 (3): 480--503, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. I. H. Kazi, H. H. Chen, B. Stanley, and D. J. Lilja. Techniques for obtaining high performance in java programs. ACM Comput. Surv., 32 (3): 213--240, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. P. Lee and M. Leone. Optimizing ML with Runtime Code Generation. In PLDI, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. C.-K. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, V. J. Reddi, and K. Hazelwood. Pin: Building customized program analysis tools with dynamic instrumentation. In PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. S. Narayanasamy, G. Pokam, and B. Calder. BugNet: Continuously recording program execution for deterministic replay debugging. In ISCA, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. National Center for Biotechnology Information. ftp://ftp.ncbi.nih.gov/blast/.Google ScholarGoogle Scholar
  20. N. Nethercote. Dynamic Binary Analysis and Instrumentation. PhD thesis, U. Cambridge, 2004. http://valgrind.org.Google ScholarGoogle Scholar
  21. N. Nethercote and J. Seward. Valgrind: a framework for heavyweight dynamic binary instrumentation. In PLDI, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. N. Nethercote and J. Seward. Valgrind: A program supervision framework. Electronic Notes in Theoretical Computer Science, 89 (2), 2003.Google ScholarGoogle Scholar
  23. N. Nethercote and J. Seward. How to shadow every byte of memory used by a program. In VEE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. J. Newsome and D. Song. Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software. In NDSS, 2005.Google ScholarGoogle Scholar
  25. E. B. Nightingale, D. Peek, P. M. Chen, and J. Flinn. Parallelizing security checks on commodity hardware. In ASPLOS, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Parallel Bzip2. http://compression.ca/pbzip2/.Google ScholarGoogle Scholar
  27. Princeton Zchaff. http://www.princeton.edu/~chaff/zchaff.html.Google ScholarGoogle Scholar
  28. T. A. Proebsting. Optimizing an ANSI C interpreter with superoperators. In POPL, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. F. Qin, C.Wang, Z. Li, H. Kim, Y. Zhou, and Y. Wu. LIFT: A low-overhead practical information flow tracking system for detecting security attacks. In MICRO-39, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. O. Ruwase, P. B. Gibbons, T. C. Mowry, V. Ramachandran, S. Chen, M. Kozuch, and M. Ryan. Parallelizing Dynamic Information Flow Tracking. In SPAA, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: A dynamic race detector for multi-threaded programs. ACM TOCS, 15 (4), 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. M. Tiwari, S. Mysore, and T. Sherwood. Quantifying the potential of program analysis peripherals. In PACT, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Virtutech Simics. http://www.virtutech.com/.Google ScholarGoogle Scholar
  34. E. Vlachos, M. L. Goodstein, M. A. Kozuch, S. Chen, B. Falsafi, P. B. Gibbons, and T. C. Mowry. ParaLog: Enabling and Accelerating Online Parallel Monitoring of Multithreaded Applications. In ASPLOS, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. E. Witchel and M. Rosenblum. Embra: Fast and Flexible Machine Simulation. In SIGMETRICS, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. M. Xu, R. Bodik, and M. D. Hill. A 'Flight Data Recorder' for enabling full-system multiprocessor deterministic replay. In ISCA, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Decoupled lifeguards: enabling path optimizations for dynamic correctness checking tools

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          PLDI '10: Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation
          June 2010
          514 pages
          ISBN:9781450300193
          DOI:10.1145/1806596
          • cover image ACM SIGPLAN Notices
            ACM SIGPLAN Notices  Volume 45, Issue 6
            PLDI '10
            June 2010
            496 pages
            ISSN:0362-1340
            EISSN:1558-1160
            DOI:10.1145/1809028
            Issue’s Table of Contents

          Copyright © 2010 ACM

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 5 June 2010

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          Overall Acceptance Rate406of2,067submissions,20%

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!