Multicore is here to stay. To keep up with the hardware innovation, software developers mustmove from sequential programming to concurrent programming. However, this move is slow and challenging due to the exponential complexity in reasoning about concurrency. In particular, Heisenbugs such as data races, which are non-deterministic concurrency errors, pervasively infect concurrent software, making concurrent program debugging notoriously difficult. In this dissertation, we develop several effective methods for debugging concurrent programs along four directions: multiprocessor deterministic replay, predictive trace analysis, trace simplification, and data sharing reduction. We first present LEAP, a lightweight record and replay system that...
Reproducing a failure is the first and most important step in debugging because it enables us to und...
Software is pervasive in our daily lives. Unfortunately, software bugs can severely affect the depen...
Significant time is spent by companies trying to reproduce and fix bugs. BugNet is a recent architec...
Debugging concurrent programs is known to be difficult due to scheduling non-determinism. The techni...
Concurrent programs are ubiquitous, from the high-end servers to personal machines, due to the fact ...
Concurrency bugs are problems due to incorrect interleaving of parallel tasks. They are often caused...
A common debugging strategy involves re-executing a program (on a given input) over and over, each t...
Concurrent software has been increasingly adopted in recent years, mainly due to the introduction of...
As computing hardware moves to multi-core systems, future software needs to be parallelized in order...
Multicore and Internet cloud systems have been widely adopted in recent years and have resulted in t...
Concurrency bug detection is important to guarantee the correct behavior of multithread programs. Ho...
To reduce the complexity of debugging multithreaded pro-grams, researchers have developed compile- a...
Debugging, which entails locating program faults responsible for a program failure, is more difficul...
One of the major difficulties in debugging concurrent programs is that the programmer usually experi...
The ever-increasing parallelism in computer systems has made software more prone to concurrency fail...
Reproducing a failure is the first and most important step in debugging because it enables us to und...
Software is pervasive in our daily lives. Unfortunately, software bugs can severely affect the depen...
Significant time is spent by companies trying to reproduce and fix bugs. BugNet is a recent architec...
Debugging concurrent programs is known to be difficult due to scheduling non-determinism. The techni...
Concurrent programs are ubiquitous, from the high-end servers to personal machines, due to the fact ...
Concurrency bugs are problems due to incorrect interleaving of parallel tasks. They are often caused...
A common debugging strategy involves re-executing a program (on a given input) over and over, each t...
Concurrent software has been increasingly adopted in recent years, mainly due to the introduction of...
As computing hardware moves to multi-core systems, future software needs to be parallelized in order...
Multicore and Internet cloud systems have been widely adopted in recent years and have resulted in t...
Concurrency bug detection is important to guarantee the correct behavior of multithread programs. Ho...
To reduce the complexity of debugging multithreaded pro-grams, researchers have developed compile- a...
Debugging, which entails locating program faults responsible for a program failure, is more difficul...
One of the major difficulties in debugging concurrent programs is that the programmer usually experi...
The ever-increasing parallelism in computer systems has made software more prone to concurrency fail...
Reproducing a failure is the first and most important step in debugging because it enables us to und...
Software is pervasive in our daily lives. Unfortunately, software bugs can severely affect the depen...
Significant time is spent by companies trying to reproduce and fix bugs. BugNet is a recent architec...