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.

Hottest takes

“these are quite extreme edge cases and i’ve never tripped over them” — cyberpunk
“the sheer density of LLM-isms make it hard to get through” — anonymous_user9
“Is it really not obvious? Am I losing my mind?” — johnisgood
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.