Publication Type
Conference Proceeding Article
Version
acceptedVersion
Publication Date
9-2018
Abstract
Concurrency bugs of a multi-threaded program may only manifest with certain scheduling, i.e., they are heisenbugs which are observed only from time to time if we execute the same program with the same input multiple times. They are notoriously hard to fix. In this work, we propose an approach to automatically fix concurrency bugs. Compared to previous approaches, our key idea is to systematically fix concurrency bugs by inferring locking policies from failure inducing memory-access patterns. That is, we automatically identify memory-access patterns which are correlated with the manifestation of the bug, and then conjecture what is the intended locking policy of the program. Afterwards, we fix the program by implementing the locking policy so that the failure inducing memory-access patterns are made impossible. We have implemented our approach in a toolkit called PFix which supports Java programs. We applied PFix to a set of 23 concurrency bugs and are able to automatically fix 19 of them. In comparison, Grail which is the state-of-the-art tool for fixing concurrency bugs in Java programs can only fix 3 of them correctly.
Keywords
Multi-threading, Concurrency bugs, Memory-access pattern, Locking policy, Automatic fixing
Discipline
Computer Engineering | Software Engineering
Research Areas
Software and Cyber-Physical Systems
Publication
ASE 2018: Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering, Corum, Montpellier, France, September 3-7
First Page
589
Last Page
600
Identifier
10.1145/3238147.3238198
Publisher
ACM
City or Country
New York
Citation
LIN, Huarui; WANG, Zan; LIU, Shuang; SUN, Jun; ZHANG, Dongdi; and WEI, Guangning.
PFix: Fixing concurrency bugs based on memory access patterns. (2018). ASE 2018: Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering, Corum, Montpellier, France, September 3-7. 589-600.
Available at: https://ink.library.smu.edu.sg/sis_research/4655
Copyright Owner and License
Authors
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-No Derivative Works 4.0 International License.
Additional URL
https://doi.org/10.1145/3238147.3238198