Symbolic execution for memory consumption analysis
Authors:
Open Access
- 13 June 2016
- journal article
- conference paper
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 51 (5) , 62-71
Abstract
With the advances in both hardware and software of embedded systems in the past few years, dynamic memory allocation can now be safely used in embedded software. As a result, the need to develop methods to avoid heap overflow errors in safety-critical embedded systems has increased. Resource analysis of imperative programs with non-regular loop patterns and signed integers, to support both memory allocation and deallocation, has long been an open problem. Existing methods can generate symbolic bounds that are parametric w.r.t. the program inputs; such bounds, however, are imprecise in the presence of non-regular loop patterns. In this paper, we present a worst-case memory consumption analysis, based upon the framework of symbolic execution. Our assumption is that loops (and recursions) of to-be-analyzed programs are indeed bounded. We then can exhaustively unroll loops and the memory consumption of each iteration can be precisely computed and summarized for aggregation. Because of path-sensitivity, our algorithm generates more precise bounds. Importantly, we demonstrate that by introducing a new concept of reuse, symbolic execution scales to a set of realistic benchmark programs.Keywords
This publication has 16 references indexed in Scilit:
- Compositional certified resource bounds2015
- Worst-case memory consumption analysis for SCJ2013
- Multivariate amortized resource analysisACM Transactions on Programming Languages and Systems, 2012
- Towards harnessing theories through tool support for hard real-time Java programmingInnovations in Systems and Software Engineering, 2012
- Cost analysis of object-oriented bytecode programsTheoretical Computer Science, 2012
- Resource analyses for parallel and distributed coordinationConcurrency and Computation: Practice and Experience, 2011
- Symbolic simulation on complicated loops for WCET path analysis2011
- A constant-time dynamic storage allocator for real-time systemsReal-Time Systems, 2008
- Valgrind2007
- Performance analysis of embedded software using implicit path enumerationACM SIGPLAN Notices, 1995