~/talk

Day2 02 Sean Klein

Talkat TokioConf 2026 · 2026-04-20..04-22· [rust]
links:none on file
slides:none on file

A production bug in async Rust turns out to be a non-local deadlock called Futurelock: multiple HTTP handlers block on a connection-pool MPSC send because the semaphore permit is acquired but never completed, observed with DTrace probes attached to Tokio, omdb, a core dump extracted a core file and inspected in Ghidra. The investigation shows Tokio select and non-atomic send steps let a half-polled future hold a permit forever, so spawning tasks or eagerly canceling partially polled futures fixes the class.

AI-written summary · about

  1. 0:00Future lock bugs intro
  2. 1:39Dog food rack outage debug
  3. 3:05Tokio DTrace probes
  4. 5:56MPSC channels normal work
  5. 9:06Wedged MPSC state investigation
  6. 11:30Future lock mechanism discovery
  7. 13:39Future lock definition
  8. 15:48Root cause of future lock
  9. 17:54Polling management and dependencies
  10. 20:38Preventing future lock strategies
  11. 21:20Code examples and patterns
  12. 24:07Future lock detection difficulty
  13. 26:36Future lock production diagnosis
  14. 27:40Future lock prevention
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.