Abstract
Runtime monitoring can provide important insights about a program’s behavior and, for simple properties, it can be done efficiently. Monitoring properties describing sequences of program states and events, however, can result in significant runtime overhead. This is particularly critical when monitoring programs deployed at user sites that have low tolerance for overhead. In this paper we present a novel approach to reducing the cost of runtime monitoring of path properties. A set of original properties are composed to form a single integrated property that is then systematically decomposed into a set of properties that encode necessary conditions for property violations. The resulting set of properties forms a lattice whose structure is exploited to select a sample of properties that can lower monitoring cost, while preserving violation detection power relative to the original properties. The lattice is then complemented with a weighting scheme that assigns each property a different priority that can be adjusted continuously to better drive the property sampling process. Our evaluation using the Hibernate API reveals that our approach produces a rich, structured set of properties that enables control of monitoring overhead, while detecting more violations more quickly than alternative techniques.
- Agrawal, H. 1999. Efficient coverage testing using global dominator graphs. In Proceedings of the Workshop on Program Analysis for Software Tools and Engineering. 11--20. Google ScholarDigital Library
- Ammons, G., Bodik, R., and Larus, J. R. 2002. Mining specifications. In Proceedings of the ACM Symposium on Principles of Programming Languages. 4--16. Google ScholarDigital Library
- Arnold, M. and Ryder, B. G. 2001. A framework for reducing the cost of instrumented code. In Proceedings of the Conference on Programming Language Design and Implementation. 168--179. Google ScholarDigital Library
- Arnold, M., Vechev, M., and Yahav, E. 2008. QVM: An efficient runtime for detecting defects in deployed systems. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications. 143--162. Google ScholarDigital Library
- Avgustinov, P., Tibble, J., and de Moor, O. 2007. Making trace monitors feasible. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications. 589--608. Google ScholarDigital Library
- Ball, T. and Larus, J. 1992. Optimally profiling and tracing programs. In Proceedings of the ACM Symposium on Principles of Programming Languages. 59--70. Google ScholarDigital Library
- Ball, T. and Larus, J. R. 1996. Efficient path profiling. In Proceedings of the International Symposium on Microarchitecture. 46--57. Google ScholarDigital Library
- Ball, T., Kupferman, O., and Yorsh, G. 2005. Abstraction for falsification. In Proceedings of the International Conference on Computer-Aided Verification. 67--81. Google ScholarDigital Library
- Bauer, C. and Ling, G. 2007. Java Persistence with Hibernate. Manning Publications Co., Greenwich, CT. Google ScholarDigital Library
- Bodden, E. 2010. Efficient hybrid typestate analysis by determining continuation-equivalent states. In Proceedings of the International Conference on Software Engineering. 5--14. Google ScholarDigital Library
- Bodden, E., Hendren, L., and Lhotak, O. 2007. A staged static program analysis to improve the performance of runtime monitoring. In Proceedings of the European Conference on Object-Oriented Programming. 525--549. Google ScholarDigital Library
- Bodden, E., Lam, P., and Hendren, L. 2008a. Finding programming errors earlier by evaluating runtime monitors ahead-of-time. In Proceedings of the International Symposium on Foundations of Software Engineering. 36--47. Google ScholarDigital Library
- Bodden, E., Hendren, L. J., Lam, P., Lhoták, O., and Naeem, N. A. 2008b. Collaborative runtime verification with tracematches. Oxford J. Logics Computat. 20, 3. Google ScholarDigital Library
- Chen, F. and Roşu, G. 2007. Mop: An efficient and generic mntime verification framework. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications. 569--588. Google ScholarDigital Library
- Chilakamarri, K.-R. and Elbaum, S. 2004. Reducing coverage collection overhead with disposable instrumentation. In Proceedings of the International Symposium on Software Reliability Engineering. 233--244. Google ScholarDigital Library
- Diep, M., Cohen, M., and Elbaum, S. 2006. Probe distribution techniques to profile events in deployed software. In Proceedings of the International Symposium on Software Reliability Engineering. 331--342. Google ScholarDigital Library
- Dwyer, M. and Purandare, R. 2007. Residual dynamic typestate analysis. In Proceedings of the IEEE/ACM International Conference on Automated Software Engineering. 124--133. Google ScholarDigital Library
- Dwyer, M., Avrunin, G., and Corbett, J. 1999. Patterns in property specifications for finite-state verification. In Proceedings of the International Conference on Software Engineering. 411--420. Google ScholarDigital Library
- Dwyer, M., Kinneer, A., and Elbaum, S. 2007. Adaptive online program analysis. In Proceedings of the International Conference on Software Engineering. 220--229. Google ScholarDigital Library
- Dwyer, M. B., Diep, M., and Elbaum, S. 2008. Reducing the cost of path property monitoring through sampling. In Proceedings of the IEEE/ACM International Conference on Automated Software Engineering. 228--237. Google ScholarDigital Library
- Elbaum, S. G. and Diep, M. 2005. Profiling deployed software: Assessing strategies and testing opportunities. IEEE Trans. Softw. Engin. 31, 4, 312--327. Google ScholarDigital Library
- Glenn, A., Ball, T., and Larus, J. 1997. Exploiting hardware performance counters with flow and context sensitive profiling. ACM SIGPLAN Notices 32, 5, 85--96. Google ScholarDigital Library
- Graham, S. L., Kessler, P. B., and Mckusick, M. K. 1982. Gprof: A call graph execution pro filer. In Proceedings of the Symposium on Compiler Construction. 120--126. Google ScholarDigital Library
- Hauswirth, M. and Chilimbi, T. M. 2004. Low-overhead memory leak detection using adaptive statistical profiling. ACM SIGPLAN Notices 39, 11, 156--164. Google ScholarDigital Library
- Hilbert, D. and Redmiles, D. 1998. An approach to large-scale collection of application usage data over the Internet. In Proceedings of the International Conference on Software Engineering. 136--145. Google ScholarDigital Library
- Hopcroft, J. E. and Ullman, J. D. 1979. Introduction to Automata Theory, Languages and Computation. Addison-Wesley. Google ScholarDigital Library
- Kim, M., Viswanathan, M., Kannan, S., Lee, I., and Sokolsky, O. V. 2004. Java-MaC: A run-time assurance approach for Java programs. Formal Meth. Sys. Des. 24, 2, 129--155. Google ScholarDigital Library
- Kinneer, A., Dwyer, M., and Rothermel, G. 2006. Sofya: A flexible framework for development of dynamic program analyses for Java software. Tech. rep. TR-UNL-CSE-2006-0006, University of Nebraska-Lincoln.Google Scholar
- Kumar, S., Dharmapurikar, S., Yu, F., Crowley, P., and Turner, J. 2006. Algorithms to accelerate multiple regular expressions matching for deep packet inspection. In Proceedings of the ACM SIGCOMM Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications. 339--350. Google ScholarDigital Library
- Liblit, B., Aiken, A., and Zheng, A. 2003. Distributed program sampling. In Proceedings of the Conference on Programming Language Design and Implementation. 141--154.Google Scholar
- Liblit, B., Aiken, A., Zheng, Z., and Jordan, M. 2003. Bug isolation via remote program sampling. In Proceedings of the Conference on Programming Language Design and Implementation. 141--154. Google ScholarDigital Library
- Ma, Y.-S., Offutt, J., and Kwon, Y. R. 2005. Mujava: An automated class mutation system: Research articles. Softw. Test. Verif. Reliab. 15, 2, 97--133. Google ScholarDigital Library
- Misurda, J., Clause, J. A., Reed, J. L., Childers, B. R., and Soffa, M. L. 2005. Demand-driven structural testing with dynamic instrumentation. In Proceedings of the International Conference on Software Engineering. 156--165. Google ScholarDigital Library
- Naeem, N. A. and Lhotak, O. 2008. Typestate-like analysis of multiple interacting objects. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications. 347--366. Google ScholarDigital Library
- Orso, A., Liang, D., Harrold, M., and Lipton, R. 2002. Gamma system: Continuous evolution of software after deployment. In Proceedings of the International Symposium on Software Testing and Analysis. 65--69. Google ScholarDigital Library
- Pavlopoulou, C. and Young, M. 1999. Residual test coverage monitoring. In Proceedings of the International Conference on Software Engineering. 277--284. Google ScholarDigital Library
- Reiss, S. and Renieris, M. 2001. Encoding program executions. In Proceedings of the International Conference on Software Engineering. 221--230. Google ScholarDigital Library
- Shoham, S., Yahav, E., Fink, S., and Pistoia, M. 2007. State specification mining using automata-based abstractions. In Proceedings of the International Symposium on Software Testing and Analysis. 174--184. Google ScholarDigital Library
- Smith, R., Estan, C., Jha, S., and Kong, S. 2008. Deflating the big bang: Fast and scalable deep packet inspection with extended finite automata. In Proceedings of the ACM SIGCOMM Data Communications Festival. 207--218. Google ScholarDigital Library
- Weimer, W. and Necula, G. C. 2005. Mining temporal specifications for error detection. In Proceedings of the Conference on Tools and Algorithms for the Construction and Analysis of Systems. 461--476. Google ScholarDigital Library
- Williams, C. C. and Hollingsworth, J. K. 2004. Interactive binary instrumentation. In Proceedings of the ICSE Workshop on Remote Analysis and Measurement of Software Systems. 312--327.Google Scholar
- Yu, F., Chen, Z., Diao, Y., Lakshma, T. V., and Katz, R. H. 2006. Fast and memory-efficient regular expression matching for deep packet inspection. In Proceedings of the ACM/IEEE Symposium on Architecture for Networking and Communications Systems. 93--102. Google ScholarDigital Library
Index Terms
- Lattice-Based Sampling for Path Property Monitoring
Recommendations
Reducing the Cost of Path Property Monitoring Through Sampling
ASE '08: Proceedings of the 23rd IEEE/ACM International Conference on Automated Software EngineeringRun-time monitoring can provide important insights about a program's behavior and, for simple properties, it can be done efficiently. Monitoring properties describing sequences of program states and events, however, can result in significant run-time ...
Optimizing monitoring of finite state properties through monitor compaction
ISSTA 2013: Proceedings of the 2013 International Symposium on Software Testing and AnalysisRuntime monitoring has proven effective in detecting property violations, but it can incur high overhead when monitoring just a single property - particularly when the property relates multiple objects. In practice developers will likely monitor ...
Partially Evaluating Finite-State Runtime Monitors Ahead of Time
Finite-state properties account for an important class of program properties, typically related to the order of operations invoked on objects. Many library implementations therefore include manually written finite-state monitors to detect violations of ...
Comments