Shared-memory multi-threaded programming is inherently more difficult than single-threaded programming. The main source of complexity is that, the threads of an application can interleave in so many different ways. To ensure correctness, a programmer has to test all possible thread interleavings, which, however, is impractical. Many rare thread interleavings remain untested in production systems, and they are the major cause for a majority of concurrency bugs. Given that untested interleavings are the major cause of a majority of the concurrency bugs, this dissertation explores two possible ways to tackle concurrency bugs in this dissertation. One is to expose untested interleavings during testing to find concurrency bugs. The other is to ...
While multi-threading has become commonplace in many application domains (e.g., embedded systems, di...
The advent of multicore architecture has increased the demand for multithreaded programs. It is noto...
textConcurrency errors are notoriously difficult to debug because they may occur only under unexpect...
Software is pervasive in our daily lives. Unfortunately, software bugs can severely affect the depen...
Concurrency bug detection is important to guarantee the correct behavior of multithread programs. Ho...
Multicore and Internet cloud systems have been widely adopted in recent years and have resulted in t...
With the development of multi-core processors, concurrent programs are becoming more and more popula...
Concurrency faults are one of the most damaging types of faults that can affect the dependability of...
Testing concurrent software is hard due to its non-deterministic behavior. Concurrency bugs triggeri...
Multicore machines have become pervasive and, as a result, parallel programming has received renewe...
With the rapid advance of multi-core and distributed architectures, concurrent systems are becoming...
As computing hardware moves to multi-core systems, future software needs to be parallelized in order...
Testing multithreaded programs is difficult as threads can interleave in a nondeterministic fashion....
Mobile platforms commonly support an event-driven model of concurrent programming. In an event-drive...
Concurrency bugs are problems due to incorrect interleaving of parallel tasks. They are often caused...
While multi-threading has become commonplace in many application domains (e.g., embedded systems, di...
The advent of multicore architecture has increased the demand for multithreaded programs. It is noto...
textConcurrency errors are notoriously difficult to debug because they may occur only under unexpect...
Software is pervasive in our daily lives. Unfortunately, software bugs can severely affect the depen...
Concurrency bug detection is important to guarantee the correct behavior of multithread programs. Ho...
Multicore and Internet cloud systems have been widely adopted in recent years and have resulted in t...
With the development of multi-core processors, concurrent programs are becoming more and more popula...
Concurrency faults are one of the most damaging types of faults that can affect the dependability of...
Testing concurrent software is hard due to its non-deterministic behavior. Concurrency bugs triggeri...
Multicore machines have become pervasive and, as a result, parallel programming has received renewe...
With the rapid advance of multi-core and distributed architectures, concurrent systems are becoming...
As computing hardware moves to multi-core systems, future software needs to be parallelized in order...
Testing multithreaded programs is difficult as threads can interleave in a nondeterministic fashion....
Mobile platforms commonly support an event-driven model of concurrent programming. In an event-drive...
Concurrency bugs are problems due to incorrect interleaving of parallel tasks. They are often caused...
While multi-threading has become commonplace in many application domains (e.g., embedded systems, di...
The advent of multicore architecture has increased the demand for multithreaded programs. It is noto...
textConcurrency errors are notoriously difficult to debug because they may occur only under unexpect...