ACM Home Page
Please provide us with feedback. Feedback
Eliminating stack overflow by abstract interpretation
Full text PdfPdf (511 KB)
Source
ACM Transactions on Embedded Computing Systems (TECS) archive
Volume 4 ,  Issue 4  (November 2005) table of contents
Pages: 751 - 778  
Year of Publication: 2005
ISSN:1539-9087
Authors
John Regehr  University of Utah, Salt Lake City, UT
Alastair Reid  University of Utah, Salt Lake City, UT
Kirk Webb  University of Utah, Salt Lake City, UT
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 8,   Downloads (12 Months): 94,   Citation Count: 6
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1113830.1113833
What is a DOI?

ABSTRACT

An important correctness criterion for software running on embedded microcontrollers is stack safety: a guarantee that the call stack does not overflow. Our first contribution is a method for statically guaranteeing stack safety of interrupt-driven embedded software using an approach based on context-sensitive dataflow analysis of object code. We have implemented a prototype stack analysis tool that targets software for Atmel AVR microcontrollers and tested it on embedded applications compiled from up to 30,000 lines of C. We experimentally validate the accuracy of the tool, which runs in under 10 sec on the largest programs that we tested. The second contribution of this paper is the development of two novel ways to reduce stack memory requirements of embedded software.


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
Alter, D. 2003. Online stack overflow detection on the TMS320C28x DSP. Texas Instruments Application Note SPRA820. http://www-s.ti.com/sc/psheets/spra820/spra820.pdf.
 
2
Atemu. 2004. Atemu: A sensor network emulator/simulator/debugger. Center for Satellite and Hybrid Communication Networks, University of Maryland. http://www.cshcn.umd.edu/research/atemu/.
 
3
Autopilot Project. 2004. http://autopilot.sourceforge.net.
4
 
5
Baker, T. P. 1990. A stack-based resource allocation policy for realtime processes. In Proc. of the 11th IEEE Real-Time Systems Symp. (RTSS), Lake Buena Vista, FL. 191--200.
 
6
Balakrishnan, G. and Reps, T. 2004. Analyzing memory accesses in x86 executables. In Proc. of the Intl. Conf. on Compiler Construction (CC), Barcelona, Spain.
 
7
Barello, L. 2004. The AvrX real time kernel. http://barello.net/avrx.
 
8
 
9
Chatterjee, K., Ma, D., Majumdar, R., Zhao, T., Henzinger, T. A., and Palsberg, J. 2003. Stack size analysis for interrupt-driven programs. In Proc. of the 10th Static Analysis Symp., San Diego, CA. 109--126.
10
11
 
12
 
13
14
 
15
Heckmann, R. and Ferdinand, C. 2002. Stack usage analysis and software visualization for embedded processors. In Proc. of the Embedded Intelligence Congress, Nuremberg, Germany.
16
 
17
 
18
 
19
20
21
 
22
Reid, A., Flatt, M., Stoller, L., Lepreau, J., and Eide, E. 2000. Knit: Component composition for systems software. In Proc. of the 4th Symp. on Operating Systems Design and Implementation. Springer Verlag, San Diego, CA. 347--360.
 
23
Saksena, M. and Wang, Y. 2000. Scalable real-time system design using preemption thresholds. In Proc. of the 21st IEEE Real-Time Systems Symp. (RTSS), Orlando, FL.


Collaborative Colleagues:
John Regehr: colleagues
Alastair Reid: colleagues
Kirk Webb: colleagues