A stateless model checking tool for Erlang programs that systematically tests for concurrency errors.
Concuerror is a stateless model checking tool for Erlang programs that systematically explores different thread schedulings to detect concurrency errors. It helps developers find race conditions, deadlocks, and other subtle bugs that only occur under specific execution interleavings, or verify their absence.
Erlang developers building concurrent or distributed systems who need rigorous testing for hard-to-reproduce concurrency bugs.
Unlike traditional testing, Concuerror systematically explores execution paths to uncover scheduling-dependent concurrency errors that are nearly impossible to catch with conventional methods, providing higher confidence in Erlang program correctness.
Concuerror is a stateless model checking tool for Erlang programs.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Explores different thread interleavings to uncover race conditions and deadlocks that are hard to reproduce with traditional testing, as highlighted in its ability to detect scheduling-dependent bugs.
Built specifically for the Erlang/OTP ecosystem, leveraging its concurrency model for accurate testing, supported by badges indicating compatibility with Erlang versions 20.3 to 23.3.
Can prove the absence of certain concurrency errors under explored schedules, providing higher confidence in code reliability for distributed systems.
Shows ongoing development with regular tests, code coverage checks, and documentation updates, as evidenced by badges for tests, Codecov, and HexDocs.
Systematic exploration of execution paths can be slow and resource-intensive, making it less suitable for large codebases or frequent CI runs without optimization.
Requires building from source using make commands and running via an escript, which adds overhead compared to drop-in tools or simple package installations.
Exclusively targets Erlang programs, so it cannot be used for testing concurrency in other languages or mixed-language projects.