Shuttle
a day ago
- The Shuttle library is a concurrency verification tool developed by former AWS engineers, designed to make testing concurrent code easier.
- It addresses the difficulty of reproducing and catching concurrency bugs by using controlled thread scheduling with random exploration.
- The tool provides drop-in replacements for standard library concurrency primitives and runs tests in a harness that manipulates scheduling.
- Exhaustive exploration (as in Loom) is not always feasible due to factorial growth in permutations; random exploration handles complex cases and is parallelizable.
- A worked example demonstrates catching a classic concurrency error (race condition in semaphore) and fixing it with optimistic concurrency and compare-and-swap.
- Integration involves conditional compilation and re-exports to replace std::sync primitives with shuttle::sync.
- The library has been used successfully at AWS S3 for critical software and won Best Paper at SOSP '21.