2023/10/10 by Mohannad Alhanahnah, Philipp Schubert, Alhanahnah, Mohannad +7 · 1 citation
Computer Science · #FOS: Computer and information sciences #Programming Languages (cs.PL) #Security and Verification in Computing #Software Engineering (cs.SE) #Software Engineering Research #Software System Performance and Reliability
paper · pdf · doi:10.48550/arxiv.2310.06758
openalex publication_date 2023/10/10 · openalex created_date 2025/10/10 · openalex updated_date 2026/07/28
Researchers have recently devised tools for debloating software and detecting configuration errors. Several of these tools rely on the observation that programs are composed of an initialization phase followed by a main-computation phase. Users of these tools are required to manually annotate the boundary that separates these phases, a task that can be time-consuming and error-prone (typically, the user has to read and understand the source code or trace executions with a debugger). Because errors can impair the tool's accuracy and functionality, the manual-annotation requirement hinders the ability to apply the tools on a large scale. In this paper, we present a field study of 24 widely-used C/C++ programs, identifying common boundary properties in 96% of them. We then introduce slash, an automated tool that locates the boundary based on the identified properties. slash successfully identifies the boundary in 87.5% of the studied programs within 8.5 minutes, using up to 4.4 GB memory. In an independent test, carried out after slash was developed, slash identified the boundary in 85.7% of a dataset of 21 popular C/C++ GitHub repositories. Finally, we demonstrate slash's potential to streamline the boundary-identification process of software-debloating and error-detection tools.