skip to main content
10.1145/1181775.1181785acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
Article

How is aliasing used in systems software?

Published: 05 November 2006 Publication History

Abstract

We present a study of all sources of aliasing in over one million lines of C code, identifying in the process the common patterns of aliasing that arise in practice. We find that aliasing has a great deal of structure in real programs and that just nine programming idioms account for nearly all aliasing in our study. Our study requires an automatic alias analysis that both scales to large systems and has a low false positive rate. To this end, we also present a new context-, flow-, and partially path-sensitive alias analysis that, together with a new technique for object naming, achieves a false aliasing rate of 26.2%on our benchmarks.

References

[1]
A. Aiken, J. Foster, J. Kodumal, and T. Terauchi. Checking and inferring local non-aliasing.In Proc.of the Conference on Programming Language Design and Implementation pages 129--140, 2003.
[2]
J. Aldrich, V. Kostadinov, and C. Chambers. Alias annotations for program understanding. In Proc. of the Conference on Object-Oriented Programming, Systems, Languages, and Applications pages 311--330, 2002.
[3]
M. Berndl, O. Lhotak, F. Qian, L. Hendren, and N. Umanee. Points-to analysis using BDDs. In Proc. of the Conference on Programming Language Design and Implementation pages 103--114, 2003.
[4]
J. Boyland. Alias burying: Unique variables without destructive reads. Softw. Pract. Exper. 31(6):533--553, 2001.
[5]
D. Chase, M. Wegman, and K. Zadeck. Analysis of pointers and structures. In Proc. of the Conference on Programming Language Design and Implementation pages 296--310, 1990.
[6]
R. Chatterjee, B. Ryder, and W. Landi. Relevant context inference. In Proc. of the Symposium on Principles of Programming Languages pages 133--146, 1999.
[7]
J. Choi, M. Burke, and P. Carini. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. In Proc. of the Symposiumon Principles of Programming Languages pages 232--245, 1993.
[8]
D. Clarke, J. Potter, and J. Noble. Ownership types for flexible alias protection. In Proc. of the Conferenceon Object-Oriented Programming, Systems, Languages, and Applications pages 48--64, October 1998.
[9]
M. Das. Unification-based pointer analysis with directional assignments. In Proc. of the Conference on Programming Language Design and Implementation pages 35--46, 2000.
[10]
M. Emami, R. Ghiya, and L. Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In Proc. of the Conferenceon Programming Language Design and Implementation pages 242--256, 1994.
[11]
M. Fähndrich and R. DeLine. Adoption and focus: Practical linear types for imperative programming. In Proc. of the Conference on Programming Language Design and Implementation pages 13--24, 2002.
[12]
J. Foster, M. Fähndrich, and A. Aiken. Polymorphic versus monomorphic flow-insensitive points-to analysis for C. In Proc. of the International Symposium on Static Analysis pages 175--198, 2000.
[13]
R. Ghiya and L. Hendren. Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C. In Proc. of the Symposium on Principles of Programming Languages pages 1--15, 1996.
[14]
M. Hind and A. Pioli. Which pointer analysis should I use? In Proc. of the International Symposium on Software Testing and Analysis pages 113--123, 2000.
[15]
J. Hogg. Islands: Aliasing protection in object-oriented languages. In Proc. of the Conference on Object-Oriented Programming Systems, Languages, and Applications pages 271--285, 1991.
[16]
N. Jones and S. Muchnick. Flow analysis and optimization of lisp-like structures. In Program Flow Analysis: Theory and Applications pages 102--131. Prentice Hall, 1979.
[17]
N. Krishnaswami and J. Aldrich. Permission-based ownership: Encapsulating state in higher-order typed languages. In Proc. of the Conference on Programming Language Design and Implementation June 2005.
[18]
W. Landi and B. Ryder. A safe approximate algorithm for interprocedural aliasing. In Proc. of the Conference on Programming Language Design and Implementation pages 235--248, 1992.
[19]
O. Lhotak and L. Hendren. Jedd: a BDD-based relational extension of Java. In Proceedings of the Conference on Programming Language Design and Implementation pages 158--169, 2004.
[20]
D. Liang and M. J. Harrold. Efficient computation of parameterized pointer information for interprocedural analyses. In Proc. of the International Symposium on Static Analysis pages 279--298, 2001.
[21]
D. Liang, M. Pennings, and M. Harrold. Evaluating the precision of static reference analysis using profiling. In Proc. of the International Symposium on Software Testing and Analysis pages 22--32, 2002.
[22]
V. B. Livshits and M. Lam. Tracking pointers with path and context sensitivity for bug detection in C programs. In Proc. of the Symposium on the Foundations of Software Engineering pages 317--326, 2003.
[23]
A. Milanova, A. Rountev, and B. Ryder. Parameterized object sensitivity for points-to and side-effect analyses for Java. In Proc. of the International Symposium on Software Testing and Analysis pages 1--11, 2002.
[24]
N. Minsky. Towards alias-free pointers. In Proc. of the European Conference on Object-Oriented Programming pages 189--209, 1996.
[25]
M. Mock, M. Das, C. Chambers, and S. Eggers. Dynamic points-to sets: A comparison with static analyses and potential applications in program understanding and optimization. In Proc. of the Workshop on Program Analysis for Software Tools and Engineering pages 66--72, 2001.
[26]
M. Naik and A. Aiken. Effective static race detection for Java. In Proc. of the Conference on Programming Language Design and Implementation page to appear, 2006.
[27]
E. Ruf. Context-insensitive alias analysis reconsidered. In Proc. of the Conference on Programming Language Design and Implementation pages 13--22, 1995.
[28]
P. Stocks, B. Ryder, W. Landi, and S. Zhang. Comparing flow and context sensitivity on the modification-side-effects problem. In Proc. of the International Symposium on Software Testing and Analysis pages 21--31, 1998.
[29]
J. Whaley and M. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In Proc. of the Conference on Programming Language Design and Implementation pages 134--144, 2004.
[30]
J. Whaley and M. Rinard. Compositional pointer and escape analysis for Java programs. Proc. of the Conference on Object Oriented Programming Systems, Languages, and Applications pages 187--206, 1999.
[31]
R. Wilson and M. Lam. Efficient context-sensitive pointer analysis for C programs. In Proc. of the Conference on Programming Language Design and Implementation pages 1--12, 1995.
[32]
Y. Xie and A. Aiken. Scalable error detection using boolean satisfiability. In Proc. of the Symposium on Principles of Programming Languages pages 351--363, January 2005.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
SIGSOFT '06/FSE-14: Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
November 2006
298 pages
ISBN:1595934685
DOI:10.1145/1181775
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 05 November 2006

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. aliasing
  2. program analysis
  3. satisfiability

Qualifiers

  • Article

Conference

SIGSOFT06/FSE-14
Sponsor:

Acceptance Rates

Overall Acceptance Rate 17 of 128 submissions, 13%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)19
  • Downloads (Last 6 weeks)3
Reflects downloads up to 20 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media