Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Erlang
  3. Concuerror

Concuerror

BSD-2-ClauseErlang0.21.0

A stateless model checking tool for Erlang programs that systematically tests for concurrency errors.

Visit WebsiteGitHubGitHub
351 stars43 forks0 contributors

What is Concuerror?

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.

Target Audience

Erlang developers building concurrent or distributed systems who need rigorous testing for hard-to-reproduce concurrency bugs.

Value Proposition

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.

Overview

Concuerror is a stateless model checking tool for Erlang programs.

Use Cases

Best For

  • Testing Erlang applications with complex concurrent interactions
  • Finding race conditions in distributed Erlang systems
  • Verifying absence of deadlocks in OTP applications
  • Debugging intermittent concurrency failures
  • Ensuring reliability of message-passing architectures
  • Systematically testing gen_server and process interactions

Not Ideal For

  • Projects with purely sequential Erlang code where concurrency is minimal or absent
  • Large-scale production systems requiring fast, lightweight testing due to computational overhead
  • Teams needing interactive, real-time debugging tools for quick bug fixes
  • Applications built in other programming languages or frameworks outside Erlang/OTP

Pros & Cons

Pros

Systematic Error Detection

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.

Erlang-Specific Integration

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.

Verification of Absence

Can prove the absence of certain concurrency errors under explored schedules, providing higher confidence in code reliability for distributed systems.

Active Maintenance

Shows ongoing development with regular tests, code coverage checks, and documentation updates, as evidenced by badges for tests, Codecov, and HexDocs.

Cons

High Computational Cost

Systematic exploration of execution paths can be slow and resource-intensive, making it less suitable for large codebases or frequent CI runs without optimization.

Complex Setup Process

Requires building from source using make commands and running via an escript, which adds overhead compared to drop-in tools or simple package installations.

Limited to Erlang

Exclusively targets Erlang programs, so it cannot be used for testing concurrency in other languages or mixed-language projects.

Frequently Asked Questions

Quick Stats

Stars351
Forks43
Contributors0
Open Issues16
Last commit4 months ago
CreatedSince 2014

Tags

#testing-tool#otp#distributed-systems#concurrency-testing#tool#automatic#verification#testing#deadlock-detection#model-checking#erlang#debugging#static-analysis

Built With

E
Erlang
O
OTP

Links & Resources

Website

Included in

Erlang1.7k
Auto-fetched 15 hours ago

Related Projects

eflameeflame

Flame Graph profiler for Erlang

Stars428
Forks85
Last commit2 years ago
geasgeas

Guess Erlang Application Scattering

Stars111
Forks5
Last commit13 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub