Login
 

Maze for Linux

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

Overview

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.