ABSTRACT
A number of hardware and software techniques have been proposed to detect dynamic program behaviors that may indicate a bug in a program. Because these techniques suffer from high overheads they are useful in finding bugs in programs before they are released, but are significantly less useful in finding bugs in long-running programs on production systems -- the same bugs that are the most difficult to find using traditional techniques. In this paper we propose the Artemis1 is the Greek goddess of the hunt and wild animals. Our framework guides the hunt for wild bugs. compiler-based instrumentation framework that complements many pre-existing runtime monitoring techniques. The Artemis framework guides baseline monitoring techniques toward regions of the program where bugs are likely to occur, yielding a low asymptotic monitoring overhead. Artemis also facilitates system-load aware runtime monitoring that allows the monitoring coverage to be dynamically scaled up to take advantage of extra cycles when the system load is low, and dynamically scaled down to monitor only the most suspicious regions when the system load is high. Our experiments show that Artemis' asymptotic overhead can outperform the performance floor overhead of random sampling for many tools, and that Artemis can effectively guide a monitoring tool to the buggy regions of a program. Our experimental results show that Artemis applied to a hardware-based PC-invariance monitoring scheme and a value-based invariance detection and checking scheme significantly improves their runtime monitoring overhead (by up to 4.6 times) with moderate impact on their bug-detecting capabilities.
- M. Arnold and B. G. Ryder. A framework for reducing the cost of instrumented code. In Proceedings of the ACM SIGPLAN 2001 conference on Programming Language Design and Implementation, pages 168--179, 2001. Google Scholar
Digital Library
- T. M. Austin, S. E. Breach, and G. S. Sohi. Efficient detection of all pointer and array access errors. In Proceedings of the ACM SIGPLAN 1994 conference on Programming Language Design and Implementation, pages 290--301, 1994. Google Scholar
Digital Library
- W. R. Bush, J. D. Pincus, and D. J. Sielaff. A static analyzer for finding dynamic programming errors. Software Practice and Experience, 30(7):775--802, 2000. Google Scholar
Digital Library
- T. M. Chilimbi and M. Hauswirth. Low-overhead memory leak detection using adaptive statistical profiling. In ASPLOS-XI: Proceedings of the 11th international conference on Architectural support for programming languages and operating systems, pages 156--164, 2004. Google Scholar
Digital Library
- J.-D. Choi, K. Lee, A. Loginov, R. O'Callahan, V. Sarkar, and M. Sridharan. Efficient and precise datarace detection for multithreaded object-oriented programs. In Proceedings of the ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation, pages 258--269. ACM Press, 2002. Google Scholar
Digital Library
- J. Condit, M. Harren, S. McPeak, G. C. Necula, and W. Weimer. CCured in the real world. In Proceedings of the ACM SIGPLAN 2003 conference on Programming Language Design and Implementation, pages 232--244. ACM Press, 2003. Google Scholar
Digital Library
- C. Cowan, C. Pu, D. Maier, J. Walpole, P. Bakke, S. Beattie, A. Grier, P. Wagle, and Q. Zhang. Stackguard: Automatic adaptive detection and prevention of buffer-overflow attacks. In Proceedings of the 7th USENIX Security Symposium, 1998. Google Scholar
Digital Library
- V. Dallmeier, C. Lindig, and A. Zeller. Lightweight defect localization for java. In Proceedings of the 19th European Conference on Object-Oriented Programming, 2005. Google Scholar
Digital Library
- D. Engler and K. Ashcraft. RacerX: effective, static detection of race conditions and deadlocks. In Proceedings of the nineteenth ACM Symposium on Operating Systems Principles, pages 237--252. ACM Press, 2003. Google Scholar
Digital Library
- M. D. Ernst, A. Czeisler, W. G. Griswold, and D. Notkin. Quickly detecting relevant program invariants. In Proceedings of the 22nd International Conference on Software Engineering, pages 449--458, 2000. Google Scholar
Digital Library
- D. Evans, J. Guttag, J. Horning, and Y. M. Tan. LCLint: a tool for using specifications to check code. In Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering, pages 87--96. ACM Press, 1994. Google Scholar
Digital Library
- L. Fei, K. Lee, F. Li, and S. P. Midkiff. Argus: Online statistical bug detection. In Proceedings of Fundamental Approaches to Software Engineering (FASE'06), 2006. Google Scholar
Digital Library
- S. Hangal and M. S. Lam. Tracking down software bugs using automatic anomaly detection. In Proceedings of the 24th International Conference on Software Engineering, pages 291--301, 2002. Google Scholar
Digital Library
- R. Hastings and B. Joyce. Purify: Fast detection of memory leaks and access errors. In Proceedings of the USENIX Winter Technical Conference, 1992.Google Scholar
- D. L. Heine and M. S. Lam. A practical flow-sensitive and context-sensitive c and c++ memory leak detector. In Proceedings of the ACM SIGPLAN 2003 conference on Programming Language Design and Implementation, pages 168--181, 2003. Google Scholar
Digital Library
- R. W. M. Jones and P. H. J. Kelly. Backwards-compatible bounds checking for arrays and pointers in C programs. In Third International Workshop on Automated Debugging, pages 13--26. Linkoping University Electronic Press, 1997.Google Scholar
- S.-I. Lee, T. A. Johnson, and R. Eigenmann. Cetus -- an extensible compiler infrastructure for source-to-source transformation. In Proceedings of the 16th International Workshop on Languages and Compilers for Parallel Computing (LCPC), 2003. Google Scholar
Digital Library
- B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug isolation via remote program sampling. In Proceedings of the ACM SIGPLAN 2003 conference on Programming Language Design and Implementation, pages 141--154, 2003. Google Scholar
Digital Library
- B. Liblit, M. Naik, A. X. Zheng, A. Aiken, and M. I. Jordan. Scalable statistical bug isolation. In Proceedings of the ACM SIGPLAN 2005 conference on Programming Language Design and Implementation, 2005. Google Scholar
Digital Library
- C. Liu, X. Yan, L. Fei, J. Han, and S. P. Midkiff. Sober: Statistical model-based bug localization. In Proceedings of The fifth joint meeting of the European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE 05), 2005. Google Scholar
Digital Library
- A. Loginov, S. H. Yong, S. Horwitz, and T. W. Reps. Debugging via run-time type checking. In Proceedings of the 4th International Conference on Fundamental Approaches to Software Engineering, pages 217--232, 2001. Google Scholar
Digital Library
- 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 Proceedings of the 2005 ACM SIGPLAN conference on Programming Language Design and Implementation, pages 190--200, 2005. Google Scholar
Digital Library
- Software errors cost U.S. economy $59.5 billion annually, 2002. NIST News, Release 2002-10.Google Scholar
- R. O'Callahan and J.-D. Choi. Hybrid dynamic data race detection. In Proceedings of the ninth ACM SIGPLAN symposium on Principles and Practice of Parallel Programming, pages 167--178. ACM Press, 2003. Google Scholar
Digital Library
- A. One. Smashing the stack for fun and profit. Phrack, 7(49), 1996.Google Scholar
- J. Oplinger and M. S. Lam. Enhancing software reliability with speculative threads. In Proceedings of the 10th International Conference on Architectural Support for Programming Languages and Operating Systems, pages 184--196. ACM Press, 2002. Google Scholar
Digital Library
- H. Patil and C. Fischer. Low-cost, concurrent checking of pointer and array accesses in C programs. Software Practice and Experience, 27(1):87--110, 1997. Google Scholar
Digital Library
- F. Qin, S. Lu, and Y. Zhou. SafeMem: Exploiting ECC-memory for detecting memory leaks and memory corruption during production runs. In HPCA '05: Proceedings of the 11th International Symposium on High-Performance Computer Architecture (HPCA'05), pages 291--302. IEEE Computer Society, 2005. Google Scholar
Digital Library
- O. Ruwase and M. S. Lam. A practical dynamic buffer overflow detector. In Proceedings of the 11th Annual Network and Distributed System Security Symposium, 2004.Google Scholar
- S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: a dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems (TOCS), 15(4):391--411, 1997. Google Scholar
Digital Library
- A. Srivastava and A. Eustace. Atom: a system for building customized program analysis tools. In Proceedings of the ACM SIGPLAN 1994 conference on Programming Language Design and Implementation, pages 196--205. ACM Press, 1994. Google Scholar
Digital Library
- J. L. Steffen. Adding run-time checking to the portable C compiler. Software Practice and Experience, 22(4):305--316, 1992. Google Scholar
Digital Library
- D. Wagner, J. S. Foster, E. A. Brewer, and A. Aiken. A first step towards automated detection of buffer overrun vulnerabilities. In Network and Distributed System Security Symposium, pages 3--17, San Diego, CA, February 2000.Google Scholar
- P. Zhou, W. Liu, L. Fei, S. Lu, F. Qin, Y. Zhou, S. Midkiff, and J. Torrellas. AccMon: Automatically detecting memory-related bugs via program counter-based invariants. In Proceedings of the 37th Annual IEEE/ACM International Symposium on Micro-architecture (MICRO'04), 2004. Google Scholar
Digital Library
- P. Zhou, F. Qin, W. Liu, Y. Zhou, and J. Torrellas. iWatcher: Efficient architectural support for software debugging. In Proceedings of the 31st Annual International Symposium on Computer Architecture, page 224. IEEE Computer Society, 2004. Google Scholar
Digital Library
Index Terms
Artemis: practical runtime monitoring of applications for execution anomalies
Recommendations
Artemis: practical runtime monitoring of applications for execution anomalies
Proceedings of the 2006 PLDI ConferenceA number of hardware and software techniques have been proposed to detect dynamic program behaviors that may indicate a bug in a program. Because these techniques suffer from high overheads they are useful in finding bugs in programs before they are ...
Goldilocks: a race and transaction-aware java runtime
Proceedings of the 2007 PLDI conferenceData races often result in unexpected and erroneous behavior. In addition to causing data corruption and leading programs to crash, the presence of data races complicates the semantics of an execution which might no longer be sequentially consistent. ...
Goldilocks: a race and transaction-aware java runtime
PLDI '07: Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and ImplementationData races often result in unexpected and erroneous behavior. In addition to causing data corruption and leading programs to crash, the presence of data races complicates the semantics of an execution which might no longer be sequentially consistent. ...







Comments