Maze for Linux

  • Increase font size
  • Default font size
  • Decrease font size


MazeTM is a professional tool for parallel programming. It allows users to overcome the major difficulty in testing and debugging multiprocessed and multithreaded applications: the lack of reproducibility.

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.


Layers: application on top of OS


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.


Layers: application on top of maze on top of OS


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.