Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Strange debug_assert! and runtime panics #1579

Closed
Pure-Peace opened this issue Nov 26, 2022 · 5 comments
Closed

Strange debug_assert! and runtime panics #1579

Pure-Peace opened this issue Nov 26, 2022 · 5 comments
Labels
A-axum C-bug Category: This is a bug.

Comments

@Pure-Peace
Copy link

Bug Report

Version

0.6.0-rc.5, 0.6.0

Platform

Windows 10 x64

Crates

axum

Description

I am writing a service that selects a router based on the hostname and executes it using router.oneshot(req)

The code is similar to below:

Router::new().route("/*path", any(move |host: Host, req: Request<Body>| {
    let router = select_router_by_host(host);
    router.oneshot(req)
})

But I get the following error:

thread 'tokio-runtime-worker' panicked at 'assertion failed: matches!(extensions.remove :: < MatchedPath > (), None)', .cargo\registry\src\github.com-1ecc6299db9ec823\axum-0.6.0\src\extract\matched_path.rs:146:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

let matched_path = append_nested_matched_path(matched_path, extensions);
if matched_path.ends_with(NEST_TAIL_PARAM_CAPTURE) {
extensions.insert(MatchedNestedPath(matched_path));
debug_assert!(matches!(extensions.remove::<MatchedPath>(), None));

The problem occurs on line 146

debug_assert!(matches!(extensions.remove::<MatchedPath>(), None));

This debug_assert! confuses me, why does it exist? Or what is it used for?

Currently I avoid triggering this assertion while debugging by adding req.extensions_mut().remove::<axum::extract::MatchedPath>();

Router::new().route("/*path", any(move |host: Host, mut req: Request<Body>| {
    // Temporary solution
    let matched = req.extensions_mut().remove::<axum::extract::MatchedPath>();
    let router = select_router_by_host(host);
    router.oneshot(req)
})

And matched will get: Some(MatchedPath("/*path"))

I wrote a simple code sample and it didn't throw this error, so this exception is very strange.

@Pure-Peace
Copy link
Author

Below is a code sample, but this assertion is not triggered:

use axum::{
    body::{Body, BoxBody},
    extract::Host,
    http::{Request, StatusCode},
    response::{IntoResponse, Response},
    routing::{any, get},
    Router,
};
use std::net::SocketAddr;
use tower::ServiceExt;

#[tokio::main]
async fn main() {
    let app = Router::new()
        .route("/", any(|| async { "hello, world" }))
        .route(
            "/*path",
            any(move |host: Host, req: Request<Body>| any_path(host, req)),
        );

    let addr = SocketAddr::from(([127, 0, 0, 1], 80));
    println!("listening on {}", addr);
    axum::Server::bind(&addr)
        .serve(app.into_make_service())
        .await
        .unwrap();
}

fn service_a() -> Router {
    Router::new().route("/service_a", get(|| async { "this is service A" }))
}

fn service_b() -> Router {
    Router::new().route("/service_b", get(|| async { "this is service B" }))
}

pub async fn call_router(router: Router, req: Request<Body>) -> Response<BoxBody> {
    router.oneshot(req).await.into_response()
}

async fn any_path(Host(hostname): Host, mut req: Request<Body>) -> Response {
    match hostname.as_ref() {
        "a.service.domain" => call_router(service_a(), req).await,
        "b.service.domain" => call_router(service_b(), req).await,
        _ => (StatusCode::NOT_FOUND, "not found").into_response(),
    }
}

If add

let matched = req.extensions_mut().remove::<axum::extract::MatchedPath>();
println!("{:?}", matched);

The value of matched is also Some(MatchedPath("/*path"))

@davidpdrsn davidpdrsn added C-bug Category: This is a bug. A-axum labels Nov 26, 2022
@davidpdrsn
Copy link
Member

The assert guards against possible bugs. That extension shouldn't exist there so be assert that it isn't.

Can you provide a minimal reproduction script that hits it?

@Pure-Peace
Copy link
Author

Pure-Peace commented Nov 26, 2022

It seems this code reproduces the problem

use axum::{body::Body, extract::Host, http::Request, routing::any, Router};
use std::net::SocketAddr;
use tower::ServiceExt;

#[tokio::main]
pub async fn main() {
    let app = Router::new().route(
        "/*path",
        any(move |host: Host, mut req: Request<Body>| {
            // Uncomment to fix
            // let matched = req.extensions_mut().remove::<axum::extract::MatchedPath>();
            // println!("{:?}", matched);
            Router::new().nest("/", Router::new()).oneshot(req)
        }),
    );

    let addr = SocketAddr::from(([127, 0, 0, 1], 80));
    println!("listening on {}", addr);
    axum::Server::bind(&addr)
        .serve(app.into_make_service())
        .await
        .unwrap();
}

request with http://127.0.0.1:80/<anypath>

    Finished dev [unoptimized + debuginfo] target(s) in 1.04s
     Running `target\debug\example.exe`
listening on 127.0.0.1:80
thread 'tokio-runtime-worker' panicked at 'assertion failed: matches!(extensions.remove :: < MatchedPath > (), None)', axum-0.6.0\src\extract\matched_path.rs:146:9
stack backtrace:
   0: std::panicking::begin_panic_handler
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library\std\src\panicking.rs:584
   1: core::panicking::panic_fmt
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library\core\src\panicking.rs:142
   2: core::panicking::panic
             at /rustc/897e37553bba8b42751c67658967889d11ecd120/library\core\src\panicking.rs:48
   3: axum::extract::matched_path::set_matched_path_for_request
             at axum-0.6.0\src\extract\matched_path.rs:146
   4: axum::routing::Router<tuple$<>,hyper::body::body::Body>::call_route<tuple$<>,hyper::body::body::Body>
             at axum-0.6.0\src\routing\mod.rs:545
   5: axum::routing::Router<tuple$<>,hyper::body::body::Body>::call_with_state<tuple$<>,hyper::body::body::Body>
             at axum-0.6.0\src\routing\mod.rs:513
   6: axum::routing::impl$7::call<hyper::body::body::Body>
             at axum-0.6.0\src\routing\mod.rs:624
   7: tower::util::oneshot::impl$3::poll<axum::routing::Router<tuple$<>,hyper::body::body::Body>,http::request::Request<hyper::body::body::Body> >
             at tower-0.4.13\src\util\oneshot.rs:93
   8: axum::handler::impl$6::call::async_block$0<example::main::async_block$0::closure_env$0,tower::util::oneshot::Oneshot<axum::routing::Router<tuple$<>,hyper::body::body::Body>,http::request::Request<hyper::body::body::Body> >,tuple$<>,hyper::body::body::Body,en
             at axum-0.6.0\src\handler\mod.rs:213
   9: core::future::from_generator::impl$1::poll<enum2$<axum::handler::impl$6::call::async_block_env$0<example::main::async_block$0::closure_env$0,tower::util::oneshot::Oneshot<axum::routing::Router<tuple$<>,hyper::body::body::Body>,http::request::Request<hyper::b
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\core\src\future\mod.rs:91
  10: core::future::future::impl$1::poll<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error> > > >,core::marker::Send>,alloc::all
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\core\src\future\future.rs:124
  11: futures_util::future::future::map::impl$2::poll<core::pin::Pin<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error> > > >,co
             at futures-util-0.3.25\src\future\future\map.rs:55
  12: futures_util::future::future::impl$14::poll<core::pin::Pin<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error> > > >,core::
             at futures-util-0.3.25\src\lib.rs:91
  13: axum::handler::future::impl$4::poll<core::pin::Pin<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error> > > >,core::marker::
             at axum-0.6.0\src\macros.rs:42
  14: futures_core::future::impl$2::try_poll<axum::handler::future::IntoServiceFuture<core::pin::Pin<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,a
             at futures-core-0.3.25\src\future.rs:82
  15: futures_util::future::try_future::into_future::impl$2::poll<axum::handler::future::IntoServiceFuture<core::pin::Pin<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<
             at futures-util-0.3.25\src\future\try_future\into_future.rs:34
  16: futures_util::future::future::map::impl$2::poll<futures_util::future::try_future::into_future::IntoFuture<axum::handler::future::IntoServiceFuture<core::pin::Pin<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,http::response::Response<ht
             at futures-util-0.3.25\src\future\future\map.rs:55
  17: futures_util::future::future::impl$14::poll<futures_util::future::try_future::into_future::IntoFuture<axum::handler::future::IntoServiceFuture<core::pin::Pin<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,http::response::Response<http_b
             at futures-util-0.3.25\src\lib.rs:91
  18: futures_util::future::try_future::impl$49::poll<axum::handler::future::IntoServiceFuture<core::pin::Pin<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes
             at futures-util-0.3.25\src\lib.rs:91
  19: tower::util::map_response::impl$10::poll<axum::handler::future::IntoServiceFuture<core::pin::Pin<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes
             at tower-0.4.13\src\macros.rs:38
  20: core::future::future::impl$1::poll<alloc::boxed::Box<dyn$<core::future::future::Future<assoc$<Output,enum2$<core::result::Result<http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error> >,enum2$
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\core\src\future\future.rs:124
  21: tower::util::oneshot::impl$3::poll<tower::util::boxed_clone::BoxCloneService<http::request::Request<hyper::body::body::Body>,http::response::Response<http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error> >,enum2$<cor
             at tower-0.4.13\src\util\oneshot.rs:97
  22: axum::routing::route::impl$5::poll<hyper::body::body::Body,enum2$<core::convert::Infallible> >
             at axum-0.6.0\src\routing\route.rs:164
  23: hyper::proto::h1::dispatch::impl$6::poll_msg<axum::routing::Router<tuple$<>,hyper::body::body::Body>,http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error> >
             at hyper-0.14.23\src\proto\h1\dispatch.rs:491
  24: hyper::proto::h1::dispatch::Dispatcher<hyper::proto::h1::dispatch::Server<axum::routing::Router<tuple$<>,hyper::body::body::Body>,hyper::body::body::Body>,http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error>,hyper::
             at hyper-0.14.23\src\proto\h1\dispatch.rs:297
  25: hyper::proto::h1::dispatch::Dispatcher<hyper::proto::h1::dispatch::Server<axum::routing::Router<tuple$<>,hyper::body::body::Body>,hyper::body::body::Body>,http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error>,hyper::
             at hyper-0.14.23\src\proto\h1\dispatch.rs:161
  26: hyper::proto::h1::dispatch::Dispatcher<hyper::proto::h1::dispatch::Server<axum::routing::Router<tuple$<>,hyper::body::body::Body>,hyper::body::body::Body>,http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error>,hyper::
             at hyper-0.14.23\src\proto\h1\dispatch.rs:137
  27: hyper::proto::h1::dispatch::Dispatcher<hyper::proto::h1::dispatch::Server<axum::routing::Router<tuple$<>,hyper::body::body::Body>,hyper::body::body::Body>,http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error>,hyper::
             at hyper-0.14.23\src\proto\h1\dispatch.rs:120
  28: hyper::proto::h1::dispatch::impl$1::poll<hyper::proto::h1::dispatch::Server<axum::routing::Router<tuple$<>,hyper::body::body::Body>,hyper::body::body::Body>,http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error>,hyper
             at hyper-0.14.23\src\proto\h1\dispatch.rs:424
  29: hyper::server::conn::impl$6::poll<hyper::server::tcp::addr_stream::AddrStream,http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error>,axum::routing::Router<tuple$<>,hyper::body::body::Body>,enum2$<hyper::common::exec::
             at hyper-0.14.23\src\server\conn.rs:952
  30: hyper::server::conn::upgrades::impl$1::poll<hyper::server::tcp::addr_stream::AddrStream,http_body::combinators::box_body::UnsyncBoxBody<bytes::bytes::Bytes,axum_core::error::Error>,axum::routing::Router<tuple$<>,hyper::body::body::Body>,enum2$<hyper::comm
             at hyper-0.14.23\src\server\conn.rs:1012
  31: hyper::server::server::new_svc::impl$1::poll<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::IntoMakeServiceFuture<axum::routing::Router<tuple$<>,hyper::body::body::Body> >,axum::routing::Router<tuple$<>,hyper::body::body::Bo
             at hyper-0.14.23\src\server\server.rs:741
  32: tokio::runtime::task::core::impl$6::poll::closure$0<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::IntoMakeServiceFuture<axum::routing::Router<tuple$<>,hyper::body::body::Body> >,ax
             at tokio-1.22.0\src\runtime\task\core.rs:208
  33: tokio::loom::std::unsafe_cell::UnsafeCell<enum2$<tokio::runtime::task::core::Stage<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::IntoMakeServiceFuture<axum::routing::Router<tuple$<
             at tokio-1.22.0\src\loom\std\unsafe_cell.rs:14
  34: tokio::runtime::task::core::Core<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::IntoMakeServiceFuture<axum::routing::Router<tuple$<>,hyper::body::body::Body> >,axum::routing::Router
             at tokio-1.22.0\src\runtime\task\core.rs:197
  35: tokio::runtime::task::harness::poll_future::closure$0<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::IntoMakeServiceFuture<axum::routing::Router<tuple$<>,hyper::body::body::Body> >,
             at tokio-1.22.0\src\runtime\task\harness.rs:483
  36: core::panic::unwind_safe::impl$23::call_once<enum2$<core::task::poll::Poll<tuple$<> > >,tokio::runtime::task::harness::poll_future::closure_env$0<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_ma
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\core\src\panic\unwind_safe.rs:271
  37: std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<tokio::runtime::task::harness::poll_future::closure_env$0<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::Into
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\std\src\panicking.rs:492
  38: std::panicking::try::do_catch<core::panic::unwind_safe::AssertUnwindSafe<tokio::runtime::task::harness::poll_future::closure_env$1<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::Int
  39: std::panicking::try<enum2$<core::task::poll::Poll<tuple$<> > >,core::panic::unwind_safe::AssertUnwindSafe<tokio::runtime::task::harness::poll_future::closure_env$0<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\std\src\panicking.rs:456
  40: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<tokio::runtime::task::harness::poll_future::closure_env$0<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::IntoMake
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\std\src\panic.rs:137
  41: tokio::runtime::task::harness::poll_future<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::IntoMakeServiceFuture<axum::routing::Router<tuple$<>,hyper::body::body::Body> >,axum::routi
             at tokio-1.22.0\src\runtime\task\harness.rs:471
  42: tokio::runtime::task::harness::Harness<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::IntoMakeServiceFuture<axum::routing::Router<tuple$<>,hyper::body::body::Body> >,axum::routing::
             at tokio-1.22.0\src\runtime\task\harness.rs:107
  43: tokio::runtime::task::harness::Harness<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::IntoMakeServiceFuture<axum::routing::Router<tuple$<>,hyper::body::body::Body> >,axum::routing::
             at tokio-1.22.0\src\runtime\task\harness.rs:61
  44: tokio::runtime::task::raw::poll<hyper::server::server::new_svc::NewSvcTask<hyper::server::tcp::addr_stream::AddrStream,axum::routing::into_make_service::IntoMakeServiceFuture<axum::routing::Router<tuple$<>,hyper::body::body::Body> >,axum::routing::Router<
             at tokio-1.22.0\src\runtime\task\raw.rs:194
  45: tokio::runtime::task::raw::RawTask::poll
             at tokio-1.22.0\src\runtime\task\raw.rs:134
  46: tokio::runtime::task::LocalNotified<alloc::sync::Arc<tokio::runtime::scheduler::multi_thread::handle::Handle> >::run<alloc::sync::Arc<tokio::runtime::scheduler::multi_thread::handle::Handle> >
             at tokio-1.22.0\src\runtime\task\mod.rs:430
  47: tokio::runtime::scheduler::multi_thread::worker::impl$1::run_task::closure$0
             at tokio-1.22.0\src\runtime\scheduler\multi_thread\worker.rs:439
  48: tokio::runtime::coop::with_budget
             at tokio-1.22.0\src\runtime\coop.rs:102
  49: tokio::runtime::coop::budget
             at tokio-1.22.0\src\runtime\coop.rs:68
  50: tokio::runtime::scheduler::multi_thread::worker::Context::run_task
             at tokio-1.22.0\src\runtime\scheduler\multi_thread\worker.rs:438
  51: tokio::runtime::scheduler::multi_thread::worker::Context::run
             at tokio-1.22.0\src\runtime\scheduler\multi_thread\worker.rs:405
  52: tokio::runtime::scheduler::multi_thread::worker::run::closure$0
             at tokio-1.22.0\src\runtime\scheduler\multi_thread\worker.rs:390
  53: tokio::macros::scoped_tls::ScopedKey<tokio::runtime::scheduler::multi_thread::worker::Context>::set<tokio::runtime::scheduler::multi_thread::worker::Context,tokio::runtime::scheduler::multi_thread::worker::run::closure_env$0,tuple$<> >
             at tokio-1.22.0\src\macros\scoped_tls.rs:61
  54: tokio::runtime::scheduler::multi_thread::worker::run
             at tokio-1.22.0\src\runtime\scheduler\multi_thread\worker.rs:387
  55: tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure$0
             at tokio-1.22.0\src\runtime\scheduler\multi_thread\worker.rs:365
  56: tokio::runtime::blocking::task::impl$2::poll<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0,tuple$<> >
             at tokio-1.22.0\src\runtime\blocking\task.rs:42
  57: tokio::runtime::task::core::impl$6::poll::closure$0<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0>,tokio::runtime::blocking::schedule::NoopSchedule>
             at tokio-1.22.0\src\runtime\task\core.rs:208
  58: tokio::loom::std::unsafe_cell::UnsafeCell<enum2$<tokio::runtime::task::core::Stage<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0> > > >::with_mut<enum2$<tokio::runtime::task::co
             at tokio-1.22.0\src\loom\std\unsafe_cell.rs:14
  59: tokio::runtime::task::core::Core<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0>,tokio::runtime::blocking::schedule::NoopSchedule>::poll<tokio::runtime::blocking::task::BlockingT
             at tokio-1.22.0\src\runtime\task\core.rs:197
  60: tokio::runtime::task::harness::poll_future::closure$0<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0>,tokio::runtime::blocking::schedule::NoopSchedule>
             at tokio-1.22.0\src\runtime\task\harness.rs:483
  61: core::panic::unwind_safe::impl$23::call_once<enum2$<core::task::poll::Poll<tuple$<> > >,tokio::runtime::task::harness::poll_future::closure_env$0<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch:
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\core\src\panic\unwind_safe.rs:271
  62: std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<tokio::runtime::task::harness::poll_future::closure_env$0<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0>,
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\std\src\panicking.rs:492
  63: std::panicking::try::do_catch<core::panic::unwind_safe::AssertUnwindSafe<std::thread::impl$6::drop::closure_env$0<tuple$<> > >,tuple$<> >
  64: std::panicking::try<enum2$<core::task::poll::Poll<tuple$<> > >,core::panic::unwind_safe::AssertUnwindSafe<tokio::runtime::task::harness::poll_future::closure_env$0<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worke
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\std\src\panicking.rs:456
  65: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<tokio::runtime::task::harness::poll_future::closure_env$0<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0>,toki
             at /rustc/897e37553bba8b42751c67658967889d11ecd120\library\std\src\panic.rs:137
  66: tokio::runtime::task::harness::poll_future<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0>,tokio::runtime::blocking::schedule::NoopSchedule>   
             at tokio-1.22.0\src\runtime\task\harness.rs:471
  67: tokio::runtime::task::harness::Harness<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0>,tokio::runtime::blocking::schedule::NoopSchedule>::poll_inner<tokio::runtime::blocking::tas
             at tokio-1.22.0\src\runtime\task\harness.rs:107
  68: tokio::runtime::task::harness::Harness<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0>,tokio::runtime::blocking::schedule::NoopSchedule>::poll<tokio::runtime::blocking::task::Blo
             at tokio-1.22.0\src\runtime\task\harness.rs:61
  69: tokio::runtime::task::raw::poll<tokio::runtime::blocking::task::BlockingTask<tokio::runtime::scheduler::multi_thread::worker::impl$0::launch::closure_env$0>,tokio::runtime::blocking::schedule::NoopSchedule>
             at tokio-1.22.0\src\runtime\task\raw.rs:194
  70: tokio::runtime::task::raw::RawTask::poll
             at tokio-1.22.0\src\runtime\task\raw.rs:134
  71: tokio::runtime::task::UnownedTask<tokio::runtime::blocking::schedule::NoopSchedule>::run<tokio::runtime::blocking::schedule::NoopSchedule>
             at tokio-1.22.0\src\runtime\task\mod.rs:467
  72: tokio::runtime::blocking::pool::Task::run
             at tokio-1.22.0\src\runtime\blocking\pool.rs:159
  73: tokio::runtime::blocking::pool::Inner::run
             at tokio-1.22.0\src\runtime\blocking\pool.rs:510
  74: tokio::runtime::blocking::pool::impl$6::spawn_thread::closure$0
             at tokio-1.22.0\src\runtime\blocking\pool.rs:468
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

@TmLev
Copy link

TmLev commented Sep 16, 2023

This should be closed, right? It was fixed in #1711.

@davidpdrsn
Copy link
Member

Yes that is correct. Thanks for noticing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-axum C-bug Category: This is a bug.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants