Closed
Description
When enqueuing an AIO, such as read
, write
, and fsync
, the AioCb
is marked as in_progress
before the system call is made.
However, if the system call returns an error, such as EAGAIN
or ENOSYS
, etc. then the AIO is not actually in progress, and the subsequent drop
will panic in its attempt at doing an orderly termination of the AIO:
WARNING: dropped an in-progress AioCbthread 'writes_must_be_observable_after_completion' panicked at 'Inconsistent AioCb.in_progress value', /Users/chris/.cargo/registry/src/git.colasdn.top-1ecc6299db9ec823/nix-0.8.1/src/sys/aio.rs:305
stack backtrace:
0: 0x10fb43ca3 - std::sys::imp::backtrace::tracing::imp::unwind_backtrace::h884a721e113c3303
1: 0x10fb45b33 - std::panicking::default_hook::{{closure}}::h7a7d734b2824d103
2: 0x10fb4577c - std::panicking::default_hook::h3eb11bd6cbfdc331
3: 0x10fb47ca7 - std::panicking::rust_panic_with_hook::h8b9b25777425677b
4: 0x10fb01125 - std::panicking::begin_panic::he221b30de772fec8
5: 0x10fb03bf5 - <nix::sys::aio::AioCb<'a> as core::ops::Drop>::drop::hfbac5799b913ac7f
6: 0x10fafee34 - core::ptr::drop_in_place::hd03fe87c6acd00d7
7: 0x10fafedd7 - core::ptr::drop_in_place::hc23ed067f74bc487
Also note that the WARNING
printed above is missing a line-break, and thus messes up the output.
The above was produced on MacOS Sierra, but I think it's the same on any relevant platform.