tokio-rs / tokio

A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
https://tokio.rs
MIT License
26.42k stars 2.43k forks source link

tests/io_async_fd.rs tests are failing on Solaris #6675

Open psumbera opened 2 months ago

psumbera commented 2 months ago

Version

benches v0.0.0 (/builds/psumbera/tokio/benches) └── tokio v1.38.0 (/builds/psumbera/tokio/tokio) └── tokio-macros v2.3.0 (proc-macro) (/builds/psumbera/tokio/tokio-macros) └── tokio v1.38.0 (/builds/psumbera/tokio/tokio) └── tokio-macros v2.3.0 (proc-macro) (/builds/psumbera/tokio/tokio-macros) () ├── tokio-stream v0.1.15 (/builds/psumbera/tokio/tokio-stream) │ └── tokio v1.38.0 (/builds/psumbera/tokio/tokio) () │ ├── tokio v1.38.0 (/builds/psumbera/tokio/tokio) () │ └── tokio-test v0.4.4 (/builds/psumbera/tokio/tokio-test) │ ├── tokio v1.38.0 (/builds/psumbera/tokio/tokio) () │ └── tokio-stream v0.1.15 (/builds/psumbera/tokio/tokio-stream) () │ └── tokio v1.38.0 (/builds/psumbera/tokio/tokio) () └── tokio-test v0.4.4 (/builds/psumbera/tokio/tokio-test) () ├── tokio-stream v0.1.15 (/builds/psumbera/tokio/tokio-stream) () └── tokio-test v0.4.4 (/builds/psumbera/tokio/tokio-test) () ├── tokio-stream v0.1.15 (/builds/psumbera/tokio/tokio-stream) () └── tokio-util v0.7.11 (/builds/psumbera/tokio/tokio-util) └── tokio v1.38.0 (/builds/psumbera/tokio/tokio) () ├── tokio v1.38.0 (/builds/psumbera/tokio/tokio) () ├── tokio-stream v0.1.15 (/builds/psumbera/tokio/tokio-stream) () └── tokio-test v0.4.4 (/builds/psumbera/tokio/tokio-test) () examples v0.0.0 (/builds/psumbera/tokio/examples) ├── tokio v1.38.0 (/builds/psumbera/tokio/tokio) () ├── tokio-stream v0.1.15 (/builds/psumbera/tokio/tokio-stream) () ├── tokio-util v0.7.11 (/builds/psumbera/tokio/tokio-util) () stress-test v0.1.0 (/builds/psumbera/tokio/stress-test) └── tokio v1.38.0 (/builds/psumbera/tokio/tokio) () tests-build v0.1.0 (/builds/psumbera/tokio/tests-build) tests-integration v0.1.0 (/builds/psumbera/tokio/tests-integration) └── tokio v1.38.0 (/builds/psumbera/tokio/tokio) () tokio v1.38.0 (/builds/psumbera/tokio/tokio) () tokio v1.38.0 (/builds/psumbera/tokio/tokio) () tokio-macros v2.3.0 (proc-macro) (/builds/psumbera/tokio/tokio-macros) () tokio-stream v0.1.15 (/builds/psumbera/tokio/tokio-stream) () tokio-test v0.4.4 (/builds/psumbera/tokio/tokio-test) () tokio-util v0.7.11 (/builds/psumbera/tokio/tokio-util) (*)

Platform SunOS xxx 5.11 11.4.72.175.0 i86pc i386 i86pc non-virtualized

Description cargo test fails.

     Running tests/io_async_fd.rs (target/debug/deps/io_async_fd-ffa297e07de0b33c)

running 19 tests
test clear_ready_matching_clears_ready_mut ... ok
test clear_ready_matching_clears_ready ... ok
test reregister ... ok
test driver_shutdown_then_clear_readiness ... ok
test drop_closes ... ok
test driver_shutdown_wakes_future_pending ... ok
test driver_shutdown_wakes_poll ... ok
test driver_shutdown_wakes_currently_pending ... ok
test driver_shutdown_wakes_currently_pending_polls ... ok
test try_with_interest ... FAILED
test try_new ... FAILED
test multiple_waiters ... ok
test initially_writable ... ok
test driver_shutdown_wakes_pending_race ... ok
test driver_shutdown_wakes_poll_race ... ok
test poll_fns has been running for over 60 seconds
test reset_readable has been running for over 60 seconds
test reset_writable has been running for over 60 seconds
test try_io has been running for over 60 seconds
^C
     Running tests/io_async_fd.rs (target/debug/deps/io_async_fd-ffa297e07de0b33c)

running 1 test
test try_with_interest ... FAILED

failures:

---- try_with_interest stdout ----
thread 'try_with_interest' panicked at tokio/tests/io_async_fd.rs:849:82:
called `Result::unwrap_err()` on an `Ok` value: AsyncFd { inner: Some(InvalidSource) }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

failures:
    try_with_interest

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 18 filtered out; finished in 0.00s
Darksonn commented 1 month ago

May be related to failures on Illumos. See https://github.com/tokio-rs/tokio/issues/6675

hawkw commented 1 month ago

Ah, I had missed this, thanks @Darksonn!

Interestingly, on illumos, try_with_interest, try_io, and reset_readable pass, but reset_writable and poll_fns seem to run forever, as reported here. I believe the difference between illumos and SunOS is because mio uses the epoll selector on illumos, but the poll selector on other Solaris-like operating systems: https://github.com/tokio-rs/mio/blob/e66deb9aa253d0763d1f58e17767700a9cc5fa2d/src/sys/unix/mod.rs#L18-L52

When I run tokio's tests on illumos with RUSTFLAGS="--cfg mio_unsupported_force_poll_poll", I see additional failures in try_with_interest, and the reset_readable and try_io tests also appear to hang forever, as well as poll_fns and reset_writable.