h3 icon indicating copy to clipboard operation
h3 copied to clipboard

Integration tests failed on macOS

Open inflation opened this issue 2 years ago • 2 comments

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

inflation avatar Jun 24 '22 00:06 inflation

Intel or Apple Silicon?

tsukinoko-kun avatar Jul 30 '22 10:07 tsukinoko-kun

@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

inflation avatar Jul 30 '22 13:07 inflation