English

slash: A Technique for Static Configuration-Logic Identification

Software Engineering 2023-11-21 v2 Programming Languages

Abstract

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 \textit{slash}, an automated tool that locates the boundary based on the identified properties. \textit{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 \textit{slash} was developed, \textit{slash} identified the boundary in 85.7\% of a dataset of 21 popular C/C++ GitHub repositories. Finally, we demonstrate \textit{slash}'s potential to streamline the boundary-identification process of software-debloating and error-detection tools.

Keywords

Cite

@article{arxiv.2310.06758,
  title  = {slash: A Technique for Static Configuration-Logic Identification},
  author = {Mohannad Alhanahnah and Philipp Schubert and Thomas Reps and Somesh Jha and Eric Bodden},
  journal= {arXiv preprint arXiv:2310.06758},
  year   = {2023}
}
R2 v1 2026-06-28T12:46:06.392Z