Taking advantage of parallel processors often entails using concurrent software, where multiple threads work simultaneously. However, concurrent software suffers from a bevy of concurrency-specific errors such as data races and atomicity violations. Dynamic analysis, based on analyzing the sequence of operations (called a trace) from a source program as that program executes, is a powerful technique for finding concurrency errors in multithreaded programs. Unfortunately, dynamic analyses are confined to analyzing the observed trace.
Nonetheless, there are situations where a concurrency error does not manifest on a particular trace although it is intuitively clear that the program that produced that particular trace contains a concurrency error. The central research hypothesis explored by this dissertation is that dynamic analysis can discover concurrency errors that do not manifest on the observed trace.
This dissertation introduces a new relation, causally-precedes (CP), that enables precise predictive race detection, with no false positives. A single CP-based race detection run discovers several new races, unexposed by 10 independent runs of a traditional dynamic race detector. To further address dynamic predictive race detection, this dissertation introduces the must-before relation and accompanying dynamic analysis tool (EMBRACER) that is not precise but enables online prediction. Experimental results show that EMBRACER detects 20-23% more races than a traditional race detector alone for reactive programs.
This dissertation also introduces SIDETRACK, a lightweight dynamic atomicity analysis tool that generalizes from the observed trace to predict additional atomicity violations. Experimental results show that this predictive ability increases the number of atomicity violations detected by SIDETRACK by 40%.
When developing these tools, it became clear that it was difficult to test them. For example, test programs that contain data races may be non-deterministic. A methodology for deterministic testing for dynamic analysis tools using trace snippets, described in this dissertation, alleviates this difficulty.
|Advisor:||Whitehead, E. James, Jr.|
|Commitee:||Brandt, Scott A., Flanagan, Cormac|
|School:||University of California, Santa Cruz|
|School Location:||United States -- California|
|Source:||DAI-B 74/01(E), Dissertation Abstracts International|
|Keywords:||Concurrency errors, Parallelism, Progamming languages, Program analysis, Sofware engineering|
Copyright in each Dissertation and Thesis is retained by the author. All Rights Reserved
The supplemental file or files you are about to download were provided to ProQuest by the author as part of a
dissertation or thesis. The supplemental files are provided "AS IS" without warranty. ProQuest is not responsible for the
content, format or impact on the supplemental file(s) on our system. in some cases, the file type may be unknown or
may be a .exe file. We recommend caution as you open such files.
Copyright of the original materials contained in the supplemental file is retained by the author and your access to the
supplemental files is subject to the ProQuest Terms and Conditions of use.
Depending on the size of the file(s) you are downloading, the system may take some time to download them. Please be