Skip to content

index out of bounds with async and Fn #103250

Closed
@ns-sjorgedeaguiar

Description

@ns-sjorgedeaguiar

Code

type TranslateFn = Box<dyn Fn(String, String) -> String>;

pub struct DeviceCluster {
    devices: Vec<Device>,
}

impl DeviceCluster {
    pub async fn do_something(&mut self) -> Result<String, Box<dyn std::error::Error>> {
        let mut last_error: Box<dyn std::error::Error>;

        for device in &mut self.devices {
            match device.do_something().await {
                Ok(info) => {
                    return Ok(info);
                }
                Err(e) => {}
            }
        }
        Err(last_error)
    }
}

pub struct Device {
    translate_fn: Option<TranslateFn>,
}
impl Device {
    pub async fn do_something(&mut self) -> Result<String, Box<dyn std::error::Error>> {
        Ok(String::from(""))
    }
}

fn main() {}

Meta

rustc --version --verbose:

rustc 1.66.0-nightly (a24a020e6 2022-10-18)
binary: rustc
commit-hash: a24a020e6d926dffe6b472fc647978f92269504e
commit-date: 2022-10-18
host: aarch64-apple-darwin
release: 1.66.0-nightly
LLVM version: 15.0.2

Error output

thread 'rustc' panicked at 'index out of bounds: the len is 0 but the index is 32', /Users/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/ena-0.14.0/src/snapshot_vec.rs:199:10
Backtrace

stack backtrace:
   0:        0x10183bf00 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h75eddecae857d5a5
   1:        0x101886918 - core::fmt::write::hcbbbc43d9af70423
   2:        0x10182eb14 - std::io::Write::write_fmt::h76aab80ad6f7047e
   3:        0x10183bd14 - std::sys_common::backtrace::print::hf1b44b262adbaf15
   4:        0x10183e89c - std::panicking::default_hook::{{closure}}::h8c17fa758efd664c
   5:        0x10183e5f4 - std::panicking::default_hook::h5c1d264711b6ff85
   6:        0x1096cd38c - rustc_driver[5beba0b70548b2dd]::DEFAULT_HOOK::{closure#0}::{closure#0}
   7:        0x10183efac - std::panicking::rust_panic_with_hook::hbbbd53554a56360e
   8:        0x10183ed94 - ___umodti3
   9:        0x10183c368 - std::sys_common::backtrace::__rust_end_short_backtrace::h00b19a7dbc8a1d97
  10:        0x10183eae8 - _rust_begin_unwind
  11:        0x1018b22a8 - core::panicking::panic_fmt::hb76122fd29fa280d
  12:        0x1018b238c - core::panicking::panic_bounds_check::he28cb42adadba34f
  13:        0x10d26bf5c - <ena[ca51887d8cb28e02]::unify::UnificationTable<ena[ca51887d8cb28e02]::unify::backing_vec::InPlace<rustc_middle[f1d8bc67048538a2]::infer::unify_key::RegionVidKey, &mut alloc[f7b22d3596a55001]::vec::Vec<ena[ca51887d8cb28e02]::unify::VarValue<rustc_middle[f1d8bc67048538a2]::infer::unify_key::RegionVidKey>>, &mut rustc_infer[297b7eaa1aa801dc]::infer::undo_log::InferCtxtUndoLogs>>>::uninlined_get_root_key
  14:        0x10d1ef0d8 - <rustc_infer[297b7eaa1aa801dc]::infer::canonical::canonicalizer::Canonicalizer as rustc_middle[f1d8bc67048538a2]::ty::fold::TypeFolder>::fold_region
  15:        0x10d1e2e10 - <rustc_middle[f1d8bc67048538a2]::ty::Ty as rustc_middle[f1d8bc67048538a2]::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_infer[297b7eaa1aa801dc]::infer::canonical::canonicalizer::Canonicalizer>
  16:        0x10d268ecc - <&rustc_middle[f1d8bc67048538a2]::ty::list::List<rustc_middle[f1d8bc67048538a2]::ty::subst::GenericArg> as rustc_middle[f1d8bc67048538a2]::ty::fold::TypeFoldable>::try_fold_with::<rustc_infer[297b7eaa1aa801dc]::infer::canonical::canonicalizer::Canonicalizer>
  17:        0x10d1e2c5c - <rustc_middle[f1d8bc67048538a2]::ty::Ty as rustc_middle[f1d8bc67048538a2]::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_infer[297b7eaa1aa801dc]::infer::canonical::canonicalizer::Canonicalizer>
  18:        0x10d0bbcf4 - <&rustc_middle[f1d8bc67048538a2]::ty::list::List<rustc_middle[f1d8bc67048538a2]::ty::subst::GenericArg> as rustc_middle[f1d8bc67048538a2]::ty::fold::TypeFoldable>::try_fold_with::<rustc_infer[297b7eaa1aa801dc]::infer::canonical::canonicalizer::Canonicalizer>
  19:        0x10d19bf38 - <rustc_middle[f1d8bc67048538a2]::ty::PredicateKind as rustc_middle[f1d8bc67048538a2]::ty::fold::TypeFoldable>::try_fold_with::<rustc_infer[297b7eaa1aa801dc]::infer::canonical::canonicalizer::Canonicalizer>
  20:        0x10d1a4c30 - <rustc_middle[f1d8bc67048538a2]::ty::Predicate as rustc_middle[f1d8bc67048538a2]::ty::fold::TypeSuperFoldable>::super_fold_with::<rustc_infer[297b7eaa1aa801dc]::infer::canonical::canonicalizer::Canonicalizer>
  21:        0x10d0b2360 - <rustc_infer[297b7eaa1aa801dc]::infer::canonical::canonicalizer::Canonicalizer>::canonicalize::<rustc_middle[f1d8bc67048538a2]::ty::ParamEnvAnd<rustc_middle[f1d8bc67048538a2]::ty::Predicate>>
  22:        0x10d12dd68 - <rustc_infer[297b7eaa1aa801dc]::infer::InferCtxt as rustc_trait_selection[c48d1355dee1d92e]::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation
  23:        0x10d12c59c - <rustc_infer[297b7eaa1aa801dc]::infer::InferCtxt as rustc_trait_selection[c48d1355dee1d92e]::infer::InferCtxtExt>::type_implements_trait
  24:        0x10c263434 - <rustc_borrowck[5f3c42b45168b1f9]::MirBorrowckCtxt>::report_use_of_moved_or_uninitialized
  25:        0x10c27a268 - <rustc_borrowck[5f3c42b45168b1f9]::MirBorrowckCtxt>::check_if_full_path_is_moved
  26:        0x10c27a330 - <rustc_borrowck[5f3c42b45168b1f9]::MirBorrowckCtxt>::check_if_path_or_subpath_is_moved
  27:        0x10c279ee0 - <rustc_borrowck[5f3c42b45168b1f9]::MirBorrowckCtxt>::consume_operand
  28:        0x10c2750a8 - <rustc_borrowck[5f3c42b45168b1f9]::MirBorrowckCtxt as rustc_mir_dataflow[cf1a0e20c7b044ea]::framework::visitor::ResultsVisitor>::visit_statement_before_primary_effect
  29:        0x10c2be67c - <rustc_mir_dataflow[cf1a0e20c7b044ea]::framework::direction::Forward as rustc_mir_dataflow[cf1a0e20c7b044ea]::framework::direction::Direction>::visit_results_in_block::<rustc_borrowck[5f3c42b45168b1f9]::dataflow::BorrowckAnalyses<rustc_index[1c9716e844797a56]::bit_set::BitSet<rustc_borrowck[5f3c42b45168b1f9]::dataflow::BorrowIndex>, rustc_index[1c9716e844797a56]::bit_set::ChunkedBitSet<rustc_mir_dataflow[cf1a0e20c7b044ea]::move_paths::MovePathIndex>, rustc_index[1c9716e844797a56]::bit_set::ChunkedBitSet<rustc_mir_dataflow[cf1a0e20c7b044ea]::move_paths::InitIndex>>, rustc_borrowck[5f3c42b45168b1f9]::dataflow::BorrowckAnalyses<rustc_mir_dataflow[cf1a0e20c7b044ea]::framework::engine::Results<rustc_borrowck[5f3c42b45168b1f9]::dataflow::Borrows>, rustc_mir_dataflow[cf1a0e20c7b044ea]::framework::engine::Results<rustc_mir_dataflow[cf1a0e20c7b044ea]::impls::MaybeUninitializedPlaces>, rustc_mir_dataflow[cf1a0e20c7b044ea]::framework::engine::Results<rustc_mir_dataflow[cf1a0e20c7b044ea]::impls::EverInitializedPlaces>>, rustc_borrowck[5f3c42b45168b1f9]::MirBorrowckCtxt>
  30:        0x10c204764 - rustc_mir_dataflow[cf1a0e20c7b044ea]::framework::visitor::visit_results::<rustc_borrowck[5f3c42b45168b1f9]::dataflow::BorrowckAnalyses<rustc_index[1c9716e844797a56]::bit_set::BitSet<rustc_borrowck[5f3c42b45168b1f9]::dataflow::BorrowIndex>, rustc_index[1c9716e844797a56]::bit_set::ChunkedBitSet<rustc_mir_dataflow[cf1a0e20c7b044ea]::move_paths::MovePathIndex>, rustc_index[1c9716e844797a56]::bit_set::ChunkedBitSet<rustc_mir_dataflow[cf1a0e20c7b044ea]::move_paths::InitIndex>>, rustc_borrowck[5f3c42b45168b1f9]::dataflow::BorrowckAnalyses<rustc_mir_dataflow[cf1a0e20c7b044ea]::framework::engine::Results<rustc_borrowck[5f3c42b45168b1f9]::dataflow::Borrows>, rustc_mir_dataflow[cf1a0e20c7b044ea]::framework::engine::Results<rustc_mir_dataflow[cf1a0e20c7b044ea]::impls::MaybeUninitializedPlaces>, rustc_mir_dataflow[cf1a0e20c7b044ea]::framework::engine::Results<rustc_mir_dataflow[cf1a0e20c7b044ea]::impls::EverInitializedPlaces>>, core[c7453568e13111fb]::iter::adapters::map::Map<rustc_middle[f1d8bc67048538a2]::mir::traversal::ReversePostorderIter, rustc_borrowck[5f3c42b45168b1f9]::do_mir_borrowck::{closure#2}>, rustc_borrowck[5f3c42b45168b1f9]::MirBorrowckCtxt>
  31:        0x10c280370 - rustc_borrowck[5f3c42b45168b1f9]::do_mir_borrowck
  32:        0x10c274bd0 - rustc_borrowck[5f3c42b45168b1f9]::mir_borrowck
  33:        0x10c25dc20 - <rustc_borrowck[5f3c42b45168b1f9]::provide::{closure#0} as core[c7453568e13111fb]::ops::function::FnOnce<(rustc_middle[f1d8bc67048538a2]::ty::context::TyCtxt, rustc_span[ccb95ac7a2fc6855]::def_id::LocalDefId)>>::call_once
  34:        0x10c890e7c - <rustc_query_system[5d37595598e841cb]::dep_graph::graph::DepGraph<rustc_middle[f1d8bc67048538a2]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[f1d8bc67048538a2]::ty::context::TyCtxt, rustc_span[ccb95ac7a2fc6855]::def_id::LocalDefId, &rustc_middle[f1d8bc67048538a2]::mir::query::BorrowCheckResult>
  35:        0x10c62ff30 - rustc_query_system[5d37595598e841cb]::query::plumbing::try_execute_query::<rustc_query_impl[6e3cb062acfff8c8]::plumbing::QueryCtxt, rustc_query_system[5d37595598e841cb]::query::caches::DefaultCache<rustc_span[ccb95ac7a2fc6855]::def_id::LocalDefId, &rustc_middle[f1d8bc67048538a2]::mir::query::BorrowCheckResult>>
  36:        0x10c6dc92c - rustc_query_system[5d37595598e841cb]::query::plumbing::get_query::<rustc_query_impl[6e3cb062acfff8c8]::queries::mir_borrowck, rustc_query_impl[6e3cb062acfff8c8]::plumbing::QueryCtxt>
  37:        0x10c227f9c - <rustc_borrowck[5f3c42b45168b1f9]::type_check::TypeChecker>::prove_closure_bounds
  38:        0x10c22b4b0 - <rustc_borrowck[5f3c42b45168b1f9]::type_check::TypeChecker>::check_rvalue
  39:        0x10c22ecc4 - <rustc_borrowck[5f3c42b45168b1f9]::type_check::TypeChecker>::typeck_mir
  40:        0x10c221cf8 - rustc_borrowck[5f3c42b45168b1f9]::type_check::type_check
  41:        0x10c18fbac - rustc_borrowck[5f3c42b45168b1f9]::nll::compute_regions
  42:        0x10c27f59c - rustc_borrowck[5f3c42b45168b1f9]::do_mir_borrowck
  43:        0x10c274bd0 - rustc_borrowck[5f3c42b45168b1f9]::mir_borrowck
  44:        0x10c25dc20 - <rustc_borrowck[5f3c42b45168b1f9]::provide::{closure#0} as core[c7453568e13111fb]::ops::function::FnOnce<(rustc_middle[f1d8bc67048538a2]::ty::context::TyCtxt, rustc_span[ccb95ac7a2fc6855]::def_id::LocalDefId)>>::call_once
  45:        0x10c890e7c - <rustc_query_system[5d37595598e841cb]::dep_graph::graph::DepGraph<rustc_middle[f1d8bc67048538a2]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[f1d8bc67048538a2]::ty::context::TyCtxt, rustc_span[ccb95ac7a2fc6855]::def_id::LocalDefId, &rustc_middle[f1d8bc67048538a2]::mir::query::BorrowCheckResult>
  46:        0x10c62ff30 - rustc_query_system[5d37595598e841cb]::query::plumbing::try_execute_query::<rustc_query_impl[6e3cb062acfff8c8]::plumbing::QueryCtxt, rustc_query_system[5d37595598e841cb]::query::caches::DefaultCache<rustc_span[ccb95ac7a2fc6855]::def_id::LocalDefId, &rustc_middle[f1d8bc67048538a2]::mir::query::BorrowCheckResult>>
  47:        0x10c6dc92c - rustc_query_system[5d37595598e841cb]::query::plumbing::get_query::<rustc_query_impl[6e3cb062acfff8c8]::queries::mir_borrowck, rustc_query_impl[6e3cb062acfff8c8]::plumbing::QueryCtxt>
  48:        0x10ba766cc - rustc_hir_analysis[7a59ccb9bffd164a]::collect::type_of::find_opaque_ty_constraints_for_rpit
  49:        0x10ba75978 - rustc_hir_analysis[7a59ccb9bffd164a]::collect::type_of::type_of
  50:        0x10c89a03c - <rustc_query_system[5d37595598e841cb]::dep_graph::graph::DepGraph<rustc_middle[f1d8bc67048538a2]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[f1d8bc67048538a2]::ty::context::TyCtxt, rustc_span[ccb95ac7a2fc6855]::def_id::DefId, rustc_middle[f1d8bc67048538a2]::ty::Ty>
  51:        0x10c64d44c - rustc_query_system[5d37595598e841cb]::query::plumbing::try_execute_query::<rustc_query_impl[6e3cb062acfff8c8]::plumbing::QueryCtxt, rustc_query_system[5d37595598e841cb]::query::caches::DefaultCache<rustc_span[ccb95ac7a2fc6855]::def_id::DefId, rustc_middle[f1d8bc67048538a2]::ty::Ty>>
  52:        0x10c6f6078 - rustc_query_system[5d37595598e841cb]::query::plumbing::get_query::<rustc_query_impl[6e3cb062acfff8c8]::queries::type_of, rustc_query_impl[6e3cb062acfff8c8]::plumbing::QueryCtxt>
  53:        0x10bb08260 - rustc_hir_analysis[7a59ccb9bffd164a]::check::check::check_item_type
  54:        0x10bb0cb04 - rustc_hir_analysis[7a59ccb9bffd164a]::check::check::check_mod_item_types
  55:        0x10c891c34 - <rustc_query_system[5d37595598e841cb]::dep_graph::graph::DepGraph<rustc_middle[f1d8bc67048538a2]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[f1d8bc67048538a2]::ty::context::TyCtxt, rustc_span[ccb95ac7a2fc6855]::def_id::LocalDefId, ()>
  56:        0x10c632a94 - rustc_query_system[5d37595598e841cb]::query::plumbing::try_execute_query::<rustc_query_impl[6e3cb062acfff8c8]::plumbing::QueryCtxt, rustc_query_system[5d37595598e841cb]::query::caches::DefaultCache<rustc_span[ccb95ac7a2fc6855]::def_id::LocalDefId, ()>>
  57:        0x10c6e67f8 - rustc_query_system[5d37595598e841cb]::query::plumbing::get_query::<rustc_query_impl[6e3cb062acfff8c8]::queries::check_mod_item_types, rustc_query_impl[6e3cb062acfff8c8]::plumbing::QueryCtxt>
  58:        0x10ba604b0 - <rustc_middle[f1d8bc67048538a2]::hir::map::Map>::for_each_module::<rustc_hir_analysis[7a59ccb9bffd164a]::check_crate::{closure#6}::{closure#0}>
  59:        0x10ba30c18 - <rustc_session[ed40b513db9a37d9]::session::Session>::time::<(), rustc_hir_analysis[7a59ccb9bffd164a]::check_crate::{closure#6}>
  60:        0x10bbc35e0 - rustc_hir_analysis[7a59ccb9bffd164a]::check_crate
  61:        0x10977eebc - rustc_interface[91934f1a0e4f5512]::passes::analysis
  62:        0x10c8b52b4 - <rustc_query_system[5d37595598e841cb]::dep_graph::graph::DepGraph<rustc_middle[f1d8bc67048538a2]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[f1d8bc67048538a2]::ty::context::TyCtxt, (), core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>>
  63:        0x10c68d1c8 - rustc_query_system[5d37595598e841cb]::query::plumbing::try_execute_query::<rustc_query_impl[6e3cb062acfff8c8]::plumbing::QueryCtxt, rustc_query_system[5d37595598e841cb]::query::caches::DefaultCache<(), core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>>>
  64:        0x10c6f61ac - rustc_query_system[5d37595598e841cb]::query::plumbing::get_query::<rustc_query_impl[6e3cb062acfff8c8]::queries::analysis, rustc_query_impl[6e3cb062acfff8c8]::plumbing::QueryCtxt>
  65:        0x1096b03b0 - <rustc_interface[91934f1a0e4f5512]::passes::QueryContext>::enter::<rustc_driver[5beba0b70548b2dd]::run_compiler::{closure#1}::{closure#2}::{closure#3}, core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>>
  66:        0x10965559c - <rustc_interface[91934f1a0e4f5512]::interface::Compiler>::enter::<rustc_driver[5beba0b70548b2dd]::run_compiler::{closure#1}::{closure#2}, core[c7453568e13111fb]::result::Result<core[c7453568e13111fb]::option::Option<rustc_interface[91934f1a0e4f5512]::queries::Linker>, rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>>
  67:        0x1096bb7c8 - rustc_span[ccb95ac7a2fc6855]::with_source_map::<core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>, rustc_interface[91934f1a0e4f5512]::interface::create_compiler_and_run<core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>, rustc_driver[5beba0b70548b2dd]::run_compiler::{closure#1}>::{closure#1}>
  68:        0x1096560dc - rustc_interface[91934f1a0e4f5512]::interface::create_compiler_and_run::<core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>, rustc_driver[5beba0b70548b2dd]::run_compiler::{closure#1}>
  69:        0x1096afb50 - <scoped_tls[bb69e3a6d2f6d65b]::ScopedKey<rustc_span[ccb95ac7a2fc6855]::SessionGlobals>>::set::<rustc_interface[91934f1a0e4f5512]::interface::run_compiler<core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>, rustc_driver[5beba0b70548b2dd]::run_compiler::{closure#1}>::{closure#0}, core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>>
  70:        0x1096845c8 - std[53d1f35d9b0e90f6]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[91934f1a0e4f5512]::util::run_in_thread_pool_with_globals<rustc_interface[91934f1a0e4f5512]::interface::run_compiler<core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>, rustc_driver[5beba0b70548b2dd]::run_compiler::{closure#1}>::{closure#0}, core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>>::{closure#0}, core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>>
  71:        0x10966e3c8 - <<std[53d1f35d9b0e90f6]::thread::Builder>::spawn_unchecked_<rustc_interface[91934f1a0e4f5512]::util::run_in_thread_pool_with_globals<rustc_interface[91934f1a0e4f5512]::interface::run_compiler<core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>, rustc_driver[5beba0b70548b2dd]::run_compiler::{closure#1}>::{closure#0}, core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>>::{closure#0}, core[c7453568e13111fb]::result::Result<(), rustc_errors[1284ca2c86f31157]::ErrorGuaranteed>>::{closure#1} as core[c7453568e13111fb]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  72:        0x101847004 - std::sys::unix::thread::Thread::new::thread_start::h4b9b9390896f4937
  73:        0x1bd2dc26c - __pthread_deallocate

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 (a24a020e6 2022-10-18) running on aarch64-apple-darwin

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

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

query stack during panic:
#0 [mir_borrowck] borrow-checking `<impl at src/main.rs:7:1: 7:19>::do_something::{closure#0}`
#1 [mir_borrowck] borrow-checking `<impl at src/main.rs:7:1: 7:19>::do_something`
#2 [type_of] computing type of `<impl at src/main.rs:7:1: 7:19>::do_something::{opaque#0}`
#3 [check_mod_item_types] checking item types in top-level module
#4 [analysis] running analysis passes on this crate
end of query stack

Metadata

Metadata

Labels

C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions