PFix: Fixing concurrency bugs based on memory access patterns

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 aut...

Full description

Saved in:
Bibliographic Details
Main Authors: LIN, Huarui, WANG, Zan, LIU, Shuang, SUN, Jun, ZHANG, Dongdi, WEI, Guangning
Format: text
Language:English
Published: Institutional Knowledge at Singapore Management University 2018
Subjects:
Online Access:https://ink.library.smu.edu.sg/sis_research/4655
https://ink.library.smu.edu.sg/context/sis_research/article/5658/viewcontent/3238147.3238198.pdf
Tags: Add Tag
No Tags, Be the first to tag this record!
Institution: Singapore Management University
Language: English
id sg-smu-ink.sis_research-5658
record_format dspace
spelling sg-smu-ink.sis_research-56582020-01-03T09:37:24Z PFix: Fixing concurrency bugs based on memory access patterns LIN, Huarui WANG, Zan LIU, Shuang SUN, Jun ZHANG, Dongdi WEI, Guangning 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. 2018-09-07T07:00:00Z text application/pdf https://ink.library.smu.edu.sg/sis_research/4655 info:doi/10.1145/3238147.3238198 https://ink.library.smu.edu.sg/context/sis_research/article/5658/viewcontent/3238147.3238198.pdf http://creativecommons.org/licenses/by-nc-nd/4.0/ Research Collection School Of Computing and Information Systems eng Institutional Knowledge at Singapore Management University Multi-threading Concurrency bugs Memory-access pattern Locking policy Automatic fixing Computer Engineering Software Engineering
institution Singapore Management University
building SMU Libraries
continent Asia
country Singapore
Singapore
content_provider SMU Libraries
collection InK@SMU
language English
topic Multi-threading
Concurrency bugs
Memory-access pattern
Locking policy
Automatic fixing
Computer Engineering
Software Engineering
spellingShingle Multi-threading
Concurrency bugs
Memory-access pattern
Locking policy
Automatic fixing
Computer Engineering
Software Engineering
LIN, Huarui
WANG, Zan
LIU, Shuang
SUN, Jun
ZHANG, Dongdi
WEI, Guangning
PFix: Fixing concurrency bugs based on memory access patterns
description 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.
format text
author LIN, Huarui
WANG, Zan
LIU, Shuang
SUN, Jun
ZHANG, Dongdi
WEI, Guangning
author_facet LIN, Huarui
WANG, Zan
LIU, Shuang
SUN, Jun
ZHANG, Dongdi
WEI, Guangning
author_sort LIN, Huarui
title PFix: Fixing concurrency bugs based on memory access patterns
title_short PFix: Fixing concurrency bugs based on memory access patterns
title_full PFix: Fixing concurrency bugs based on memory access patterns
title_fullStr PFix: Fixing concurrency bugs based on memory access patterns
title_full_unstemmed PFix: Fixing concurrency bugs based on memory access patterns
title_sort pfix: fixing concurrency bugs based on memory access patterns
publisher Institutional Knowledge at Singapore Management University
publishDate 2018
url https://ink.library.smu.edu.sg/sis_research/4655
https://ink.library.smu.edu.sg/context/sis_research/article/5658/viewcontent/3238147.3238198.pdf
_version_ 1770574952012972032