Inference of Resource Management Specifications

Uloženo v:
Podrobná bibliografie
Název: Inference of Resource Management Specifications
Autoři: Shadab, Narges, Gharat, Pritam, Tiwari, Shrey, Ernst, Michael D., Kellogg, Martin, Lahiri, Shuvendu K., Lal, Akash, Sridharan, Manu
Zdroj: Faculty Publications
Informace o vydavateli: Digital Commons @ NJIT
Rok vydání: 2023
Sbírka: Digital Commons @ New Jersey Institute of Technology (NJIT)
Témata: accumulation analysis, Pluggable type systems, resource leaks, specify-and-check, specify-and-verify, static analysis, typestate analysis
Popis: A resource leak occurs when a program fails to free some finite resource after it is no longer needed. Such leaks are a significant cause of real-world crashes and performance problems. Recent work proposed an approach to prevent resource leaks based on checking resource management specifications. A resource management specification expresses how the program allocates resources, passes them around, and releases them; it also tracks the ownership relationship between objects and resources, and aliasing relationships between objects. While this specify-and-verify approach has several advantages compared to prior techniques, the need to manually write annotations presents a significant barrier to its practical adoption. This paper presents a novel technique to automatically infer a resource management specification for a program, broadening the applicability of specify-and-check verification for resource leaks. Inference in this domain is challenging because resource management specifications differ significantly in nature from the types that most inference techniques target. Further, for practical effectiveness, we desire a technique that can infer the resource management specification intended by the developer, even in cases when the code does not fully adhere to that specification. We address these challenges through a set of inference rules carefully designed to capture real-world coding patterns, yielding an effective fixed-point-based inference algorithm. We have implemented our inference algorithm in two different systems, targeting programs written in Java and C#. In an experimental evaluation, our technique inferred 85.5% of the annotations that programmers had written manually for the benchmarks. Further, the verifier issued nearly the same rate of false alarms with the manually-written and automatically-inferred annotations.
Druh dokumentu: text
Jazyk: unknown
Relation: https://digitalcommons.njit.edu/fac_pubs/1380
DOI: 10.1145/3622858
Dostupnost: https://digitalcommons.njit.edu/fac_pubs/1380
https://doi.org/10.1145/3622858
Přístupové číslo: edsbas.37850D7D
Databáze: BASE
Popis
Abstrakt:A resource leak occurs when a program fails to free some finite resource after it is no longer needed. Such leaks are a significant cause of real-world crashes and performance problems. Recent work proposed an approach to prevent resource leaks based on checking resource management specifications. A resource management specification expresses how the program allocates resources, passes them around, and releases them; it also tracks the ownership relationship between objects and resources, and aliasing relationships between objects. While this specify-and-verify approach has several advantages compared to prior techniques, the need to manually write annotations presents a significant barrier to its practical adoption. This paper presents a novel technique to automatically infer a resource management specification for a program, broadening the applicability of specify-and-check verification for resource leaks. Inference in this domain is challenging because resource management specifications differ significantly in nature from the types that most inference techniques target. Further, for practical effectiveness, we desire a technique that can infer the resource management specification intended by the developer, even in cases when the code does not fully adhere to that specification. We address these challenges through a set of inference rules carefully designed to capture real-world coding patterns, yielding an effective fixed-point-based inference algorithm. We have implemented our inference algorithm in two different systems, targeting programs written in Java and C#. In an experimental evaluation, our technique inferred 85.5% of the annotations that programmers had written manually for the benchmarks. Further, the verifier issued nearly the same rate of false alarms with the manually-written and automatically-inferred annotations.
DOI:10.1145/3622858