Proceedings ArticleDOI
Tracking down software bugs using automatic anomaly detection
Sudheendra Hangal,Monica S. Lam +1 more
- pp 291-301
TLDR
DIDUCE, a practical and effective tool that aids programmers in detecting complex program errors and identifying their root causes, is introduced and suggests that detecting and checking program invariants dynamically is a simple and effective methodology for debugging many different kinds of program errors across a wide variety of application domains.Abstract:
This paper introduces DIDUCE, a practical and effective tool that aids programmers in detecting complex program errors and identifying their root causes. By instrumenting a program and observing its behavior as it runs, DIDUCE dynamically formulates hypotheses of invariants obeyed by the program. DIDUCE hypothesizes the strictest invariants at the beginning, and gradually relaxes the hypothesis as violations are detected to allow for new behavior. The violations reported help users to catch software bugs as soon as they occur. They also give programmers new visibility into the behavior of the programs such as identifying rare corner cases in the program logic or even locating hidden errors that corrupt the program's results.We implemented the DIDUCE system for Java programs and applied it to four programs of significant size and complexity. DIDUCE succeeded in identifying the root causes of programming errors in each of the programs quickly and automatically. In particular, DIDUCE is effective in isolating a timing-dependent bug in a released JSSE (Java Secure Socket Extension) library, which would have taken an experienced programmer days to find. Our experience suggests that detecting and checking program invariants dynamically is a simple and effective methodology for debugging many different kinds of program errors across a wide variety of application domains.read more
Citations
More filters
Journal ArticleDOI
The future of employment: How susceptible are jobs to computerisation?
TL;DR: In this paper, a Gaussian process classifier was used to estimate the probability of computerisation for 702 detailed occupations, and the expected impacts of future computerisation on US labour market outcomes, with the primary objective of analyzing the number of jobs at risk and the relationship between an occupations probability of computing, wages and educational attainment.
Journal ArticleDOI
The Daikon system for dynamic detection of likely invariants
Michael D. Ernst,Jeff H. Perkins,Philip J. Guo,Stephen McCamant,Carlos Pacheco,Matthew S. Tschantz,Chen Xiao +6 more
TL;DR: Daikon is an implementation of dynamic detection of likely invariants; that is, the Daikon invariant detector reports likely program invariants, a property that holds at a certain point or points in a program.
Proceedings ArticleDOI
Finding bugs is easy
David Hovemeyer,William Pugh +1 more
TL;DR: It is found that even well tested code written by experts contains a surprising number of obvious bugs and that simple automatic techniques can be effective at countering the impact of both ordinary mistakes and misunderstood language features.
Journal ArticleDOI
Scalable statistical bug isolation
TL;DR: A statistical debugging algorithm that isolates bugs in programs containing multiple undiagnosed bugs and identifies predictors that are associated with individual bugs that reveal both the circumstances under which bugs occur as well as the frequencies of failure modes, making it easier to prioritize debugging efforts.
Journal ArticleDOI
An overview of JML tools and applications
Lilian Burdy,Yoonsik Cheon,David R. Cok,Michael D. Ernst,Joseph R. Kiniry,Gary T. Leavens,K. Rustan M. Leino,Erik Poll +7 more
TL;DR: An overview of the main ideas behind JML, details about JML’s wide range of tools, and a glimpse into existing applications of JML are given.
References
More filters
Book
The Java Virtual Machine Specification
Tim Lindholm,Frank Yellin +1 more
TL;DR: In this article, the authors present a detailed overview of the Java Virtual Machine, including the internal structure of the class file format, the internal form of Fully Qualified Class and Interface names, and the implementation of new class instances.
Journal ArticleDOI
Eraser: a dynamic data race detector for multithreaded programs
TL;DR: A new tool, called Eraser, is described, for dynamically detecting data races in lock-based multithreaded programs, which uses binary rewriting techniques to monitor every shared-monory reference and verify that consistent locking behavior is observed.
Proceedings ArticleDOI
Eraser: a dynamic data race detector for multi-threaded programs
TL;DR: Eraser as mentioned in this paper uses binary rewriting techniques to monitor every shared memory reference and verify that consistent locking behavior is observed in lock-based multi-threaded programs, which can be used to detect data races.
Journal ArticleDOI
An investigation of the Therac-25 accidents
TL;DR: A detailed investigation of the factors involved in the software-related overdoses and attempts by users, manufacturers, and government agencies to deal with the accidents is presented.
Proceedings ArticleDOI
Dynamically discovering likely program invariants to support program evolution
TL;DR: This paper describes techniques for dynamically discovering invariants, along with an instrumenter and an inference engine that embody these techniques, and reports on the application of the engine to two sets of target programs.