Splitting Application Input into Batches as a Countermeasure Against Software Aging
Carlos Eduardo de Schuller Banjar, Daniel Sadoc Menasché, Alberto Avritzer · 2024
In the realm of software aging and rejuvenation, our study addresses a challenging bug encountered during the development of a crawler and parser for webpages. The bug, originating from an external Python library, proved difficult to reproduce due to its dependency on specific conditions, notably requiring a substantial number of iterations to manifest. Although the bug behaves similarly to a Bohrbug—manifesting consistently under certain conditions, including fixed input—the exact triggering condition remains unknown. This makes it a significant challenge to simply eliminate the bug from the code, a common approach with Bohrbugs. This paper details the extensive debugging process undertaken to identify and address this issue. Through methodical analysis and testing, we discovered that the bug’s impact was mitigated by dividing prolonged executions into manageable batches. This approach not only resolved the issue but also offered insights into effective strategies for managing complex bugs in long-running processes.