If At First You Don’t Succeed, Try, Try, Again...? Insights and LLM-informed Tooling for Detecting Retry Bugs in Software Systems
Open Access
- 4 November 2024
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 63-78
Abstract
Retry---the re-execution of a task on failure---is a common mechanism to enable resilient software systems. Yet, despite its commonality and long history, retry remains difficult to implement and test. Guided by our study of real-world retry issues, we propose a novel suite of static and dynamic techniques to detect retry problems in software. We find that the ad-hoc nature of retry implementation poses challenges for traditional program analysis but can be well suited for large language models; and that carefully repurposing existing unit tests can, along with fault injection, expose various types of retry problems.Keywords
Funding Information
- National Science Foundation (NS-2313190, CCF-2119184, CNS-1956180)
- University of Chicago and Argonne National Laboratory (The Chameleon Cloud Project)
- University of Chicago (Eckhardt Fellowship, Quad Undergraduate Research Grant)
This publication has 31 references indexed in Scilit:
- Large Language Models are Few-shot Testers: Exploring LLM-based General Bug Reproduction2023
- Automated Program Repair in the Era of Large Pre-trained Language Models2023
- CodaMosa: Escaping Coverage Plateaus in Test Generation with Pre-trained Large Language Models2023
- A General Framework for Dynamic Stub Injection2017
- Gremlin: Systematic Resilience Testing of Microservices2016
- On fault resilience of OpenStack2013
- Amplifying tests to validate exception handling code2012
- Fast black-box testing of system recovery code2012
- Error propagation analysis for file systems2009
- LFI: A practical and general library-level fault injector2009