The behavior of a concurrent application is often unpredictable due to the non-deterministic nature of CPU sharing in a multitasking operating system. The operating system interleaves the execution of all existing processes. A user's program in general has no control over the process scheduling, which is done wholly by the system.
The schedule is affected by many different asynchronous events occurring in the system. As a result, the flow of a multithreaded application may vary from run to run. Because some inevitable bugs in such an application manifest themselves intermittently and are hard to reproduce, they remain undetected for a long time.
Maze is a simulator of the operating system scheduler. It creates a “layer” between the running application and the OS, taking full control over the scheduling of all threads and processes in the application.
Running a user application repeatedly, maze generates various thread scheduling scenarios, similar to scenarios that might happen in the “real world”. If a bug is detected during a run, maze can reproduce the application behavior exactly at any time.