Skip to content

async fn resumed after completion in serve_connection #2522

@orishu

Description

@orishu

Bug Report

Version

0.14.5

Platform

Linux 6.1.x-gke.x #1 SMP x86_64 x86_64 x86_64 GNU/Linux

Description

A connection-serving future is polled after it has already completed, causing a panic and SIGSEGV (exit code 139) under concurrent HTTP/2 gRPC load.

thread 'tokio-runtime-worker' panicked at
  tonic-0.14.5/src/transport/server/mod.rs:891:20:
`async fn` resumed after completion

stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_async_fn_resumed
   3: <core::pin::Pin<P> as core::future::future::Future>::poll
   4: <core::future::poll_fn::PollFn<F> as core::future::future::Future>::poll
   5: tonic::transport::server::serve_connection::{{closure}}
   6: tokio::runtime::task::core::Core<T,S>::poll
   7: tokio::runtime::task::harness::Harness<T,S>::poll
   8: tokio::runtime::scheduler::multi_thread::worker::Context::run_task
   9: tokio::runtime::scheduler::multi_thread::worker::Context::run
  10: tokio::runtime::context::scoped::Scoped<T>::set
  11: tokio::runtime::context::runtime::enter_runtime
  12: tokio::runtime::scheduler::multi_thread::worker::run
  13: tokio::runtime::task::core::Core<T,S>::poll
  14: tokio::runtime::task::harness::Harness<T,S>::poll
  15: tokio::runtime::blocking::pool::Inner::run

(bug is not present/not reproducing on tonic 0.13.1)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions