Skip to content

ICE: broken MIR in AsyncDropGlue( #141761

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

Open
matthiaskrgr opened this issue May 30, 2025 · 1 comment
Open

ICE: broken MIR in AsyncDropGlue( #141761

matthiaskrgr opened this issue May 30, 2025 · 1 comment
Labels
C-bug Category: This is a bug. F-async_drop `#![feature(async_drop)]` I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@matthiaskrgr
Copy link
Member

Code

//@ compile-flags: --edition=2024 -Zlint-mir

#![feature(async_drop)]
type BoxFuture<T> = std::pin::Pin<Box<dyn Future<Output = T>>>;
fn main() {}
async fn f() {
    run("").await
}
struct InMemoryStorage;
struct User<'dep> {
    dep: &'dep str,
}
impl<'a> StorageRequest<InMemoryStorage> for SaveUser<'a> {
    fn execute(&self) -> BoxFuture<Result<(), String>> {
        todo!()
    }
}
trait Storage {
    type Error;
}
impl Storage for InMemoryStorage {
    type Error = String;
}
trait StorageRequestReturnType {
    type Output;
}
trait StorageRequest<S: Storage>: StorageRequestReturnType {
    fn execute(&self) -> BoxFuture<Result<<Self>::Output, S::Error>>;
}
struct SaveUser<'a> {
    name: &'a str,
}
impl<'a> StorageRequestReturnType for SaveUser<'a> {
    type Output = ();
}
impl<'dep> User<'dep> {
    async fn save<S>(self)
    where
        S: Storage,
        for<'a> SaveUser<'a>: StorageRequest<S>,
    {
        SaveUser { name: "" }.execute().await;
    }
}
async fn run<S>(dep: &str)
where
    S: Storage,
    for<'a> SaveUser<'a>: StorageRequest<S>,
{
    User { dep }.save().await
}

Meta

rustc --version --verbose:

rustc 1.89.0-nightly (1bbd62e54 2025-05-29)
binary: rustc
commit-hash: 1bbd62e547ba5cc08ccb44c27def3d33195d2dd5
commit-date: 2025-05-29
host: x86_64-unknown-linux-gnu
release: 1.89.0-nightly
LLVM version: 20.1.5

Error output

warning: the feature `async_drop` is incomplete and may not be safe to use and/or cause compiler crashes
 --> code.rs:3:12
  |
3 | #![feature(async_drop)]
  |            ^^^^^^^^^^
  |
  = note: see issue #126482 <https://github.com/rust-lang/rust/issues/126482> for more information
  = note: `#[warn(incomplete_features)]` on by default

warning: type alias `BoxFuture` is never used
 --> code.rs:4:6
  |
4 | type BoxFuture<T> = std::pin::Pin<Box<dyn Future<Output = T>>>;
  |      ^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: function `f` is never used
 --> code.rs:6:10
  |
6 | async fn f() {
  |          ^

warning: struct `InMemoryStorage` is never constructed
 --> code.rs:9:8
  |
9 | struct InMemoryStorage;
  |        ^^^^^^^^^^^^^^^

warning: struct `User` is never constructed
  --> code.rs:10:8
   |
10 | struct User<'dep> {
   |        ^^^^

warning: trait `Storage` is never used
  --> code.rs:18:7
   |
18 | trait Storage {
   |       ^^^^^^^

warning: trait `StorageRequestReturnType` is never used
  --> code.rs:24:7
   |
24 | trait StorageRequestReturnType {
   |       ^^^^^^^^^^^^^^^^^^^^^^^^

warning: trait `StorageRequest` is never used
  --> code.rs:27:7
   |
27 | trait StorageRequest<S: Storage>: StorageRequestReturnType {
   |       ^^^^^^^^^^^^^^

warning: struct `SaveUser` is never constructed
  --> code.rs:30:8
   |
30 | struct SaveUser<'a> {
   |        ^^^^^^^^

warning: method `save` is never used
  --> code.rs:37:14
   |
36 | impl<'dep> User<'dep> {
   | --------------------- method in this implementation
37 |     async fn save<S>(self)
   |              ^^^^

warning: function `run` is never used
  --> code.rs:45:10
   |
45 | async fn run<S>(dep: &str)
   |          ^^^

warning: unused `Result` that must be used
  --> code.rs:42:9
   |
42 |         SaveUser { name: "" }.execute().await;
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: this `Result` may be an `Err` variant, which should be handled
   = note: `#[warn(unused_must_use)]` on by default
help: use `let _ = ...` to ignore the resulting value
   |
42 |         let _ = SaveUser { name: "" }.execute().await;
   |         +++++++

warning: 12 warnings emitted
Backtrace

note: no errors encountered even though delayed bugs were created

note: those delayed bugs will now be shown as internal compiler errors

error: internal compiler error: broken MIR in Item(DefId(0:8 ~ code[a16f]::f::{closure#0})) (after pass AbortUnwindingCalls) at bb21[0]:
                                StorageLive(_56) which already has storage here
 --> code.rs:6:14
  |
6 |   async fn f() {
  |  ______________^
7 | |     run("").await
8 | | }
  | |_^
  |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:96:26
         0: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         1: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         2: <rustc_span::ErrorGuaranteed as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
         3: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         4: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         5: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_statement
         6: rustc_mir_transform::lint::lint_body
         7: rustc_mir_transform::pass_manager::run_passes_inner
         8: <rustc_mir_transform::coroutine::StateTransform as rustc_mir_transform::pass_manager::MirPass>::run_pass
         9: rustc_mir_transform::run_analysis_to_runtime_passes
        10: rustc_mir_transform::mir_drops_elaborated_and_const_checked
        11: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        12: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        13: rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
        14: rustc_mir_transform::optimized_mir
        15: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        16: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefIdCache<rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        17: rustc_query_impl::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
        18: <rustc_middle::ty::context::TyCtxt>::coroutine_layout
        19: rustc_ty_utils::layout::layout_of_uncached
        20: rustc_ty_utils::layout::layout_of
        21: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        22: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        23: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        24: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
        25: rustc_mir_transform::run_analysis_to_runtime_passes
        26: rustc_mir_transform::mir_drops_elaborated_and_const_checked
        27: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        28: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        29: rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
        30: rustc_interface::passes::run_required_analyses
        31: rustc_interface::passes::analysis
        32: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 0]>>
        33: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 0]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        34: rustc_query_impl::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
        35: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
        36: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        37: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        38: <<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        39: std::sys::pal::unix::thread::Thread::new::thread_start
        40: <unknown>
        41: <unknown>
 --> code.rs:6:14
  |
6 |   async fn f() {
  |  ______________^
7 | |     run("").await
8 | | }
  | |_^

error: internal compiler error: broken MIR in Item(DefId(0:8 ~ code[a16f]::f::{closure#0})) (after pass AbortUnwindingCalls) at bb4[2]:
                                local _47 still has storage when returning from function
 --> code.rs:6:14
  |
6 |   async fn f() {
  |  ______________^
7 | |     run("").await
8 | | }
  | |_^
  |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:115:34
         0: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         1: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         2: <rustc_span::ErrorGuaranteed as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
         3: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         4: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         5: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         6: rustc_mir_transform::lint::lint_body
         7: rustc_mir_transform::pass_manager::run_passes_inner
         8: <rustc_mir_transform::coroutine::StateTransform as rustc_mir_transform::pass_manager::MirPass>::run_pass
         9: rustc_mir_transform::run_analysis_to_runtime_passes
        10: rustc_mir_transform::mir_drops_elaborated_and_const_checked
        11: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        12: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        13: rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
        14: rustc_mir_transform::optimized_mir
        15: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        16: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefIdCache<rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        17: rustc_query_impl::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
        18: <rustc_middle::ty::context::TyCtxt>::coroutine_layout
        19: rustc_ty_utils::layout::layout_of_uncached
        20: rustc_ty_utils::layout::layout_of
        21: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        22: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        23: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        24: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
        25: rustc_mir_transform::run_analysis_to_runtime_passes
        26: rustc_mir_transform::mir_drops_elaborated_and_const_checked
        27: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        28: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        29: rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
        30: rustc_interface::passes::run_required_analyses
        31: rustc_interface::passes::analysis
        32: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 0]>>
        33: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 0]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        34: rustc_query_impl::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
        35: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
        36: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        37: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        38: <<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        39: std::sys::pal::unix::thread::Thread::new::thread_start
        40: <unknown>
        41: <unknown>
 --> code.rs:6:14
  |
6 |   async fn f() {
  |  ______________^
7 | |     run("").await
8 | | }
  | |_^
...
...
...
...
...
error: internal compiler error: broken MIR in AsyncDropGlue(DefId(2:15392 ~ core[50b5]::future::async_drop::async_drop_in_place::{closure#0}), Coroutine(DefId(2:15392 ~ core[50b5]::future::async_drop::async_drop_in_place::{closure#0}), [std::result::Result<(), std::string::String>, (), std::future::ResumeTy, (), (), CoroutineWitness(DefId(2:15392 ~ core[50b5]::future::async_drop::async_drop_in_place::{closure#0}), [std::result::Result<(), std::string::String>]), (*mut std::result::Result<(), std::string::String>,)])) (after pass AbortUnwindingCalls) at bb6[0]:
                                StorageLive(_26) which already has storage here
  --> /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/async_drop.rs:46:70
   |
46 |   pub async unsafe fn async_drop_in_place<T: ?Sized>(_to_drop: *mut T) {
   |  ______________________________________________________________________^
...  |
49 | | }
   | |_^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:96:26
         0: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         1: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         2: <rustc_span::ErrorGuaranteed as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
         3: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         4: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         5: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_statement
         6: rustc_mir_transform::lint::lint_body
         7: rustc_mir_transform::pass_manager::run_passes_inner
         8: <rustc_mir_transform::coroutine::StateTransform as rustc_mir_transform::pass_manager::MirPass>::run_pass
         9: rustc_mir_transform::pass_manager::run_passes_inner
        10: rustc_mir_transform::shim::make_shim
        11: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::mir_shims::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        12: <rustc_query_impl::query_impl::mir_shims::dynamic_query::{closure#2} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_middle::ty::instance::InstanceKind)>>::call_once
        13: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::instance::InstanceKind, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        14: rustc_query_impl::query_impl::mir_shims::get_query_non_incr::__rust_end_short_backtrace
        15: <rustc_middle::ty::context::TyCtxt>::coroutine_layout
        16: rustc_ty_utils::layout::layout_of_uncached
        17: rustc_ty_utils::layout::layout_of
        18: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        19: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        20: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        21: rustc_ty_utils::layout::layout_of_uncached
        22: rustc_ty_utils::layout::layout_of
        23: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        24: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        25: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        26: rustc_ty_utils::layout::layout_of_uncached
        27: rustc_ty_utils::layout::layout_of
        28: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        29: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        30: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        31: rustc_ty_utils::layout::layout_of
        32: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        33: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        34: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        35: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
        36: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
        37: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>
        38: rustc_ty_utils::layout::layout_of_uncached
        39: rustc_ty_utils::layout::layout_of
        40: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        41: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        42: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        43: rustc_ty_utils::layout::layout_of_uncached
        44: rustc_ty_utils::layout::layout_of
        45: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        46: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        47: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        48: rustc_ty_utils::layout::layout_of_uncached
        49: rustc_ty_utils::layout::layout_of
        50: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        51: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        52: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        53: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
        54: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
        55: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>
        56: rustc_ty_utils::layout::layout_of_uncached
        57: rustc_ty_utils::layout::layout_of
        58: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        59: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        60: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        61: rustc_ty_utils::layout::layout_of_uncached
        62: rustc_ty_utils::layout::layout_of
        63: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        64: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        65: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        66: rustc_ty_utils::layout::layout_of_uncached
        67: rustc_ty_utils::layout::layout_of
        68: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        69: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        70: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        71: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
        72: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
        73: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>
        74: rustc_ty_utils::layout::layout_of_uncached
        75: rustc_ty_utils::layout::layout_of
        76: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        77: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        78: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        79: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
        80: rustc_mir_transform::run_analysis_to_runtime_passes
        81: rustc_mir_transform::mir_drops_elaborated_and_const_checked
        82: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        83: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        84: rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
        85: rustc_interface::passes::run_required_analyses
        86: rustc_interface::passes::analysis
        87: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 0]>>
        88: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 0]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        89: rustc_query_impl::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
        90: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
        91: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        92: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        93: <<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        94: std::sys::pal::unix::thread::Thread::new::thread_start
        95: <unknown>
        96: <unknown>
  --> /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/async_drop.rs:46:70
   |
46 |   pub async unsafe fn async_drop_in_place<T: ?Sized>(_to_drop: *mut T) {
   |  ______________________________________________________________________^
...  |
49 | | }
   | |_^

error: internal compiler error: broken MIR in AsyncDropGlue(DefId(2:15392 ~ core[50b5]::future::async_drop::async_drop_in_place::{closure#0}), Coroutine(DefId(2:15392 ~ core[50b5]::future::async_drop::async_drop_in_place::{closure#0}), [std::result::Result<(), std::string::String>, (), std::future::ResumeTy, (), (), CoroutineWitness(DefId(2:15392 ~ core[50b5]::future::async_drop::async_drop_in_place::{closure#0}), [std::result::Result<(), std::string::String>]), (*mut std::result::Result<(), std::string::String>,)])) (after pass AbortUnwindingCalls) at bb1[3]:
                                local _22 still has storage when returning from function
  --> /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/async_drop.rs:46:70
   |
46 |   pub async unsafe fn async_drop_in_place<T: ?Sized>(_to_drop: *mut T) {
   |  ______________________________________________________________________^
...  |
49 | | }
   | |_^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:115:34
         0: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         1: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         2: <rustc_span::ErrorGuaranteed as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
         3: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         4: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         5: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         6: rustc_mir_transform::lint::lint_body
         7: rustc_mir_transform::pass_manager::run_passes_inner
         8: <rustc_mir_transform::coroutine::StateTransform as rustc_mir_transform::pass_manager::MirPass>::run_pass
         9: rustc_mir_transform::pass_manager::run_passes_inner
        10: rustc_mir_transform::shim::make_shim
        11: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::mir_shims::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        12: <rustc_query_impl::query_impl::mir_shims::dynamic_query::{closure#2} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_middle::ty::instance::InstanceKind)>>::call_once
        13: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::instance::InstanceKind, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        14: rustc_query_impl::query_impl::mir_shims::get_query_non_incr::__rust_end_short_backtrace
        15: <rustc_middle::ty::context::TyCtxt>::coroutine_layout
        16: rustc_ty_utils::layout::layout_of_uncached
        17: rustc_ty_utils::layout::layout_of
        18: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        19: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        20: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        21: rustc_ty_utils::layout::layout_of_uncached
        22: rustc_ty_utils::layout::layout_of
        23: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        24: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        25: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        26: rustc_ty_utils::layout::layout_of_uncached
        27: rustc_ty_utils::layout::layout_of
        28: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        29: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        30: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        31: rustc_ty_utils::layout::layout_of
        32: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        33: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        34: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        35: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
        36: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
        37: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>
        38: rustc_ty_utils::layout::layout_of_uncached
        39: rustc_ty_utils::layout::layout_of
        40: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        41: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        42: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        43: rustc_ty_utils::layout::layout_of_uncached
        44: rustc_ty_utils::layout::layout_of
        45: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        46: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        47: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        48: rustc_ty_utils::layout::layout_of_uncached
        49: rustc_ty_utils::layout::layout_of
        50: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        51: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        52: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        53: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
        54: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
        55: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>
        56: rustc_ty_utils::layout::layout_of_uncached
        57: rustc_ty_utils::layout::layout_of
        58: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        59: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        60: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        61: rustc_ty_utils::layout::layout_of_uncached
        62: rustc_ty_utils::layout::layout_of
        63: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        64: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        65: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        66: rustc_ty_utils::layout::layout_of_uncached
        67: rustc_ty_utils::layout::layout_of
        68: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        69: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        70: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        71: <rustc_middle::ty::layout::LayoutCx as rustc_middle::ty::layout::LayoutOf>::spanned_layout_of
        72: <core::iter::adapters::GenericShunt<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>> as core::iter::traits::iterator::Iterator>::next
        73: core::iter::adapters::try_process::<core::iter::adapters::by_ref_sized::ByRefSized<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}>>, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>, core::result::Result<core::convert::Infallible, &rustc_middle::ty::layout::LayoutError>, <core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::mir::query::CoroutineSavedTy>, rustc_ty_utils::layout::layout_of_uncached::{closure#12}> as core::iter::traits::iterator::Iterator>::try_collect<rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>::{closure#0}, rustc_index::vec::IndexVec<rustc_middle::mir::query::CoroutineSavedLocal, rustc_abi::layout::ty::TyAndLayout<rustc_middle::ty::Ty>>>
        74: rustc_ty_utils::layout::layout_of_uncached
        75: rustc_ty_utils::layout::layout_of
        76: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 16]>>
        77: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::PseudoCanonicalInput<rustc_middle::ty::Ty>, rustc_middle::query::erase::Erased<[u8; 16]>>, false, true, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        78: rustc_query_impl::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
        79: <rustc_mir_transform::known_panics_lint::KnownPanicsLint as rustc_mir_transform::pass_manager::MirLint>::run_lint
        80: rustc_mir_transform::run_analysis_to_runtime_passes
        81: rustc_mir_transform::mir_drops_elaborated_and_const_checked
        82: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
        83: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_data_structures::vec_cache::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        84: rustc_query_impl::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
        85: rustc_interface::passes::run_required_analyses
        86: rustc_interface::passes::analysis
        87: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 0]>>
        88: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 0]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
        89: rustc_query_impl::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
        90: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
        91: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        92: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        93: <<std::thread::Builder>::spawn_unchecked_<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        94: std::sys::pal::unix::thread::Thread::new::thread_start
        95: <unknown>
        96: <unknown>
  --> /home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/future/async_drop.rs:46:70
   |
46 |   pub async unsafe fn async_drop_in_place<T: ?Sized>(_to_drop: *mut T) {
   |  ______________________________________________________________________^
...  |
49 | | }
   | |_^

..
..
..

@matthiaskrgr matthiaskrgr added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. C-bug Category: This is a bug. labels May 30, 2025
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label May 30, 2025
@matthiaskrgr matthiaskrgr added the F-async_drop `#![feature(async_drop)]` label May 30, 2025
@matthiaskrgr
Copy link
Member Author

since #123948

@jieyouxu jieyouxu removed the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label May 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug. F-async_drop `#![feature(async_drop)]` I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

3 participants