Concurrency bugs are notoriously hard to detect and reproduce. Controlled concurrency testing (CCT) techniques aim to offer a solution, where a scheduler explores the space of possible interleavings of a concurrent program looking for bugs. Since the set of possible interleavings is typically very large, these schedulers employ heuristics that prioritize the search to "interesting" subspaces. However, current heuristics are typically tuned to specific bug patterns, which limits their effectiveness in practice. In this artifact, we present QL, a learning-based CCT framework where the likelihood of an action being selected by the scheduler is influenced by earlier explorations. We leverage the classical Q-learning algorithm to explore the sp...
Testing concurrent programs that accept data inputs is no-toriously hard because, besides the large ...
A noise maker is a tool that seeds a concurrent program with conditional synchronization primitives ...
Concurrency is an indispensable programming paradigm and multi-threaded programs form the bedrock of...
143 p.Thesis (Ph.D.)--University of Illinois at Urbana-Champaign, 2008.The third main contribution i...
Testing concurrent software is hard due to its non-deterministic behavior. Concurrency bugs triggeri...
Concurrency bugs are easy to introduce but dif- ficult to detect, especially in implementations of d...
Developing correct, scalable and efficient concurrent programs is a complex and difficult task, due ...
We propose the first systematic concurrent program testing approach that is able to cover the entire...
Concurrency poses a major challenge for program verification, but it can also offer an opportunity t...
Concurrency bug detection is important to guarantee the correct behavior of multithread programs. Ho...
Previous approaches to systematic state-space exploration for test-ing multi-threaded programs have ...
This thesis presents a catalog of concurrency-related bug patterns. In contrast to design patterns, ...
Parallel and concurrent software sometimes exhibit incorrect behavior because ofunintended interfere...
Today's software systems often have poor reliability. In addition to losses of billions, software de...
The lock-based shared memory model has proven to be error prone and difficult to test. Furthermore a...
Testing concurrent programs that accept data inputs is no-toriously hard because, besides the large ...
A noise maker is a tool that seeds a concurrent program with conditional synchronization primitives ...
Concurrency is an indispensable programming paradigm and multi-threaded programs form the bedrock of...
143 p.Thesis (Ph.D.)--University of Illinois at Urbana-Champaign, 2008.The third main contribution i...
Testing concurrent software is hard due to its non-deterministic behavior. Concurrency bugs triggeri...
Concurrency bugs are easy to introduce but dif- ficult to detect, especially in implementations of d...
Developing correct, scalable and efficient concurrent programs is a complex and difficult task, due ...
We propose the first systematic concurrent program testing approach that is able to cover the entire...
Concurrency poses a major challenge for program verification, but it can also offer an opportunity t...
Concurrency bug detection is important to guarantee the correct behavior of multithread programs. Ho...
Previous approaches to systematic state-space exploration for test-ing multi-threaded programs have ...
This thesis presents a catalog of concurrency-related bug patterns. In contrast to design patterns, ...
Parallel and concurrent software sometimes exhibit incorrect behavior because ofunintended interfere...
Today's software systems often have poor reliability. In addition to losses of billions, software de...
The lock-based shared memory model has proven to be error prone and difficult to test. Furthermore a...
Testing concurrent programs that accept data inputs is no-toriously hard because, besides the large ...
A noise maker is a tool that seeds a concurrent program with conditional synchronization primitives ...
Concurrency is an indispensable programming paradigm and multi-threaded programs form the bedrock of...