[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/1133981.1133992acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article

Artemis: practical runtime monitoring of applications for execution anomalies

Published: 11 June 2006 Publication History

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.

References

[1]
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.
[2]
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.
[3]
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.
[4]
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.
[5]
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.
[6]
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.
[7]
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.
[8]
V. Dallmeier, C. Lindig, and A. Zeller. Lightweight defect localization for java. In Proceedings of the 19th European Conference on Object-Oriented Programming, 2005.
[9]
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.
[10]
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.
[11]
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.
[12]
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.
[13]
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.
[14]
R. Hastings and B. Joyce. Purify: Fast detection of memory leaks and access errors. In Proceedings of the USENIX Winter Technical Conference, 1992.
[15]
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.
[16]
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.
[17]
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.
[18]
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.
[19]
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.
[20]
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.
[21]
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.
[22]
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.
[23]
Software errors cost U.S. economy $59.5 billion annually, 2002. NIST News, Release 2002-10.
[24]
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.
[25]
A. One. Smashing the stack for fun and profit. Phrack, 7(49), 1996.
[26]
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.
[27]
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.
[28]
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.
[29]
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.
[30]
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.
[31]
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.
[32]
J. L. Steffen. Adding run-time checking to the portable C compiler. Software Practice and Experience, 22(4):305--316, 1992.
[33]
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.
[34]
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.
[35]
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.

Cited By

View all

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '06: Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2006
438 pages
ISBN:1595933204
DOI:10.1145/1133981
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 41, Issue 6
    Proceedings of the 2006 PLDI Conference
    June 2006
    426 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1133255
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 June 2006

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. context invariant
  2. debugging
  3. dynamic context
  4. pointer-type table
  5. runtime monitoring
  6. selective monitoring
  7. value invariant

Qualifiers

  • Article

Conference

PLDI06
Sponsor:

Acceptance Rates

Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)12
  • Downloads (Last 6 weeks)0
Reflects downloads up to 12 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Software runtime monitoring with adaptive sampling rate to collect representative samples of execution tracesJournal of Systems and Software10.1016/j.jss.2023.111708202:COnline publication date: 1-Aug-2023
  • (2023)Uncertainty in runtime verificationComputer Science Review10.1016/j.cosrev.2023.10059450:COnline publication date: 1-Nov-2023
  • (2022)A theory of monitorsInformation and Computation10.1016/j.ic.2021.104704281:COnline publication date: 3-Jan-2022
  • (2019)On the practical feasibility of software monitoringProceedings of the 14th International Symposium on Software Engineering for Adaptive and Self-Managing Systems10.1109/SEAMS.2019.00030(169-180)Online publication date: 25-May-2019
  • (2018)Wireless protocol validation under uncertaintyFormal Methods in System Design10.1007/s10703-017-0309-453:1(33-53)Online publication date: 1-Aug-2018
  • (2018)Introduction to Runtime VerificationLectures on Runtime Verification10.1007/978-3-319-75632-5_1(1-33)Online publication date: 11-Feb-2018
  • (2014)AntSM: Efficient Debugging for Shared Memory Parallel ProgramsLanguages and Compilers for Parallel Computing10.1007/978-3-319-09967-5_12(202-216)Online publication date: 1-Oct-2014
  • (2013)Monitoring with uncertaintyElectronic Proceedings in Theoretical Computer Science10.4204/EPTCS.124.1124(1-4)Online publication date: 22-Aug-2013
  • (2013)Trace construction using enhanced performance monitoringProceedings of the ACM International Conference on Computing Frontiers10.1145/2482767.2482811(1-10)Online publication date: 14-May-2013
  • (2013)The Cetus Source-to-Source Compiler InfrastructureInternational Journal of Parallel Programming10.1007/s10766-012-0211-z41:6(753-767)Online publication date: 1-Dec-2013
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media