You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
io: a registered file's drop spawns into a compio runtime that is tearing down #155
On Linux, dropping a compio runtime that still owns a connection whose socket has a registered file slot panics in debug builds:
thread 'compio_runtime::h3_after_alt_svc' panicked at compio-executor-0.1.4/src/queue.rs:104:17:
assertion failed: inner.map.is_empty()
files::File::drop (io/src/compio.rs, added in #153) spawns remove(index) on the current runtime. compio's executor, when the runtime drops, drains its task map and drops each task, then asserts the map is empty. The working hypothesis is that a task dropped during that drain drops a File, whose Drop spawns into the map being drained.
Evidence, from zenwave's CI: Test / Native backend (ubuntu-latest, compio) passes 188/188 against http-kit at dc1c4cf (zen-rs/zenwave run 43029132971) and fails h3_after_alt_svc, h3_delivers_response_trailers and h3_black_hole_falls_back with the panic above against the 0.6.0 release (run 43041112551). compio is 0.19.2 / compio-executor 0.1.4 in both. Only the Linux compio job fails, the only one with io_uring's file table; macOS and Windows compio pass.
Done when
Dropping a compio runtime with live registered-file connections does not spawn during the executor's teardown, and a test in http-kit-io drops a runtime that still holds such a connection on Linux.
Activity