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

iWatcher: Efficient Architectural Support for Software Debugging

Published: 02 March 2004 Publication History

Abstract

Recent impressive performance improvements in computer architecturehave not led to significant gains in ease of debugging.Software debugging often relies on inserting run-time softwarechecks. In many cases, however, it is hard to find the root causeof a bug. Moreover, program execution typically slows down significantly,often by 10-100 times.To address this problem, this paper introduces the IntelligentWatcher (iWatcher), novel architectural support to monitor dynamicexecution with minimal overhead, automatically, and flexibly.iWatcher associates program-specified monitoring functionswith memory locations. When any such location is accessed, themonitoring function is automatically triggered with low overhead.To further reduce overhead and support rollback, iWatcher canleverage Thread-Level Speculation (TLS). To test iWatcher, we useapplications with various bugs. Our results show that iWatcher detectsmany more software bugs than Valgrind, a well-known open-sourcebug detector. Moreover, iWatcher only induces a 4-80%execution overhead, which is orders of magnitude less than Valgrind.Even with 20% of the dynamic loads monitored in a program,iWatcher adds only 66-174% overhead. Finally, TLS is effective atreducing overheads for programs with substantial monitoring.

References

[1]
{1} T. M. Austin, S. E. Breach, and G. S. Sohi. Efficient detection of all pointer and array access errors. In PLDI, June 1994.
[2]
{2} B. Buck and J. K. Hollingsworth. An API for runtime code patching. The International Journal of High Performance Computing Applications, Winter 2000.
[3]
{3} J.-D. Choi et al. Efficient and precise datarace detection for multithreaded object-oriented programs. In PLDI, June 2002.
[4]
{4} M. Cintra, J. Martinez, and J. Torrellas. Architectural support for scalable speculative parallelization in shared-memory systems. In ISCA, June 2000.
[5]
{5} J. Condit, M. Harren, S. McPeak, G. C. Necula, and W. Weimer. CCured in the real world. In PLDI, June 2003.
[6]
{6} C. Cowan et al. StackGuard: Automatic adaptive detection and prevention of buffer-overflow attacks. In USENIX Security Conference, January 1998.
[7]
{7} J. Dean, J. E. Hicks, C. A. Waldspurger, W. E. Weihl, and G. Z. Chrysos. ProfileMe: Hardware support for instruction-level profiling on out-of-order processors. In MICRO, December 1997.
[8]
{8} D. Engler and K. Ashcraft. RacerX: Effective, static detection of race conditions and deadlocks. In SOSP, October 2003.
[9]
{9} M. D. Ernst, A. Czeisler, W. G. Griswold, and D. Notkin. Quickly detecting relevant program invariants. In International Conference on Software Engineering, June 2000.
[10]
{10} R. S. Fabry. Capability-based addressing. Communications of the ACM, July 1974.
[11]
{11} M. Frantzen and M. Shuey. StackGhost: Hardware facilitated stack protection. In USENIX Security Symposium, August 2001.
[12]
{12} S. Hallem, B. Chelf, Y. Xie, and D. Engler. A system and language for building system-specific, static analyses. In PLDI, June 2002.
[13]
{13} S. Hangal and M. S. Lam. Tracking down software bugs using automatic anomaly detection. In International Conference on Software Engineering, May 2002.
[14]
{14} R. Hastings and B. Joyce. Purify: Fast detection of memory leaks and access errors. In Usenix Winter Technical Conference, January 1992.
[15]
{15} Intel Corporation. The IA-32 Intel architecture software developer's manual, volume 2: Instruction set reference, 2001.
[16]
{16} M. S. Johnson. Some requirements for architectural support of software debugging. In ASPLOS, March 1982.
[17]
{17} KAI-Intel Corporation. Intel thread checker. URL: http://developer.intel.com/software/products/threading/tcwin.
[18]
{18} G. Kane and J. Heinrich. MIPS RISC architecture. Prentice-Hall, 1992.
[19]
{19} E. J. Koldinger, J. S. Chase, and S. J. Eggers. Architectural support for single address space operating systems. In ASPLOS, October 1992.
[20]
{20} J. Larus and E. Schnarr. EEL: Machine-independent executable editing. In PLDI, June 1995.
[21]
{21} H. M. Levy. Capability-based computer systems. Digital Press, 1984.
[22]
{22} D. Lie et al. Architectural support for copy and tamper resistant software. In ASPLOS, November 2000.
[23]
{23} A. Loginov, S. H. Yong, S. Horwitz, and T. W. Reps. Debugging via run-time type checking. In International Conference on Fundamental Approaches to Software Engineering, April 2001.
[24]
{24} E. Marcus and H. Stern. Blueprints for high availability. John Willey and Sons, 2000.
[25]
{25} M. Musuvathi, D. Park, A. Chou, D. R. Engler, and D. L. Dill. CMC: A pragmatic approach to model checking real code. In OSDI, December 2002.
[26]
{26} National Institute of Standards and Technlogy (NIST), Department of Commerce. Software errors cost U. S. economy $59.5 billion annually. NIST News Release 2002-10, June 2002.
[27]
{27} G. C. Necula, S. McPeak, and W. Weimer. CCured: Type-safe retrofitting of legacy code. In POPL, January 2002.
[28]
{28} A. One. Smashing the stack for fun and profit. Phrack Magazine, November 1996.
[29]
{29} J. Oplinger and M. S. Lam. Enhancing software reliability with speculative threads. In ASPLOS, October 2002.
[30]
{30} H. Patil and C. Fischer. Low-cost, concurrent checking of pointer and array accesses in C programs. Software Practice & Experience, January 1997.
[31]
{31} H. Patil and C. N. Fischer. Efficient run-time monitoring using shadow processing. In Automated and Algorithmic Debugging, May 1995.
[32]
{32} M. Prvulovic and J. Torrellas. ReEnact: Using thread-level speculation mechanisms to debug data races in multithreaded codes. In ISCA, June 2003.
[33]
{33} 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, November 1997.
[34]
{34} E. Schnarr and J. R. Larus. Instruction scheduling and executable editing. In MICRO, December 1996.
[35]
{35} I. Schoinas et al. Fine-grain access control for distributed shared memory. In ASPLOS, October 1994.
[36]
{36} J. Seward. Valgrind. URL: http://valgrind.kde.org/.
[37]
{37} J. Seward. Valgrind, an open-source memory debugger for x86-GNU/Linux. URL: http://www.ukuug.org/events/linux2002/papers/html/valgrind/.
[38]
{38} G. Sohi, S. Breach, and T. Vijayakumar. Multiscalar processors. In ISCA, June 1995.
[39]
{39} SPARC International. The SPARC architecture manual: Version 8. Prentice-Hall, 1992.
[40]
{40} A. Srivastava and A. Eustace. ATOM: A system for building customized program analysis tools. In PLDI, June 1994.
[41]
{41} J. G. Steffan, C. B. Colohan, A. Zhai, and T. C. Mowry. A scalable approach to thread-level speculation. In ISCA, June 2000.
[42]
{42} U. Stern and D. L. Dill. Automatic verification of the SCI cache coherence protocol. In Conference on Correct Hardware Design and Verification Methods, October 1995.
[43]
{43} G. Suh, D. Clarke, B. Gassend, M. van Dijk, and S. Devadas. AEGIS: Architecture for tamper-evident and tamper-resistant processing. In ICS, June 2003.
[44]
{44} J.-Y. Tsai, J. Huang, C. Amlo, D. J. Lilja, and P.-C. Yew. The superthreaded processor architecture. IEEE Transactions on Computers, September 1999.
[45]
{45} R. Wahbe, S. Lucco, and S. L. Graham. Practical data breakpoints: Design and implementation. In PLDI, June 1993.
[46]
{46} E. Witchel, J. Cates, and K. Asanovi¿. Mondrian memory protection. In ASPLOS , October 2002.
[47]
{47} J. Xu, Z. Kalbarczyk, S. Patel, and R. K. Iyer. Architecture support for defending against buffer overflow attacks. EASY-2 Workshop, October 2002.
[48]
{48} M. Xu, R. Bodik, and M. D. Hill. A "flight data recorder" for enabling full-system multiprocessor deterministic replay. In ISCA, June 2003.

Cited By

View all
  • (2020)FirePerfProceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3373376.3378455(715-731)Online publication date: 9-Mar-2020
  • (2018)FreeDAProceedings of the 15th ACM International Conference on Computing Frontiers10.1145/3203217.3203237(1-10)Online publication date: 8-May-2018
  • (2018)Practical memory safety with RESTProceedings of the 45th Annual International Symposium on Computer Architecture10.1109/ISCA.2018.00056(600-611)Online publication date: 2-Jun-2018
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ISCA '04: Proceedings of the 31st annual international symposium on Computer architecture
June 2004
373 pages
ISBN:0769521436
  • cover image ACM SIGARCH Computer Architecture News
    ACM SIGARCH Computer Architecture News  Volume 32, Issue 2
    ISCA 2004
    March 2004
    373 pages
    ISSN:0163-5964
    DOI:10.1145/1028176
    Issue’s Table of Contents

Sponsors

Publisher

IEEE Computer Society

United States

Publication History

Published: 02 March 2004

Check for updates

Qualifiers

  • Article

Conference

ISCA04
Sponsor:

Acceptance Rates

ISCA '04 Paper Acceptance Rate 31 of 217 submissions, 14%;
Overall Acceptance Rate 543 of 3,203 submissions, 17%

Upcoming Conference

ISCA '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

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

Other Metrics

Citations

Cited By

View all
  • (2020)FirePerfProceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3373376.3378455(715-731)Online publication date: 9-Mar-2020
  • (2018)FreeDAProceedings of the 15th ACM International Conference on Computing Frontiers10.1145/3203217.3203237(1-10)Online publication date: 8-May-2018
  • (2018)Practical memory safety with RESTProceedings of the 45th Annual International Symposium on Computer Architecture10.1109/ISCA.2018.00056(600-611)Online publication date: 2-Jun-2018
  • (2017)Developing Dynamic Profiling and Debugging Support in OpenCL for FPGAsProceedings of the 54th Annual Design Automation Conference 201710.1145/3061639.3062230(1-6)Online publication date: 18-Jun-2017
  • (2016)Efficient Security Monitoring with the Core Debug Interface in an Embedded ProcessorACM Transactions on Design Automation of Electronic Systems10.1145/290761122:1(1-29)Online publication date: 27-May-2016
  • (2016)Lightweight runtime checking of C programs with RTCComputer Languages, Systems and Structures10.1016/j.cl.2016.01.00145:C(191-203)Online publication date: 1-Apr-2016
  • (2015)Implementing an Application-Specific Instruction-Set Processor for System-Level Dynamic Program Analysis EnginesACM Transactions on Design Automation of Electronic Systems10.1145/274623820:4(1-32)Online publication date: 28-Sep-2015
  • (2015)Runtime checking C programsProceedings of the 30th Annual ACM Symposium on Applied Computing10.1145/2695664.2695906(2107-2114)Online publication date: 13-Apr-2015
  • (2014)Leveraging the short-term memory of hardware to diagnose production-run software failuresACM SIGARCH Computer Architecture News10.1145/2654822.254197342:1(207-222)Online publication date: 24-Feb-2014
  • (2014)Leveraging the short-term memory of hardware to diagnose production-run software failuresACM SIGPLAN Notices10.1145/2644865.254197349:4(207-222)Online publication date: 24-Feb-2014
  • 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