A Method and Tool for Finding Concurrency Bugs Involving Multiple Variables with Application to Modern Distributed Systems

Concurrency bugs are extremely hard to detect due to huge interleaving space. They are happening in the real world more often because of the prevalence of multi-threaded programs taking advantage of multi-core hardware, and microservice based distributed systems moving more and more applications to...

Full description

Bibliographic Details
Main Author: Sun, Zhuo
Format: Others
Published: FIU Digital Commons 2018
Subjects:
Online Access:https://digitalcommons.fiu.edu/etd/3896
https://digitalcommons.fiu.edu/cgi/viewcontent.cgi?article=5139&context=etd
id ndltd-fiu.edu-oai-digitalcommons.fiu.edu-etd-5139
record_format oai_dc
spelling ndltd-fiu.edu-oai-digitalcommons.fiu.edu-etd-51392020-01-14T03:07:16Z A Method and Tool for Finding Concurrency Bugs Involving Multiple Variables with Application to Modern Distributed Systems Sun, Zhuo Concurrency bugs are extremely hard to detect due to huge interleaving space. They are happening in the real world more often because of the prevalence of multi-threaded programs taking advantage of multi-core hardware, and microservice based distributed systems moving more and more applications to the cloud. As the most common non-deadlock concurrency bugs, atomicity violations are studied in many recent works, however, those methods are applicable only to single-variable atomicity violation, and don't consider the specific challenge in distributed systems that have both pessimistic and optimistic concurrency control. This dissertation presents a tool using model checking to predict atomicity violation concurrency bugs involving two shared variables or shared resources. We developed a unique method inferring correlation between shared variables in multi-threaded programs and shared resources in microservice based distributed systems, that is based on dynamic analysis and is able to detect the correlation that would be missed by static analysis. For multi-threaded programs, we use a binary instrumentation tool to capture runtime information about shared variables and synchronization events, and for microservice based distributed systems, we use a web proxy to capture HTTP based traffic about API calls and the shared resources they access including distributed locks. Based on the detected correlation and runtime trace, the tool is powerful and can explore a vast interleaving space of a multi-threaded program or a microservice based distributed system given a small set of captured test runs. It is applicable to large real-world systems and can predict atomicity violations missed by other related works for multi-threaded programs and a couple of previous unknown atomicity violation in real world open source microservice based systems. A limitation is that redundant model checking may be performed if two recorded interleaved traces yield the same partial order model. 2018-11-05T08:00:00Z text application/pdf https://digitalcommons.fiu.edu/etd/3896 https://digitalcommons.fiu.edu/cgi/viewcontent.cgi?article=5139&context=etd FIU Electronic Theses and Dissertations FIU Digital Commons atomicity violation model checking multi-threaded programs distributed systems multiple variable correlations Software Engineering Systems Architecture
collection NDLTD
format Others
sources NDLTD
topic atomicity violation
model checking
multi-threaded programs
distributed systems
multiple variable correlations
Software Engineering
Systems Architecture
spellingShingle atomicity violation
model checking
multi-threaded programs
distributed systems
multiple variable correlations
Software Engineering
Systems Architecture
Sun, Zhuo
A Method and Tool for Finding Concurrency Bugs Involving Multiple Variables with Application to Modern Distributed Systems
description Concurrency bugs are extremely hard to detect due to huge interleaving space. They are happening in the real world more often because of the prevalence of multi-threaded programs taking advantage of multi-core hardware, and microservice based distributed systems moving more and more applications to the cloud. As the most common non-deadlock concurrency bugs, atomicity violations are studied in many recent works, however, those methods are applicable only to single-variable atomicity violation, and don't consider the specific challenge in distributed systems that have both pessimistic and optimistic concurrency control. This dissertation presents a tool using model checking to predict atomicity violation concurrency bugs involving two shared variables or shared resources. We developed a unique method inferring correlation between shared variables in multi-threaded programs and shared resources in microservice based distributed systems, that is based on dynamic analysis and is able to detect the correlation that would be missed by static analysis. For multi-threaded programs, we use a binary instrumentation tool to capture runtime information about shared variables and synchronization events, and for microservice based distributed systems, we use a web proxy to capture HTTP based traffic about API calls and the shared resources they access including distributed locks. Based on the detected correlation and runtime trace, the tool is powerful and can explore a vast interleaving space of a multi-threaded program or a microservice based distributed system given a small set of captured test runs. It is applicable to large real-world systems and can predict atomicity violations missed by other related works for multi-threaded programs and a couple of previous unknown atomicity violation in real world open source microservice based systems. A limitation is that redundant model checking may be performed if two recorded interleaved traces yield the same partial order model.
author Sun, Zhuo
author_facet Sun, Zhuo
author_sort Sun, Zhuo
title A Method and Tool for Finding Concurrency Bugs Involving Multiple Variables with Application to Modern Distributed Systems
title_short A Method and Tool for Finding Concurrency Bugs Involving Multiple Variables with Application to Modern Distributed Systems
title_full A Method and Tool for Finding Concurrency Bugs Involving Multiple Variables with Application to Modern Distributed Systems
title_fullStr A Method and Tool for Finding Concurrency Bugs Involving Multiple Variables with Application to Modern Distributed Systems
title_full_unstemmed A Method and Tool for Finding Concurrency Bugs Involving Multiple Variables with Application to Modern Distributed Systems
title_sort method and tool for finding concurrency bugs involving multiple variables with application to modern distributed systems
publisher FIU Digital Commons
publishDate 2018
url https://digitalcommons.fiu.edu/etd/3896
https://digitalcommons.fiu.edu/cgi/viewcontent.cgi?article=5139&context=etd
work_keys_str_mv AT sunzhuo amethodandtoolforfindingconcurrencybugsinvolvingmultiplevariableswithapplicationtomoderndistributedsystems
AT sunzhuo methodandtoolforfindingconcurrencybugsinvolvingmultiplevariableswithapplicationtomoderndistributedsystems
_version_ 1719307969879867392