ACM Home Page
Please provide us with feedback. Feedback
Techniques for specifying bug patterns
Full text PdfPdf (389 KB)
Source
International Symposium on Software Testing and Analysis archive
Proceedings of the 2007 ACM workshop on Parallel and distributed systems: testing and debugging table of contents
London, United Kingdom
SESSION: Bug patterns in MPD programs table of contents
Pages: 27 - 35  
Year of Publication: 2007
ISBN:978-1-59593-748-3
Authors
Daniel J. Quinlan  Lawrence Livermore National Laboratory, Livermore, CA
Richard W. Vuduc  Lawrence Livermore National Laboratory, Livermore, CA
Ghassan Misherghi  University of California, Davis, Davis, CA
Sponsors
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 7,   Downloads (12 Months): 86,   Citation Count: 0
Additional Information:

abstract   references   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/1273647.1273654
What is a DOI?

ABSTRACT

We present our on-going work to develop techniques for specifying source code signatures of bug patterns. Specifically, we discuss two approaches. The first approach directly analyzes a program in the intermediate representation (IR) of the ROSE compiler infrastructure using ROSE's API. The second analyzes the program using the bddbddb system of Lam, Whaley, et al.. In this approach, we store the IR produced by ROSE as a relational database, express patterns as declarative inference rules on relations in the language Datalog, and bddbddb implements the Datalog programs using binary decision diagram (BDD) techniques. Both approaches readily apply to large-scale applications, since ROSE provides full type analysis, control flow, and other available analysis information. In this paper, we primarily consider bug patterns expressed with respect to the structure of the source code or the control flow, or both. More complex techniques to specify patterns that are functions of data flow properties may be addressed by either of the above approaches, but are not directly treated here. Our Datalog-based work includes explicit support for expressing patterns on the use of the Message Passing Interface (MPI) in parallel distributed memory programs. We show examples of this on-going work as well.


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
Coverity - Source Code Analysis, http://www.coverity.com.
 
2
Fortify - Source Code Analysis, http://www.fortifysoftware.com.
 
3
GrammaTech - Source Code Analysis, http://www.grammatech.com.
 
4
Klockwork - Source Code Analysis, http://www.klockwork.com.
 
5
Open64, http://www.open64.net.
 
6
S. P. Amarasinghe, J. M. Anderson, M. S. Lam, and C. W. Tseng. The SUIF compiler for scalable parallel machines. In Proc. SIAM Conference on Parallel Processing for Scientific Computing, Feb 1995.
 
7
D. H. Bailey, E. Barszcz, J. T. Barton, D. S. Browning, R. L. Carter, D. Dagum, R. A. Fatoohi, P. O. Frederickson, T. A. Lasinski, R. S. Schreiber, H. D. Simon, V. Venkatakrishnan, and S. K. Weeratunga. The nas parallel benchmarks. The International Journal of Supercomputer Applications, 5(3):63--73, Fall 1991.
 
8
H. Chen, D. Dean, and D. Wagner. Model checking one million lines of C code. In Proc. Network and Distributed System Security Symposium, San Diego, CA, USA, February 2004.
 
9
 
10
D. Dams and K. Namjoshi. Orion: High-precision methods for static error analysis of C and C++ programs. Technical Report ITD-04-45263Z, Bell Labs, April 2004.
11
 
12
D. Engler and M. Musuvathi. Static analysis versus software model checking for bug finding. In Proc.International Conference on Verification, Model Checking, and Abstract Interpretation, Venice, Italy, 2004.
 
13
M. S. et. al. MPI-The Complete Reference. MIT Press, 1996.
 
14
E. Farchi and B. R. Harrington. Assisting the code review process using simple pattern recognition. In Proc. IBM Verification Conference, Haifa, Israel, November 2005.
 
15
16
17
18
 
19
B. Krammer, K. Bidmon, M. S. Muller, and M. M. Resch. MARMOT: An MPI analysis and checking tool. In Proc. Parallel Computing: Software Technology, Algorithms, Architectures, and Applications, pages 493--500. Elsevier, 2004.
20
 
21
G. Luecke, H. Chen, J. Coyle, J. Hoekstra, M. Kraeva, and Y. Zou. MPI-CHECK: A tool for checking Fortran 90 MPI programs. Concurrency and Computation: Practice and Experience, 15:93--100, 2003.
 
22
S. McPeak and G. C. Necula. Elkhound: A fast, practical GLR parser generator. In Proc. Conference on Compiler Construction, Barcelona, Spain, April 2004.
 
23
Message Passing Interface Forum (MPIF). MPI: A Message-Passing Interface Standard. Technical Report, University of Tennessee, Knoxville, June 1995. http://www.mpi-forum.org/.
 
24
Message Passing Interface Forum (MPIF). MPI-2: Extensions to the Message Passing Interface. Technical Report, University of Tennessee, Knoxville, 1997. http://www.mpi-forum.org/docs/mpi-20-html/mpi2-report.html.
 
25
NIST. SAMATE - Software Assurance Metrics And Tool Evaluation, http://samate.nist.gov/index.php.
 
26
D. Quinlan. Rose: Compiler support for object-oriented frameworks. In Proceedings of Conference on Parallel Compilers (CPC2000), Aussois, France, volume 10 of Parallel Processing Letters. Springer Verlag, 2000.
 
27
D. Quinlan, M. Schordan, B. Philip, and M. Kowarschik. The specification of source-to-source transformations for the compile-time optimization of parallel object-oriented scientific applications. In H. G. Dietz, editor, Languages and Compilers for Parallel Computing, 14th International Workshop, LCPC 2001, Revised Papers, volume 2624 of Lecture Notes in Computer Science, pages 570--578. Springer Verlag, 2003.
 
28
D. Quinlan, R. Vuduc, T. Panas, J. Hardtlein, and A. Sabjornsen. Support for whole-program analysis and verification of the One-Definition Rule in C++. In Proc. Static Analysis Summit, Gaithersburg, MD, USA, June 2006. National Institute of Standards and Technology Special Publication.
 
29
M. Schordan and D. Quinlan. A source-to-source architecture for user-defined optimizations. In JMLC'03: Joint Modular Languages Conference, volume 2789 of Lecture Notes in Computer Science, pages 214--223. Springer Verlag, Aug. 2003.
 
30
S. F. Siegel. Model checking nonblocking MPI programs. In Proc. Verification, Model Checking, and Abstract Interpretation (VMCAI), Nice, France, January 2007.
 
31
B. Stroustrop and G. D. Reis. Supporting SELL for high-performance computing. In Proc. Workshop on Languages and Compilers for Parallel Computing, Hawthorne, NY, USA, October 2005.
 
32
33
34
 
35
D. Wilkerson. OINK: A collection of composable C++ static analysis tools, 2005. http://freshmeat.net/projects/oink.

Collaborative Colleagues:
Daniel J. Quinlan: colleagues
Richard W. Vuduc: colleagues
Ghassan Misherghi: colleagues