Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Efficient and effective array bound checking
Nguyen T., Irigoin F. ACM Transactions on Programming Languages and Systems27 (3):527-570,2005.Type:Article
Date Reviewed: Sep 2 2005

Array bound checking is an important step in software verification, and omitting this step often has consequences ranging from meaningless data to potential security violations. However, such checking is resource-intensive, and, according to the authors, commercial compilers available today are inefficient in implementing these checks. Specifically, these compilers slow down significantly during both compilation and execution, fail to provide sufficient debugging information, and do not check consistency between the sizes of actual and formal array parameters in subroutine calls.

The authors present two optimization techniques for bound checking that improve both the speed and the debugging capability. Broadly speaking, these are the elimination approach, which adds checks at all array references and then removes redundant checks; and the insertion approach, which adds checks only when one cannot prove the references as illegal otherwise. A new algorithm for checking the consistency between the formal and actual parameters is also presented.

The paper contains a comprehensive survey of related work, and highlights the salient features of each approach. Next, it presents a detailed description of PIPS, a source-to-source FORTRAN compiler, used by the authors. Detailed algorithms, examples, and relevant proofs are included.

I believe that the most interesting part of this paper is the experimental results section, where the authors compare the efficiency of their approach for various metrics: removed checks, debugging information, compilation times, execution times, and actual/formal array bounds checking. Using industry-standard benchmarks, they compare their approach with three commercial compilers, and find the results quite promising. In each case, their approach works much better, and they draw several useful conclusions. For instance, the percentage of removed checks may not be a good indicator of the efficiency of an approach. For example, removing a single check in an inner loop may be more effective than removing several checks elsewhere. In addition, the insertion approach generally works better than the elimination approach.

However, by the authors’ own admission, substantial work still needs to be done to apply their approach to languages such as C and Java. These involve handling recursive calls, data structures, pointer arithmetic, and so on, so the effect of their approach may be limited in these languages.

Overall, this paper offers a comprehensive overview of the state of the art in array bounds checking for FORTRAN, and offers promising approaches for improving the efficiency of these checks. Commercial FORTRAN compilers should benefit by adopting this approach.

Reviewer:  Ambar Sarkar Review #: CR131728 (0603-0282)
Bookmark and Share
 
Assertion Checkers (D.2.4 ... )
 
 
Optimization (D.3.4 ... )
 
 
Symbolic Execution (D.2.5 ... )
 
 
Processors (D.3.4 )
 
 
Testing And Debugging (D.2.5 )
 
Would you recommend this review?
yes
no
Other reviews under "Assertion Checkers": Date
Disjunctive program analysis for algebraic data types
Jensen T. ACM Transactions on Programming Languages and Systems 19(5): 751-803, 1997. Type: Article
Jun 1 1998
A calculus of atomic actions
Elmas T., Qadeer S., Tasiran S.  POPL 2009 (Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Savannah, GA, Jan 21-23, 2009)2-15, 2008. Type: Proceedings
Mar 16 2009
Improving application security with data flow assertions
Yip A., Wang X., Zeldovich N., Kaashoek M.  SOSP 2009 (Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles, Big Sky, MT, Oct 11-14, 2009)291-304, 2009. Type: Proceedings
Jan 18 2010
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy