skip to main content
10.1145/3394451.3397206acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Explaining bug provenance with trace witnesses

Published: 15 June 2020 Publication History

Abstract

Bug finders are mainstream tools used during software development that significantly improve the productivity of software engineers and lower maintenance costs. These tools search for software anomalies by scrutinising the program's code using static program analysis techniques, i.e., without executing the code. However, current bug finders do not explain why bugs were found, primarily due to coarse-grain abstractions that abstract away large portions of the operational semantics of programming languages. To further improve the utility of bug finders, it is paramount to explain reported bugs to the end-users.
In this work, we devise a new technique that produces a program trace for a reported bug giving insight into the root cause for the reported bug. For the generation of the program trace, we use an abstracted flow-based semantics for programs to overcome the undecidability of the problem. We simplify the semantic problem by mapping an input program with a reported bug to a Constant Copy Machine (CCM) for the trace construction. Using CCM the semantics of the program can be weakened, and thus bug provenance can be solved in polynomial time, producing a shortest trace in the process which gives the shortest explanation. The technique is reified in the bug tracing tool Digger and is evaluated on several open-source Java programs.

Supplementary Material

MP4 File (3394451.3397206.mp4)
Video Presentation

References

[1]
Cristina Cifuentes and Bernhard Scholz. 2008. Parfait - Designing a Scalable Bug Checker. In Scalable Program Analysis, Vol. 08161.
[2]
E. W. Dijkstra. 1959.
[3]
A Note on Two Problems in Connexion with Graphs. Numer. Math. 1, 1 (Dec. 1959), 269–271.
[4]
Jeanne Ferrante, Karl J. Ottenstein, and Joe D. Warren. 1987.
[5]
The Program Dependence Graph and Its Use in Optimization. ACM Trans. Program. Lang. Syst. 9, 3 (July 1987), 319–349.
[6]
Robert W. Floyd. 1962. Algorithm 97: Shortest Path. Commun. ACM 5, 6 (1962), 345.
[7]
William Landi. 1992.
[8]
Undecidability of Static Analysis. ACM Lett. Program. Lang. Syst. 1, 4 (Dec 1992), 323–337.
[9]
Ondrej Lhoták and Kwok-Chiang Andrew Chung. 2011.
[10]
Points-to Analysis with Efficient Strong Updates. SIGPLAN Not. 46 (2011), 3–16.
[11]
Roman Manevich, Manu Sridharan, Stephen Adams, Manuvir Das, and Zhe Yang. 2004.
[12]
PSE: Explaining Program Failures via Postmortem Static Analysis. SIGSOFT Softw. Eng. Notes 29, 6 (Oct 2004), 63–72.
[13]
David A. Patterson and John L. Hennessy. 1990.
[14]
Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers Inc.
[15]
Bernhard Scholz, Herbert Jordan, Pavle Subotić, and Till Westmann. 2016. On Fast Large-scale Program Analysis in Datalog. In Proc. 25th International Conference on Compiler Construction. ACM, 196–206.
[16]
J. C. Shepherdson and H. E. Sturgis. 1963. Computability of Recursive Functions. J. ACM 10, 2 (April 1963), 217–255.
[17]
Yannis Smaragdakis and George Balatsouras. 2015. Pointer Analysis. Found. Trends Program. Lang. 2, 1 (Apr 2015), 1–69.

Cited By

View all

Index Terms

  1. Explaining bug provenance with trace witnesses

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    SOAP 2020: Proceedings of the 9th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis
    June 2020
    19 pages
    ISBN:9781450379977
    DOI:10.1145/3394451
    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: 15 June 2020

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Bug Provenance
    2. Static Analysis
    3. Trace Witness

    Qualifiers

    • Research-article

    Conference

    PLDI '20
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 11 of 11 submissions, 100%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 145
      Total Downloads
    • Downloads (Last 12 months)8
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 25 Feb 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

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media