slash: A Technique for Static Configuration-Logic Identification
Mohannad Alhanahnah, Philipp Schubert, Thomas Reps, Somesh Jha, and, Eric Bodden

TL;DR
This paper introduces slash, an automated tool that identifies the boundary between initialization and main computation phases in C/C++ programs, reducing manual effort and improving scalability for software debloating and error detection.
Contribution
slash is the first automated tool to reliably locate phase boundaries in C/C++ programs, based on common properties identified through a comprehensive field study.
Findings
slash identifies boundaries in 87.5% of studied programs within 8.5 minutes.
It correctly finds boundaries in 85.7% of GitHub repositories tested.
The tool demonstrates potential to streamline software debloating and error detection processes.
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.…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software System Performance and Reliability · Security and Verification in Computing
