March 14, 2026
Deadlocks, drama, and AI vibes
The Isolation Trap: Erlang
Erlang fans clap back as critics cry “deadlock” and AI vibes
TLDR: A new critique claims Erlang’s message-only style still hits deadlocks and leaks shared state through features like counters and shared tables. The crowd split: practitioners say these are rare and fixable with good design, while others roast the writing, call the example obvious, and plug niche alternatives like Pony
The post pokes the bear: even Erlang—the safety-first tech behind rock-solid phone switches and WhatsApp’s tiny-team scale—can still stumble on classic “two people waiting on each other” deadlocks and sneaky shared stuff. The author argues mailboxes (the inbox where messages land) are just another shared resource, and calls out tools like ETS (a shared table), counters/atomics, and persistent_term that chip away at isolation. Cue the comments: veterans rolled in to say, essentially, touch grass. One engineer bragged their massive Erlang system has “millions of processes” and the scary scenarios are edge cases you avoid by not building clumsy designs.
Then the drama dialed up. Some readers dunked on the writing itself as “LLM-isms,” while another facepalmed that the circular example was “obviously wrong.” An Elixir fan admitted surprise that Erlang’s counters and atomics bend the rules, and reminded everyone that researchers built static race detectors—so it’s not just “be disciplined,” tools exist. A contrarian faction waved the Pony flag—"fixes this by design"—but also sighed that nobody uses it. The vibe: Team “Erlang is fine, don’t be reckless” versus Team “even the safe house has trap doors,” with memes, popcorn, and actor-model soap opera energy
Key Points
- •Erlang exemplifies the strongest isolation-first implementation of the actor model: per-process heaps, message copying, and supervision trees.
- •Real-world outcomes include telecom-grade availability (“five nines”) and WhatsApp’s large-scale operation with a small team.
- •Despite isolation, Erlang’s mailboxes are shared mutable resources subject to classic shared-state failure modes.
- •A concrete gen_server example demonstrates a deadlock when two servers synchronously call each other, each waiting on its own mailbox.
- •OTP guidelines discourage such patterns, yet researchers have found previously unknown instances in production OTP libraries.