ACM Home Page
Please provide us with feedback. Feedback
Summarizing procedures in concurrent programs
Full text PdfPdf (173 KB)
Source Annual Symposium on Principles of Programming Languages archive
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages table of contents
Venice, Italy
Pages: 245 - 255  
Year of Publication: 2004
ISBN:1-58113-729-X
Also published in ...
Authors
Shaz Qadeer  Microsoft Research, Redmond, WA
Sriram K. Rajamani  Microsoft Research, Redmond, WA
Jakob Rehof  Microsoft Research, Redmond, WA
Sponsors
SIGACT: ACM Special Interest Group on Algorithms and Computation Theory
ACM: Association for Computing Machinery
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 9,   Downloads (12 Months): 70,   Citation Count: 16
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/964001.964022
What is a DOI?

ABSTRACT

The ability to summarize procedures is fundamental to building scalable interprocedural analyses. For sequential programs, procedure summarization is well-understood and used routinely in a variety of compiler optimizations and software defect-detection tools. However, the benefit of summarization is not available to multithreaded programs, for which a clear notion of summaries has so far remained unarticulated in the research literature.In this paper, we present an intuitive and novel notion of procedure summaries for multithreaded programs. We also present a model checking algorithm for these programs that uses procedure summarization as an essential component. Our algorithm can also be viewed as a precise interprocedural dataflow analysis for multithreaded programs. Our method for procedure summarization is based on the insight that in well-synchronized programs, any computation of a thread can be viewed as a sequence of transactions, each of which appears to execute atomically to other threads. We summarize within each transaction; the summary of a procedure comprises the summaries of all transactions within the procedure. We leverage the theory of reduction [17] to infer boundaries of these transactions.The procedure summaries computed by our algorithm allow reuse of analysis results across different call sites in a multithreaded program, a benefit that has hitherto been available only to sequential programs. Although our algorithm is not guaranteed to terminate on multithreaded programs that use recursion (reachability analysis for multithreaded programs with recursive procedures is undecidable [18]), there is a large class of programs for which our algorithm does terminate. We give a formal characterization of this class, which includes programs that use shared variables, synchronization, and recursion.


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
 
2
 
3
4
5
 
6
7
8
9
 
10
11
 
12
C. Flanagan and S. Qadeer. Thread-modular model checking. In SPIN 03: SPIN Workshop, LNCS 2648, pages 213--225. Springer-Verlag, 2003.
 
13
C. Flanagan and S. Qadeer. Transactions for software model checking. In SoftMC 03: Software Model Checking Workshop, 2003.
14
15
 
16
S. N. Freund and S. Qadeer. Checking concise specifications for multithreaded software. In FTfJP 03: Formal Techniques for Java-like Programs, 2003.
17
18
19
 
20
 
21
M. Sharir and A. Pnueli. Two approaches to interprocedural data flow analysis. In Program Flow Analysis: Theory and Applications, pages 189--233. Prentice-Hall, 1981.
 
22

CITED BY  16

Collaborative Colleagues:
Shaz Qadeer: colleagues
Sriram K. Rajamani: colleagues
Jakob Rehof: colleagues