paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Preserving Reactiveness: Understanding and Improving the Debugging Practice of Blocking-Call Bugs

保持响应性:理解与改进阻塞调用缺陷的调试实践
ISSTA Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis2024匹配度 2/10 · 该论文研究响应式应用中的阻塞调用缺陷调试与程序修复,虽涉及程序分析和修复技术,但与用户画像核心方向(静态分析用于ML/Agentic程序、LLM/Agent改进静态分析、浮点或贝叶斯程序分析)几乎没有交集。其主题更偏向软件工程中的异步调试与补丁接受率实证,未涉及LLM、Agent或用户关心的程序分析交叉领域。引用 1 inbox
Arooba Shahoor, Jooyong Yi, Dongsun Kim
crossref: 2026-09-12

AI 速览

一句话:分析响应式应用中响应性缺陷的修复实践,提出基于模式的阻塞调用缺陷主动修复,并验证性能证据可提高补丁接受率。

响应式编程以事件驱动、非阻塞的方式提升系统响应性,但其异步、非阻塞的编码风格对开发者构成学习门槛。本文分析响应式应用中报告的问题及其修复情况,发现开发者相比其他缺陷类型更常不修复或忽略响应性缺陷,其中阻塞调用缺陷尤为突出——这类缺陷会阻塞程序等待 I/O 等操作完成,浪费 CPU 与内存资源。为改进调试实践,作者提出一种基于模式的主动式程序修复技术,生成 30 个补丁并提交给开发者。作者进一步假设,响应性缺陷补丁接受率低是因为其正确性难以像功能缺陷那样通过测试用例评估。为验证该假设,将补丁分为带性能改进证据与不带证据两组,结果表明附带性能改进证据的补丁更可能被开发者接受。

问题
响应式应用中的阻塞调用缺陷会破坏非阻塞执行、浪费资源,但开发者往往不修复或忽略这类响应性缺陷,且其补丁接受率偏低。
方法
分析响应式应用 issue 与修复实践,提出基于模式的主动式程序修复技术生成阻塞调用缺陷补丁,并将补丁分为有/无性能改进证据两组提交给开发者。
评估
通过分析真实响应式项目中的 issue 与修复数据,并提交 30 个自动生成的补丁,比较两组补丁的接受率来验证性能证据对补丁采纳的影响。
原文摘要(Abstract)

Reactive programming reacts to data items as they occur, rather than waiting for them to complete. This programming paradigm is widely used in asynchronous and event-driven scenarios, such as web applications, microservices, real-time data processing, IoT, interactive UIs, and big data. When done right, it can offer greater responsiveness without extra resource usage. However, this also requires a thorough understanding of asynchronous and non-blocking coding, posing a learning curve for developers new to this style of programming. In this work, we analyze issues reported in reactive applications and explore their corresponding fixes. Our investigation results reveal that (1) developers often do not fix or ignore reactiveness bugs as compared to other bug types, and (2) this tendency is most pronounced for blocking-call bugs -- bugs that block the execution of the program to wait for the operations (typically I/O operations) to finish, wasting CPU and memory resources. To improve the debugging practice of such blocking bugs, we develop a pattern-based proactive program repair technique and obtain 30 patches, which we submit to the developers. In addition, we hypothesize that the low patch acceptance rate for reactiveness bugs is due to the difficulty of assessing the patches. This is in contrast to functionality bugs, where the correctness of the patches can be assessed by running test cases. To assess our hypothesis, we split our patches into two groups: one with performance improvement evidence and the other without. It turns out that the patches are more likely to be accepted when submitted with performance improvement evidence.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot8490,
  title = {Preserving Reactiveness: Understanding and Improving the Debugging Practice of Blocking-Call Bugs},
  author = {Arooba Shahoor and Jooyong Yi and Dongsun Kim},
  booktitle = {ISSTA},
  year = {2024},
  doi = {10.1145/3650212.3680319}
}