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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions