h3
h3 copied to clipboard
Integration tests failed on macOS
While working on #98, I noticed that two of the integration tests failed on macOS, namely connect
and accept_request_end_on_client_close
from h3-tests/connect.rs
. They both failed on error code 256 (0x100), which means connection closed without a reason in the HTTP/3 RFC.
Further investigation showed that they passed without a problem in a docker container. Moreover, quinn
's tests passed without an error, so it's maybe this crate's doing. Other than that, sometimes they passed when re-run the tests, seems like an I/O or threading issue to me.
Backtrace:
---- connect stdout ----
thread 'connect' panicked at 'called `Result::unwrap()` on an `Err` value: h3::Error { kind: ConnectionError(ApplicationClosed(ApplicationClose { error_code: 256, reason: b"" })), code: : Some(256) }', tests/h3-tests/tests/connection.rs:36:53
stack backtrace:
0: rust_begin_unwind
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/std/src/panicking.rs:584:5
1: core::panicking::panic_fmt
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/panicking.rs:143:14
2: core::result::unwrap_failed
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/result.rs:1785:5
3: core::result::Result<T,E>::unwrap
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/result.rs:1078:23
4: connection::connect::{{closure}}::{{closure}}
at ./tests/connection.rs:36:17
5: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/future/mod.rs:91:19
6: <tokio::future::maybe_done::MaybeDone<Fut> as core::future::future::Future>::poll
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/future/maybe_done.rs:68:48
7: connection::connect::{{closure}}::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/macros/join.rs:116:24
8: <tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/future/poll_fn.rs:38:9
9: connection::connect::{{closure}}
at ./tests/connection.rs:39:5
10: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/future/mod.rs:91:19
11: <core::pin::Pin<P> as core::future::future::Future>::poll
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/future/future.rs:124:9
12: tokio::runtime::basic_scheduler::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:508:48
13: tokio::coop::with_budget::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/coop.rs:102:9
14: std::thread::local::LocalKey<T>::try_with
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/std/src/thread/local.rs:442:16
15: std::thread::local::LocalKey<T>::with
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/std/src/thread/local.rs:418:9
16: tokio::coop::with_budget
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/coop.rs:95:5
17: tokio::coop::budget
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/coop.rs:72:5
18: tokio::runtime::basic_scheduler::CoreGuard::block_on::{{closure}}::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:508:25
19: tokio::runtime::basic_scheduler::Context::enter
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:362:19
20: tokio::runtime::basic_scheduler::CoreGuard::block_on::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:507:36
21: tokio::runtime::basic_scheduler::CoreGuard::enter::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:565:57
22: tokio::macros::scoped_tls::ScopedKey<T>::set
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/macros/scoped_tls.rs:61:9
23: tokio::runtime::basic_scheduler::CoreGuard::enter
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:565:27
24: tokio::runtime::basic_scheduler::CoreGuard::block_on
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:498:9
25: tokio::runtime::basic_scheduler::BasicScheduler::block_on
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:174:24
26: tokio::runtime::Runtime::block_on
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/mod.rs:480:46
27: connection::connect
at ./tests/connection.rs:39:5
28: connection::connect::{{closure}}
at ./tests/connection.rs:26:7
29: core::ops::function::FnOnce::call_once
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/ops/function.rs:227:5
30: core::ops::function::FnOnce::call_once
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/ops/function.rs:227:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---- accept_request_end_on_client_close stdout ----
thread 'accept_request_end_on_client_close' panicked at 'called `Result::unwrap()` on an `Err` value: h3::Error { kind: ConnectionError(ApplicationClosed(ApplicationClose { error_code: 256, reason: b"" })), code: : Some(256) }', tests/h3-tests/tests/connection.rs:54:64
stack backtrace:
0: rust_begin_unwind
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/std/src/panicking.rs:584:5
1: core::panicking::panic_fmt
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/panicking.rs:143:14
2: core::result::unwrap_failed
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/result.rs:1785:5
3: core::result::Result<T,E>::unwrap
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/result.rs:1078:23
4: connection::accept_request_end_on_client_close::{{closure}}::{{closure}}
at ./tests/connection.rs:54:28
5: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/future/mod.rs:91:19
6: <tokio::future::maybe_done::MaybeDone<Fut> as core::future::future::Future>::poll
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/future/maybe_done.rs:68:48
7: connection::accept_request_end_on_client_close::{{closure}}::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/macros/join.rs:116:24
8: <tokio::future::poll_fn::PollFn<F> as core::future::future::Future>::poll
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/future/poll_fn.rs:38:9
9: connection::accept_request_end_on_client_close::{{closure}}
at ./tests/connection.rs:59:5
10: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/future/mod.rs:91:19
11: <core::pin::Pin<P> as core::future::future::Future>::poll
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/future/future.rs:124:9
12: tokio::runtime::basic_scheduler::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:508:48
13: tokio::coop::with_budget::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/coop.rs:102:9
14: std::thread::local::LocalKey<T>::try_with
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/std/src/thread/local.rs:442:16
15: std::thread::local::LocalKey<T>::with
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/std/src/thread/local.rs:418:9
16: tokio::coop::with_budget
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/coop.rs:95:5
17: tokio::coop::budget
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/coop.rs:72:5
18: tokio::runtime::basic_scheduler::CoreGuard::block_on::{{closure}}::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:508:25
19: tokio::runtime::basic_scheduler::Context::enter
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:362:19
20: tokio::runtime::basic_scheduler::CoreGuard::block_on::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:507:36
21: tokio::runtime::basic_scheduler::CoreGuard::enter::{{closure}}
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:565:57
22: tokio::macros::scoped_tls::ScopedKey<T>::set
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/macros/scoped_tls.rs:61:9
23: tokio::runtime::basic_scheduler::CoreGuard::enter
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:565:27
24: tokio::runtime::basic_scheduler::CoreGuard::block_on
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:498:9
25: tokio::runtime::basic_scheduler::BasicScheduler::block_on
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/basic_scheduler.rs:174:24
26: tokio::runtime::Runtime::block_on
at /Users/inflation/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.19.2/src/runtime/mod.rs:480:46
27: connection::accept_request_end_on_client_close
at ./tests/connection.rs:59:5
28: connection::accept_request_end_on_client_close::{{closure}}
at ./tests/connection.rs:43:7
29: core::ops::function::FnOnce::call_once
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/ops/function.rs:227:5
30: core::ops::function::FnOnce::call_once
at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/ops/function.rs:227:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
failures:
accept_request_end_on_client_close
connect
Intel or Apple Silicon?
@Frank-Mayer Apple M1
The weird thing is, after I pulled the latest changes, those two tests are passing now. But control_close_send_error
is failing.
thread 'control_close_send_error' panicked at 'assertion failed: `Application { code: H3_STREAM_CREATION_ERROR, reason: Some("got two control streams") }` does not match `Kind::Application {
reason: Some(reason), code: Code::H3_CLOSED_CRITICAL_STREAM, .. }
if *reason == *"control stream closed"`', tests/h3-tests/tests/connection.rs:319:9