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

resolve the function call on an async trait cause a compiler crash #102918

Closed
vincenzopalazzo opened this issue Oct 11, 2022 · 5 comments · Fixed by #102334
Closed

resolve the function call on an async trait cause a compiler crash #102918

vincenzopalazzo opened this issue Oct 11, 2022 · 5 comments · Fixed by #102334
Labels
A-async-await Area: Async & Await C-bug Category: This is a bug. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@vincenzopalazzo
Copy link
Member

vincenzopalazzo commented Oct 11, 2022

While working on an experimental runtime rio and using a couple of experimental features I found that the compiler while in resolving the async call on a trait crash badly.

This is a minimal reproducible example

#![feature(async_fn_in_trait)]
#![feature(associated_type_defaults)]
use rio_rt::runitime as rio;

trait AsyncTrait {
    async fn foo(&self) -> Result<(), ()>;
}

struct AsyncStruct;

impl AsyncTrait for AsyncStruct {
    async fn foo(&self) -> Result<(), ()> {
        Ok(())
    }
}

async fn run_async_workflow(a: &impl AsyncTrait) -> Result<(), ()> {
    a.foo().await
}

fn main() {
    rio::block_on(async {
        let obj = AsyncStruct{};
        run_async_workflow(&obj).await.unwrap();
    });
    rio::wait();
}

and this is the stacktrace generated

   Compiling rio_triage_await v0.1.0 (/home/vincent/Github/rio/examples/rio_triage_await)
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
 --> examples/rio_triage_await/src/main.rs:1:12
  |
1 | #![feature(async_fn_in_trait)]
  |            ^^^^^^^^^^^^^^^^^
  |
  = note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
  = note: `#[warn(incomplete_features)]` on by default

thread 'rustc' panicked at 'index out of bounds: the len is 0 but the index is 0', /cargo/registry/src/github.com-1ecc6299db9ec823/ena-0.14.0/src/snapshot_vec.rs:199:10
stack backtrace:
   0:     0x7fc3a1303460 - std::backtrace_rs::backtrace::libunwind::trace::h845489be954216a1
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   1:     0x7fc3a1303460 - std::backtrace_rs::backtrace::trace_unsynchronized::hc22c3fc36941637e
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7fc3a1303460 - std::sys_common::backtrace::_print_fmt::h21566367032e35d4
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x7fc3a1303460 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h72366b9f7489658b
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x7fc3a135f42e - core::fmt::write::h1440c0152f5352ee
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/core/src/fmt/mod.rs:1209:17
   5:     0x7fc3a12f3545 - std::io::Write::write_fmt::h01a0c683f4011cbd
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/io/mod.rs:1680:15
   6:     0x7fc3a1306203 - std::sys_common::backtrace::_print::hb6b7d9350a1bf6ea
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x7fc3a1306203 - std::sys_common::backtrace::print::h5fef162fa4c4a90c
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x7fc3a1306203 - std::panicking::default_hook::{{closure}}::h91c8dfae313a0a3c
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/panicking.rs:267:22
   9:     0x7fc3a1305eda - std::panicking::default_hook::hd50d8a920cc08614
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/panicking.rs:286:9
  10:     0x7fc3a3c3eff1 - rustc_driver[7242de1449df662b]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0x7fc3a1306a3b - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h4f4e2f6011476f3f
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/alloc/src/boxed.rs:1952:9
  12:     0x7fc3a1306a3b - std::panicking::rust_panic_with_hook::h23e14c7d62d93ab4
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/panicking.rs:673:13
  13:     0x7fc3a1306897 - std::panicking::begin_panic_handler::{{closure}}::hfe0bce4b7c5df181
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/panicking.rs:560:13
  14:     0x7fc3a130390c - std::sys_common::backtrace::__rust_end_short_backtrace::h2e38c83ce0dfcc0c
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys_common/backtrace.rs:138:18
  15:     0x7fc3a13065b2 - rust_begin_unwind
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/panicking.rs:556:5
  16:     0x7fc3a135c003 - core::panicking::panic_fmt::h0c090a9cb6ea02e8
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/core/src/panicking.rs:142:14
  17:     0x7fc3a135bf42 - core::panicking::panic_bounds_check::h20be9564d1e56957
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/core/src/panicking.rs:84:5
  18:     0x7fc3a2474ac5 - <ena[9a97d731a16b0418]::unify::UnificationTable<ena[9a97d731a16b0418]::unify::backing_vec::InPlace<rustc_middle[95e307ed1fbbba30]::infer::unify_key::RegionVidKey, &mut alloc[86689f62ac00be20]::vec::Vec<ena[9a97d731a16b0418]::unify::VarValue<rustc_middle[95e307ed1fbbba30]::infer::unify_key::RegionVidKey>>, &mut rustc_infer[ad47d2b440a203e4]::infer::undo_log::InferCtxtUndoLogs>>>::uninlined_get_root_key
  19:     0x7fc3a3431a13 - <rustc_middle[95e307ed1fbbba30]::ty::sty::Region as rustc_middle[95e307ed1fbbba30]::ty::fold::TypeFoldable>::try_fold_with::<rustc_infer[ad47d2b440a203e4]::infer::resolve::OpportunisticRegionResolver>
  20:     0x7fc3a34324ce - <&rustc_middle[95e307ed1fbbba30]::ty::list::List<rustc_middle[95e307ed1fbbba30]::ty::subst::GenericArg> as rustc_middle[95e307ed1fbbba30]::ty::fold::TypeFoldable>::try_fold_with::<rustc_infer[ad47d2b440a203e4]::infer::resolve::OpportunisticRegionResolver>
  21:     0x7fc3a3431d88 - <rustc_middle[95e307ed1fbbba30]::ty::Ty as rustc_middle[95e307ed1fbbba30]::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_infer[ad47d2b440a203e4]::infer::resolve::OpportunisticRegionResolver>
  22:     0x7fc3a27d19ff - rustc_trait_selection[1972b1c7572a008]::traits::project::opt_normalize_projection_type
  23:     0x7fc3a27c840d - <rustc_trait_selection[1972b1c7572a008]::traits::project::AssocTypeNormalizer as rustc_middle[95e307ed1fbbba30]::ty::fold::TypeFolder>::fold_ty
  24:     0x7fc3a27dd037 - <&rustc_middle[95e307ed1fbbba30]::ty::list::List<rustc_middle[95e307ed1fbbba30]::ty::Ty> as rustc_middle[95e307ed1fbbba30]::ty::fold::TypeFoldable>::try_fold_with::<rustc_trait_selection[1972b1c7572a008]::traits::project::AssocTypeNormalizer>
  25:     0x7fc3a4a6c1cf - <rustc_trait_selection[1972b1c7572a008]::traits::project::AssocTypeNormalizer as rustc_middle[95e307ed1fbbba30]::ty::fold::FallibleTypeFolder>::try_fold_binder::<&rustc_middle[95e307ed1fbbba30]::ty::list::List<rustc_middle[95e307ed1fbbba30]::ty::Ty>>
  26:     0x7fc3a27c826e - <rustc_trait_selection[1972b1c7572a008]::traits::project::AssocTypeNormalizer as rustc_middle[95e307ed1fbbba30]::ty::fold::TypeFolder>::fold_ty
  27:     0x7fc3a27c8a0d - rustc_middle[95e307ed1fbbba30]::ty::util::fold_list::<rustc_trait_selection[1972b1c7572a008]::traits::project::AssocTypeNormalizer, rustc_middle[95e307ed1fbbba30]::ty::subst::GenericArg, <&rustc_middle[95e307ed1fbbba30]::ty::list::List<rustc_middle[95e307ed1fbbba30]::ty::subst::GenericArg> as rustc_middle[95e307ed1fbbba30]::ty::fold::TypeFoldable>::try_fold_with<rustc_trait_selection[1972b1c7572a008]::traits::project::AssocTypeNormalizer>::{closure#0}>
  28:     0x7fc3a27c82af - <rustc_trait_selection[1972b1c7572a008]::traits::project::AssocTypeNormalizer as rustc_middle[95e307ed1fbbba30]::ty::fold::TypeFolder>::fold_ty
  29:     0x7fc3a2ad9249 - <&rustc_middle[95e307ed1fbbba30]::ty::list::List<rustc_middle[95e307ed1fbbba30]::ty::subst::GenericArg> as rustc_middle[95e307ed1fbbba30]::ty::fold::TypeFoldable>::try_fold_with::<rustc_trait_selection[1972b1c7572a008]::traits::project::AssocTypeNormalizer>
  30:     0x7fc3a27e1ccc - <rustc_middle[95e307ed1fbbba30]::ty::Ty as rustc_middle[95e307ed1fbbba30]::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_trait_selection[1972b1c7572a008]::traits::project::AssocTypeNormalizer>
  31:     0x7fc3a250dfd6 - <&mut <rustc_trait_selection[1972b1c7572a008]::traits::select::SelectionContext>::collect_predicates_for_types::{closure#0} as core[3ffd720ca1c42488]::ops::function::FnOnce<(&rustc_middle[95e307ed1fbbba30]::ty::Ty,)>>::call_once
  32:     0x7fc3a250d157 - <alloc[86689f62ac00be20]::vec::Vec<rustc_infer[ad47d2b440a203e4]::traits::Obligation<rustc_middle[95e307ed1fbbba30]::ty::Predicate>> as alloc[86689f62ac00be20]::vec::spec_from_iter::SpecFromIter<rustc_infer[ad47d2b440a203e4]::traits::Obligation<rustc_middle[95e307ed1fbbba30]::ty::Predicate>, core[3ffd720ca1c42488]::iter::adapters::flatten::FlatMap<core[3ffd720ca1c42488]::slice::iter::Iter<rustc_middle[95e307ed1fbbba30]::ty::Ty>, alloc[86689f62ac00be20]::vec::Vec<rustc_infer[ad47d2b440a203e4]::traits::Obligation<rustc_middle[95e307ed1fbbba30]::ty::Predicate>>, <rustc_trait_selection[1972b1c7572a008]::traits::select::SelectionContext>::collect_predicates_for_types::{closure#0}>>>::from_iter
  33:     0x7fc3a24e6e89 - <rustc_trait_selection[1972b1c7572a008]::traits::select::SelectionContext>::confirm_candidate
  34:     0x7fc3a3014d29 - <rustc_trait_selection[1972b1c7572a008]::traits::select::SelectionContext>::evaluate_stack
  35:     0x7fc3a251bdd5 - <rustc_trait_selection[1972b1c7572a008]::traits::select::SelectionContext>::evaluate_predicates_recursively::<alloc[86689f62ac00be20]::vec::into_iter::IntoIter<rustc_infer[ad47d2b440a203e4]::traits::Obligation<rustc_middle[95e307ed1fbbba30]::ty::Predicate>>>
  36:     0x7fc3a3014db6 - <rustc_trait_selection[1972b1c7572a008]::traits::select::SelectionContext>::evaluate_stack
  37:     0x7fc3a2e4bf0e - <rustc_trait_selection[1972b1c7572a008]::traits::select::SelectionContext>::evaluate_predicate_recursively
  38:     0x7fc3a2e4a4db - <rustc_trait_selection[1972b1c7572a008]::traits::select::SelectionContext>::evaluate_root_obligation
  39:     0x7fc3a2e48a02 - rustc_traits[c47d1f977f9a2400]::evaluate_obligation::evaluate_obligation
  40:     0x7fc3a30d7c43 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::get_query::<rustc_query_impl[5acd0bb7c17f3c56]::queries::evaluate_obligation, rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt>
  41:     0x7fc3a30d6f55 - <rustc_query_impl[5acd0bb7c17f3c56]::Queries as rustc_middle[95e307ed1fbbba30]::ty::query::QueryEngine>::evaluate_obligation
  42:     0x7fc3a29557d2 - <rustc_trait_selection[1972b1c7572a008]::traits::fulfill::FulfillProcessor as rustc_data_structures[ea39d62d1b4f5af4]::obligation_forest::ObligationProcessor>::process_obligation
  43:     0x7fc3a2952a89 - <rustc_data_structures[ea39d62d1b4f5af4]::obligation_forest::ObligationForest<rustc_trait_selection[1972b1c7572a008]::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection[1972b1c7572a008]::traits::fulfill::FulfillProcessor>
  44:     0x7fc3a35164ab - <rustc_trait_selection[1972b1c7572a008]::traits::fulfill::FulfillmentContext as rustc_infer[ad47d2b440a203e4]::traits::engine::TraitEngine>::select_all_or_error
  45:     0x7fc3a314b5df - <rustc_hir_analysis[c205a317ae4aae01]::check::inherited::InheritedBuilder>::enter::<rustc_hir_analysis[c205a317ae4aae01]::check::typeck_with_fallback<rustc_hir_analysis[c205a317ae4aae01]::check::typeck::{closure#0}>::{closure#1}, &rustc_middle[95e307ed1fbbba30]::ty::context::TypeckResults>
  46:     0x7fc3a31498ac - rustc_hir_analysis[c205a317ae4aae01]::check::typeck
  47:     0x7fc3a3286363 - <rustc_query_system[1567c4f72cef5d5a]::dep_graph::graph::DepGraph<rustc_middle[95e307ed1fbbba30]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[95e307ed1fbbba30]::ty::context::TyCtxt, rustc_span[db13f476b7ea05ff]::def_id::LocalDefId, &rustc_middle[95e307ed1fbbba30]::ty::context::TypeckResults>
  48:     0x7fc3a3275271 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::try_execute_query::<rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt, rustc_query_system[1567c4f72cef5d5a]::query::caches::DefaultCache<rustc_span[db13f476b7ea05ff]::def_id::LocalDefId, &rustc_middle[95e307ed1fbbba30]::ty::context::TypeckResults>>
  49:     0x7fc3a3b3ed6e - <rustc_query_impl[5acd0bb7c17f3c56]::Queries as rustc_middle[95e307ed1fbbba30]::ty::query::QueryEngine>::typeck
  50:     0x7fc3a3971a27 - rustc_data_structures[ea39d62d1b4f5af4]::sync::par_for_each_in::<&[rustc_span[db13f476b7ea05ff]::def_id::LocalDefId], <rustc_middle[95e307ed1fbbba30]::hir::map::Map>::par_body_owners<rustc_hir_analysis[c205a317ae4aae01]::check::typeck_item_bodies::{closure#0}>::{closure#0}>
  51:     0x7fc3a39717e3 - rustc_hir_analysis[c205a317ae4aae01]::check::typeck_item_bodies
  52:     0x7fc3a3890209 - <rustc_query_system[1567c4f72cef5d5a]::dep_graph::graph::DepGraph<rustc_middle[95e307ed1fbbba30]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[95e307ed1fbbba30]::ty::context::TyCtxt, (), ()>
  53:     0x7fc3a388f1d8 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::try_execute_query::<rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt, rustc_query_system[1567c4f72cef5d5a]::query::caches::DefaultCache<(), ()>>
  54:     0x7fc3a388ebe7 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::get_query::<rustc_query_impl[5acd0bb7c17f3c56]::queries::typeck_item_bodies, rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt>
  55:     0x7fc3a3634e1f - <rustc_session[33be129fa9a3b2db]::session::Session>::time::<(), rustc_hir_analysis[c205a317ae4aae01]::check_crate::{closure#7}>
  56:     0x7fc3a363462f - rustc_hir_analysis[c205a317ae4aae01]::check_crate
  57:     0x7fc3a3634137 - rustc_interface[b5c7f094b608ea39]::passes::analysis
  58:     0x7fc3a39cac56 - <rustc_query_system[1567c4f72cef5d5a]::dep_graph::graph::DepGraph<rustc_middle[95e307ed1fbbba30]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[95e307ed1fbbba30]::ty::context::TyCtxt, (), core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>
  59:     0x7fc3a39c9ff6 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::try_execute_query::<rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt, rustc_query_system[1567c4f72cef5d5a]::query::caches::DefaultCache<(), core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>>
  60:     0x7fc3a39c9ad7 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::get_query::<rustc_query_impl[5acd0bb7c17f3c56]::queries::analysis, rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt>
  61:     0x7fc3a2826614 - <rustc_interface[b5c7f094b608ea39]::passes::QueryContext>::enter::<rustc_driver[7242de1449df662b]::run_compiler::{closure#1}::{closure#2}::{closure#3}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>
  62:     0x7fc3a2822a66 - <rustc_interface[b5c7f094b608ea39]::interface::Compiler>::enter::<rustc_driver[7242de1449df662b]::run_compiler::{closure#1}::{closure#2}, core[3ffd720ca1c42488]::result::Result<core[3ffd720ca1c42488]::option::Option<rustc_interface[b5c7f094b608ea39]::queries::Linker>, rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>
  63:     0x7fc3a281da0c - rustc_span[db13f476b7ea05ff]::with_source_map::<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_interface[b5c7f094b608ea39]::interface::create_compiler_and_run<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_driver[7242de1449df662b]::run_compiler::{closure#1}>::{closure#1}>
  64:     0x7fc3a281d40f - rustc_interface[b5c7f094b608ea39]::interface::create_compiler_and_run::<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_driver[7242de1449df662b]::run_compiler::{closure#1}>
  65:     0x7fc3a281c602 - <scoped_tls[f5e6faabecdf262b]::ScopedKey<rustc_span[db13f476b7ea05ff]::SessionGlobals>>::set::<rustc_interface[b5c7f094b608ea39]::interface::run_compiler<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_driver[7242de1449df662b]::run_compiler::{closure#1}>::{closure#0}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>
  66:     0x7fc3a281badf - std[a6dc0af1ec52a2ce]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[b5c7f094b608ea39]::util::run_in_thread_pool_with_globals<rustc_interface[b5c7f094b608ea39]::interface::run_compiler<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_driver[7242de1449df662b]::run_compiler::{closure#1}>::{closure#0}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>::{closure#0}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>
  67:     0x7fc3a3a5b240 - <<std[a6dc0af1ec52a2ce]::thread::Builder>::spawn_unchecked_<rustc_interface[b5c7f094b608ea39]::util::run_in_thread_pool_with_globals<rustc_interface[b5c7f094b608ea39]::interface::run_compiler<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_driver[7242de1449df662b]::run_compiler::{closure#1}>::{closure#0}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>::{closure#0}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>::{closure#1} as core[3ffd720ca1c42488]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  68:     0x7fc3a1310643 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h2a8f9144a9e03d40
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/alloc/src/boxed.rs:1938:9
  69:     0x7fc3a1310643 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h0460607c3f53db9e
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/alloc/src/boxed.rs:1938:9
  70:     0x7fc3a1310643 - std::sys::unix::thread::Thread::new::thread_start::h5611122d9afa23bd
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys/unix/thread.rs:108:17
  71:     0x7fc3a11c7609 - start_thread
                               at /build/glibc-SzIz7B/glibc-2.31/nptl/pthread_create.c:477:8
  72:     0x7fc3a10ea133 - clone
                               at /build/glibc-SzIz7B/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
  73:                0x0 - <unknown>

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.66.0-nightly (a6b7274a4 2022-10-10) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [evaluate_obligation] evaluating trait selection obligation `for<'a, 'b> {core::future::ResumeTy, AsyncStruct, &'a AsyncStruct, impl core::future::future::Future<Output = core::result::Result<(), ()>>, ()}: core::marker::Send`
#1 [typeck] type-checking `main`
#2 [typeck_item_bodies] type-checking all item bodies
#3 [analysis] running analysis passes on this crate
end of query stack
warning: `rio_triage_await` (bin "rio_triage_await") generated 1 warning
error: could not compile `rio_triage_await`; 1 warning emitted

N.B: I guess this happens with any runtime? BTW also if happens only with rio the compiler should not crash, but I do not think this is related to a specific runtime, but I guess instead, the runtime triggers the resolution of the futures

@vincenzopalazzo vincenzopalazzo added the C-bug Category: This is a bug. label Oct 11, 2022
@vincenzopalazzo
Copy link
Member Author

@rustbot label +A-async-await +T-compiler

@rustbot rustbot added A-async-await Area: Async & Await T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Oct 11, 2022
@vincenzopalazzo
Copy link
Member Author

In the meanwhile, I will try to swim inside the codebase to catch the problem!

@rustbot claim

@compiler-errors
Copy link
Member

@vincenzopalazzo, this is fixed by #102334.

@compiler-errors
Copy link
Member

Minimized so it doesn't depend on rio:

#![feature(async_fn_in_trait)]

trait AsyncTrait {
    async fn foo(&self) -> Result<(), ()>;
}

struct AsyncStruct;

impl AsyncTrait for AsyncStruct {
    async fn foo(&self) -> Result<(), ()> {
        Ok(())
    }
}

async fn run_async_workflow(a: &impl AsyncTrait) -> Result<(), ()> {
    a.foo().await
}

fn main() {
    let _ = async {
        let obj = AsyncStruct;
        let _ = run_async_workflow(&obj).await;
    };
}

@vincenzopalazzo
Copy link
Member Author

Cool @compiler-errors great work :)

@bors bors closed this as completed in 8be3ce9 Oct 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-async-await Area: Async & Await C-bug Category: This is a bug. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants