|
ABSTRACT
Coping with software defects that occur in the post-deployment stage is a challenging problem: bugs may occur only when the system uses a specific configuration and only under certain usage scenarios. Nevertheless, halting production systems until the bug is tracked and fixed is often impossible. Thus, developers have to try to reproduce the bug in laboratory conditions. Often the reproduction of the bug consists of the lion share of the debugging effort. In this paper we suggest an approach to address the aforementioned problem by using a specialized runtime environment (QVM, for Quality Virtual Machine). QVM efficiently detects defects by continuously monitoring the execution of the application in a production setting. QVM enables the efficient checking of violations of user-specified correctness properties, e.g., typestate safety properties, Java assertions, and heap properties pertaining to ownership. QVM is markedly different from existing techniques for continuous monitoring by using a novel overhead manager which enforces a user-specified overhead budget for quality checks. Existing tools for error detection in the field usually disrupt the operation of the deployed system. QVM, on the other hand, provides a balanced trade off between the cost of the monitoring process and the maintenance of sufficient accuracy for detecting defects. Specifically, the overhead cost of using QVM instead of a standard JVM, is low enough to be acceptable in production environments. We implemented QVM on top of IBM's J9 Java Virtual Machine and used it to detect and fix various errors in real-world applications.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
GOIM: Gamers own instant messenger. available at http://goim.us/wiki/show/GOIM.
|
 |
2
|
|
 |
3
|
Chris Allan , Pavel Avgustinov , Aske Simon Christensen , Laurie Hendren , Sascha Kuzins , Ondřej Lhoták , Oege de Moor , Damien Sereni , Ganesh Sittampalam , Julian Tibble, Adding trace matching with free variables to AspectJ, Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, October 16-20, 2005, San Diego, CA, USA
|
 |
4
|
|
| |
5
|
|
| |
6
|
Auerbach, J., Bacon, D., Cheng, P., Grove, D., Biron, B., Gracie, C., McCloskey, B., Micic, A., and Sciampacone, R. Toshio suganuma and toshiaki yasue and motohiro kawahito and hideaki komatsu and toshio nakatani. In Proceedings of the International Conference on Embedded Software (New York, NY, USA, 2008), ACM.
|
 |
7
|
|
| |
8
|
Azureus - Java BitTorrent client. http://azureus.sourceforge.net/.
|
| |
9
|
Bodden, E., Hendren, L. J., Lam, P., Lhoták, O., and Naeem, N. A. Collaborative runtime verification with tracematches. In 7th International Workshop on Runtime Verification (RV) (2007), vol. 4839 of Lecture Notes in Computer Science, pp. 9--21.
|
| |
10
|
Bodden, E., Hendren, L. J., and Lhoták, O. A staged static program analysis to improve the performance of runtime monitoring. In ECOOP (2007), pp. 525--549.
|
 |
11
|
|
 |
12
|
|
| |
13
|
Chilimbi, T. M., and Ganapathy, V. Heapmd: identifying heap-based bugs using anomaly detection. vol. 34, ACM, pp. 219--228.
|
 |
14
|
|
 |
15
|
|
| |
16
|
DeLine, R., and Fähndrich, M. Adoption and focus: Practical linear types for imperative programming. pp. 13--24.
|
 |
17
|
Isil Dillig , Thomas Dillig , Eran Yahav , Satish Chandra, The CLOSER: automating resource management in java, Proceedings of the 7th international symposium on Memory management, June 07-08, 2008, Tucson, AZ, USA
[doi> 10.1145/1375634.1375636]
|
| |
18
|
Eclipse. Standard widget toolkit (swt). http://www.eclipse.org/swt/.
|
 |
19
|
Stephen Fink , Eran Yahav , Nurit Dor , G. Ramalingam , Emmanuel Geay, Effective typestate verification in the presence of aliasing, Proceedings of the 2006 international symposium on Software testing and analysis, July 17-20, 2006, Portland, Maine, USA
[doi> 10.1145/1146238.1146254]
|
| |
20
|
|
| |
21
|
Foster, J. S., Terauchi, T., and Aiken, A. Flow-sensitive type qualifiers. pp. 1--12.
|
 |
22
|
|
 |
23
|
|
 |
24
|
|
 |
25
|
|
| |
26
|
|
| |
27
|
|
| |
28
|
Livshits, V. B. Turning Eclipse against itself: Finding bugs in Eclipse code using lightweight static analysis. Eclipsecon '05 Research Exchange, Mar. 2005.
|
| |
29
|
Microsystems, S. Jvmtm tool interface, version 1.0. In http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html.
|
| |
30
|
Mitchell, N. The runtime structure of object ownership. In ECOOP (2006), D. Thomas, Ed., vol. 4067 of Lecture Notes in Computer Science, Springer, pp. 74--98.
|
 |
31
|
|
 |
32
|
|
 |
33
|
|
 |
34
|
G. Ramalingam , Alex Warshavsky , John Field , Deepak Goyal , Mooly Sagiv, Deriving specialized program analyses for certifying component-client conformance, Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, June 17-19, 2002, Berlin, Germany
|
| |
35
|
Shaham, R., Yahav, E., Kolodner, E., and Sagiv, M. Establishing local temporal heap safety properties with applications to compile-time memory management. In Static Analysis Symposium (2003).
|
| |
36
|
|
 |
37
|
Toshio Suganuma , Toshiaki Yasue , Motohiro Kawahito , Hideaki Komatsu , Toshio Nakatani, A dynamic optimization framework for a Java just-in-time compiler, Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, p.180-195, October 14-18, 2001, Tampa Bay, FL, USA
|
 |
38
|
|
|