Futurelock

Oxide and Friends · 7 Nov 2025 · 1h 37m · Episode 31

What this episode covers

Oxide engineers Dave Pacheco, John Gallagher, Sean Klein, and Eliza Weisman explain 'Futurelock,' a deadlock in async Rust where a Tokio task holds a permit on an MPSC channel but fails to insert a message, causing the receiver to block indefinitely. The team diagnosed the issue using DTrace, core dumps, and Ghidra, discovering that a `tokio::select!` with a mutably borrowed future allowed one arm to grab a channel permit while another arm tried to send, creating a self-deadlock. They emphasize that no single library component was at fault, but rather a specific combination of `select`, mutable futures, and channel semantics created the pathology, which they documented in RFD 609 to help other Rust developers avoid it.

Mentioned

Companies
Oxide Computer Company
Products
CORB
Tools
Tokio, Ghidra, DTrace
Also
Rust, Hacker News

The summary, chapters and topics are generated from the episode’s audio by this directory, not written by Oxide and Friends. The episode itself belongs to its publisher.