Anomaly-Based Debugging of Correctness and Performance Issues in Multithreaded Programs
Multithreaded programming is complex and error-prone. Multithreading makes it difficult to debug correctness and performance issues in parallel and concurrent software. This thesis ad- dresses two major challenges related to debugging multithreaded programs. First, concurrency bugs are hard to reproduce because of nondeterministic thread interleaving across program executions. Second, performance issues of multithread programs are difficult to explain due to complex interactions of events and resource sharing. This thesis addresses these challenges by introducing anomaly-based debugging for parallel software. It presents theory, design and implementation of three frameworks: ACT, SyncPerf and AutoPerf..
ACT overcomes the difficulty of existing correctness bug detection techniques in reproducing concurrency bug and adhering to diversity of bug characteristics. It uses hardware assisted machine learning for debugging correctness of multithreaded programs. It continuously learns and verifies programs during production runs to detect correctness bugs. SyncPerf investigates and categorizes performance bugs resulting from inefficient synchronization techniques. Using a lightweight tool it identifies synchronization related performance bugs in real world programs and provides hint for possible fix strategy. AutoPerf implements a testing framework for debugging performance bugs in multithreaded programs. AutoPerf implements a neural network based solution for detecting performance regression in multithreaded program. An anomaly detection approach using hardware performance counter is used to explain performance regression. It provides an efficient way of detecting root cause eliminating the need of domain expertise and exhausted searching present in existing solutions.