Year of Publication


Degree Name

Doctor of Philosophy (PhD)

Document Type

Doctoral Dissertation




Computer Science

First Advisor

Dr. Tingting Yu

Second Advisor

Dr. D. Manivannan


The ever-increasing parallelism in computer systems has made software more prone to concurrency failures, causing problems during both pre- and post-development. Debugging concurrent programs is difficult because of the non-deterministic behavior and the specific sequences of interleaving in the execution flow. Debugging is a technique where programmers reproduce the bug, identify the root cause, and then take necessary steps to remove the bug from the system. The failure information may come from the bug reports of the testing phase or the production runs. In both cases, there should be steps taken to reproduce and localize the failure. However, reproducing and localizing such failures is
hard because concurrency failures at the system level often involve multiple processes or event handlers (e.g., software signals), and may show different behavior in every execution with the same input and environment.
This dissertation presents three research works to reproduce and localize system-level concurrency bugs. Specifically, The first framework is designed to automatically reproduce system-level concurrency failures using only default logs collected from the field. This technique uses a combination of static and dynamic analysis techniques, together with symbolic execution, to synthesize both the failure-inducing data input and the interleaving schedule, and leverages them to deterministically replay the failed execution using existing virtual platforms. The second framework is designed to localize system-level concurrency bugs by using a large system-call trace. This technique uses data mining, statistical anomaly detection technique, and dynamic analysis of programs to identify and localize
the failure-inducing system calls. The third research work is conducted to automatically localize system-level concurrency bugs by using the bug reports. It combines natural language processing, data mining, and structured information retrieval to automatically extract relevant concurrency entities (i.e., system call names) from bug reports and localize them in the source code by performing static analysis on the code. The goal of this dissertation is to make the debugging process of concurrency applications fully automated so that the subtle and intermittent concurrent faults can be easily diagnosed and fixed.

Digital Object Identifier (DOI)

Available for download on Sunday, May 19, 2024