Publication Type

Conference Proceeding Article

Version

publishedVersion

Publication Date

3-2020

Abstract

Concurrency bugs are notoriously hard to identify and fix. A systematic way of avoiding concurrency bugs is to design and implement a locking policy that consistently guards all shared variables. Concurrency bugs thus can be viewed as the result of an illy-designed or poorly implemented locking policy. The trouble is that the locking policy is often not documented, which makes debugging concurrency bugs clueless. We argue that it is too late to debug concurrency bugs after programming is done and we instead detect and fix them while they are being implemented. In this work, we propose an approach named IFIX which flags potential concurrency bugs and recommends fixes while the bugs are introduced. The key idea is to automatically conjecture what the intended locking policy is based on static analysis and recommend fixes accordingly. The recommended fixes are present to the programmer promptly and the user feedback (i.e., whether the certain recommendation is selected) is used to refine the conjectured locking policy and consequently future fixes. IFIX is evaluated on 43 concurrent programs, and through a user study with 30 programmers. The experiment results and user feedback show that IFIX is efficient, accurate and user-friendly

Keywords

bug fix, concurrency, locking policy

Discipline

Software Engineering

Research Areas

Software and Cyber-Physical Systems

Publication

2020 25th International Conference on Engineering of Complex Computer Systems (ICECCS): Singapore, March 4-6: Proceedings

First Page

155

Last Page

164

ISBN

9781728185583

Identifier

10.1109/ICECCS51672.2020.00025

Publisher

IEEE Computer Society

City or Country

Los Alamitos, CA

Embargo Period

5-13-2021

Copyright Owner and License

Publisher

Additional URL

https://doi.org/10.1109/ICECCS51672.2020.00025

Share

COinS