The Wire · Showcase
MIRI OVERHAULS EPOLL STATE TRACKING, FUTURES-RS PATCHES SOUNDNESS BUG
By RepoJournal · Filed · About Rust
Miri's readiness watcher table got replaced with per-FD state tracking, catching undefined behavior that futures-rs shipped with and forcing an emergency fix.
Miri's epoll implementation just got a major refactor [1]. The new per-FD state tracking reduces GC pressure, cleans up resources immediately on drop, and introduces proper vector clock tracking for readiness notifications across threads. The commits also fix Illumos semantics for closed file descriptors and correct the logic for fcntl(F_DUPFD), though Illumos behavior remains untested on real hardware [2]. This work uncovered a soundness bug that was already in the wild: futures-rs's compat01as03 layer contained undefined behavior in NotifyWaker's drop_raw implementation [3]. Miri flagged it trying to retag memory with incorrect permissions. The fix wraps the problematic code in UnsafeCell to match the documented API contract [4]. On the infrastructure side, the Rust team enabled merge queue deployments for the blog [5][6] and created a maintainers-in-residence marker team [7] ahead of future appointments. compiler-builtins renamed float traits and overhauled test iteration counting to support unlimited test runs [8][9][10]. Five arcbox-virtio crates shipped routine index updates across the fs, console, block, balloon, and core modules [11][12][13][14][15].
Action items
- → Upgrade futures to the patched version that fixes compat01as03 undefined behavior rust-lang/futures-rs [immediate]
- → Review new epoll per-FD state tracking changes and update integration tests rust-lang/miri [plan]
- → Monitor compiler-builtins extensive test runs for performance regressions rust-lang/compiler-builtins [monitor]
References
- [1] replace global readiness watcher table by per-FD state ↗ rust-lang/miri
- [2] clean up epoll interest lists immediately when FD gets dropped rust-lang/miri
- [3] Fix unsound compat01as03 implementation (fixes #2514) ↗ rust-lang/futures-rs
- [4] Fix unsound compat01as03 implementation (fixes #2514) (#3012) rust-lang/futures-rs
- [5] Allow deploying the blog from the merge queue ↗ rust-lang/team
- [6] Enable merge queue for the blog repository ↗ rust-lang/team
- [7] Create `maintainers-in-residence` marker team ↗ rust-lang/team
- [8] Rename float traits, improvements for extensive tests ↗ rust-lang/compiler-builtins
- [9] test: Rename `iteration_count` to `arg_max_iterations` rust-lang/compiler-builtins
- [10] test: Allow specifying LIBM_EXTENSIVE_ITERATIONS as u64::MAX rust-lang/compiler-builtins
- [11] Update crate `arcbox-virtio-fs` rust-lang/crates.io-index
- [12] Update crate `arcbox-virtio-console` rust-lang/crates.io-index
- [13] Update crate `arcbox-virtio-blk` rust-lang/crates.io-index
- [14] Update crate `arcbox-virtio-balloon` rust-lang/crates.io-index
- [15] Update crate `arcbox-virtio-core` rust-lang/crates.io-index