A Differential Approach to Undefined Behavior Detection.
This paper studies undefined behavior arising in systems programming languages such as C/C++. Undefined behavior bugs lead to unpredictable and subtle systems behavior, and their effects can be further amplified by compiler optimizations. Undefined behavior bugs are present in many systems, includin...
| Publicado en: | Communications of the ACM Vol. 59; no. 3; pp. 99 - 107 |
|---|---|
| Autores principales: | , , , |
| Formato: | Artículo |
| Publicado: |
Association for Computing Machinery
Mar2016
|
| Materias: | |
| Acceso en línea: | Ver este registro en EBSCOhost |
| fields | @attributes: recordID: 1 pdfLink: plink: https://search.ebscohost.com/login.aspx?direct=true&db=hlh&AN=113448856&site=ehost-live header: @attributes: shortDbName: hlh uiTerm: 113448856 longDbName: Humanities International Complete uiTag: AN controlInfo: bkinfo: jinfo: jid: 00010782 ACM jtl: Communications of the ACM issn: 00010782 maglogo: N pubinfo: dt: Mar2016 vid: 59 iid: 3 pid: 68 pub: Association for Computing Machinery artinfo: ui: 113448856 10.1145/2885256 ppf: 99 ppct: 8 formats: tig: atl: A Differential Approach to Undefined Behavior Detection. aug: au: Xi Wang Zeldovich, Nickolai Kaashoek, M. Frans Solar-Lezama, Armando affil: University of Washington, Seattle, WA. Massachusetts Institute of Technology, Cambridge, MA. su: Systems programming (Computer science) Programming languages Compilers (Computer programs) Databases Computer software sug: subj: Systems programming (Computer science) Programming languages Compilers (Computer programs) Databases Computer software ab: This paper studies undefined behavior arising in systems programming languages such as C/C++. Undefined behavior bugs lead to unpredictable and subtle systems behavior, and their effects can be further amplified by compiler optimizations. Undefined behavior bugs are present in many systems, including the Linux kernel and the Postgres database. The consequences range from incorrect functionality to missing security checks. This paper proposes a formal and practical approach, which finds undefined behavior bugs by finding “unstable code” in terms of optimizations that leverage undefined behavior. Using this approach, we introduce a new static checker called Stack that precisely identifies undefined behavior bugs. Applying Stack to widely used systems has uncovered 161 new bugs that have been confirmed and fixed by developers. pubtype: Periodical doctype: Article src: R language: English refInfo: copyright: @attributes: flag: Y dt: @attributes: year: 2016 holdings: @attributes: islocal: N |
|---|