Skip to content

when dependency enable async_drop feature, it cause ICE #140858

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
Sherlock-Holo opened this issue May 9, 2025 · 3 comments
Open

when dependency enable async_drop feature, it cause ICE #140858

Sherlock-Holo opened this issue May 9, 2025 · 3 comments
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) ❄️ requires-incomplete-features This issue requires the use of incomplete features. S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@Sherlock-Holo
Copy link

Code

the lib.rs https://play.rust-lang.org/?version=nightly&mode=debug&edition=2024&gist=e3445d1d48c59d1535129148ff8ff681
the main.rs https://play.rust-lang.org/?version=nightly&mode=debug&edition=2024&gist=71b08ed816421d78b89b213eaedba212

the user_stack crate is a local project and not yet open source, but it enabled the async_drop nightly feature by add dep in Cargo.toml

user_stack = { path = "../user_stack", features = ["async_drop"] }

Meta

rustc --version --verbose:

rustc 1.88.0-nightly (50aa04180 2025-05-08)
binary: rustc
commit-hash: 50aa04180709189a03dde5fd1c05751b2625ed37
commit-date: 2025-05-08
host: x86_64-unknown-linux-gnu
release: 1.88.0-nightly
LLVM version: 20.1.4

Error output

thread 'rustc' panicked at /rustc/50aa04180709189a03dde5fd1c05751b2625ed37/compiler/rustc_span/src/def_id.rs:393:26:
DefId::expect_local: `DefId(56:141 ~ user_stack[92be]::tcp::{impl#3})` isn't local
stack backtrace:
   0:     0x77398a763923 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h35b8f72326f85230
   1:     0x77398ae05c07 - core::fmt::write::h73f5af0fa08ac030
   2:     0x77398bee42d1 - std::io::Write::write_fmt::h0140e0dae4becf43
   3:     0x77398a763782 - std::sys::backtrace::BacktraceLock::print::h2c50f8265df4edf7
   4:     0x77398a76737a - std::panicking::default_hook::{{closure}}::h4f831a137f70e67f
   5:     0x77398a766eff - std::panicking::default_hook::h47af645a18677257
   6:     0x773989795ef3 - std[e444442488e5ea2d]::panicking::update_hook::<alloc[24374ce535a764d]::boxed::Box<rustc_driver_impl[d80da60e87609ad4]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x77398a767bf3 - std::panicking::rust_panic_with_hook::h2b8636e09e17cf97
   8:     0x77398a7678ea - std::panicking::begin_panic_handler::{{closure}}::h21b513d3b95c0c8c
   9:     0x77398a763de9 - std::sys::backtrace::__rust_end_short_backtrace::h1fff5f9fcecd2e0e
  10:     0x77398a7675ad - __rustc[f67a3b4e60d8f4c4]::rust_begin_unwind
  11:     0x773987085ce0 - core::panicking::panic_fmt::h0a5d5e7acfcd4e48
  12:     0x773989d88c58 - <rustc_span[e6282e50b7a97c05]::def_id::LocalDefId as rustc_serialize[c7460d2e773e40d7]::serialize::Decodable<rustc_metadata[7b714db6b508e6c0]::rmeta::decoder::DecodeContext>>::decode
  13:     0x773989d9d77a - rustc_metadata[7b714db6b508e6c0]::rmeta::decoder::cstore_impl::provide_extern::adt_async_destructor
  14:     0x77398c8ab872 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::adt_async_destructor::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 4usize]>>.cold
  15:     0x77398b7f67fd - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefIdCache<rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 4usize]>>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  16:     0x77398b7f60b9 - rustc_query_impl[d196c070bbe03594]::query_impl::adt_async_destructor::get_query_incr::__rust_end_short_backtrace
  17:     0x773989e1e10a - <rustc_middle[dca19e53efad7b1b]::ty::adt::AdtDef>::async_destructor
  18:     0x77398a6f3606 - rustc_ty_utils[76373251995fa178]::needs_drop::needs_async_drop_raw
  19:     0x77398a24847e - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::needs_async_drop_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 1usize]>>
  20:     0x77398a219803 - <rustc_query_impl[d196c070bbe03594]::query_impl::needs_async_drop_raw::dynamic_query::{closure#2} as core[ce1fa00964895ff1]::ops::function::FnOnce<(rustc_middle[dca19e53efad7b1b]::ty::context::TyCtxt, rustc_middle[dca19e53efad7b1b]::ty::PseudoCanonicalInput<rustc_middle[dca19e53efad7b1b]::ty::Ty>)>>::call_once
  21:     0x77398b0a28fa - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefaultCache<rustc_middle[dca19e53efad7b1b]::ty::PseudoCanonicalInput<rustc_middle[dca19e53efad7b1b]::ty::Ty>, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  22:     0x77398a2688eb - rustc_query_impl[d196c070bbe03594]::query_impl::needs_async_drop_raw::get_query_incr::__rust_end_short_backtrace
  23:     0x773989eb1b34 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::is_async_drop_impl
  24:     0x77398b1d7dd1 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::pop_scope
  25:     0x77398ba62a2a - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::ast_block_stmts
  26:     0x77398ba61e2a - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::ast_block
  27:     0x77398b206605 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  28:     0x77398b20ad56 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  29:     0x77398b208c0c - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  30:     0x77398b208564 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  31:     0x77398b1f0c24 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::as_temp::{closure#0}
  32:     0x77398b1dfa9c - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_as_place
  33:     0x77398b1e0164 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_as_place
  34:     0x77398ba00bb7 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::lower_scrutinee
  35:     0x77398ba007e2 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::lower_let_expr
  36:     0x77398c0cf3ec - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::then_else_break_inner
  37:     0x77398c0cee2b - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::then_else_break_inner
  38:     0x77398b2091ea - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  39:     0x77398b208c0c - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  40:     0x77398ba63120 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::ast_block_stmts
  41:     0x77398ba61e2a - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::ast_block
  42:     0x77398b206605 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  43:     0x77398b20ad56 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  44:     0x77398b1f0c24 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::as_temp::{closure#0}
  45:     0x77398b42abbb - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::stmt_expr
  46:     0x77398b42adcd - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::stmt_expr
  47:     0x77398ba629ff - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::ast_block_stmts
  48:     0x77398ba61e2a - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::ast_block
  49:     0x77398b206605 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  50:     0x77398b208c0c - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  51:     0x77398b20a98e - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  52:     0x77398b208c0c - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  53:     0x77398ba63120 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::ast_block_stmts
  54:     0x77398ba61e2a - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::ast_block
  55:     0x77398b206605 - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  56:     0x77398b208c0c - <rustc_mir_build[c5b38e827ba5bd28]::builder::Builder>::expr_into_dest
  57:     0x77398b1d2ccf - rustc_mir_build[c5b38e827ba5bd28]::builder::build_mir
  58:     0x77398ae0a035 - rustc_mir_transform[c6aefdac698137fa]::mir_built
  59:     0x77398ae0a007 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::mir_built::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>>
  60:     0x77398b1ab91a - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_data_structures[c2151ea158282339]::vec_cache::VecCache<rustc_span[e6282e50b7a97c05]::def_id::LocalDefId, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[ff49814a586d4008]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  61:     0x77398b0ab87f - rustc_query_impl[d196c070bbe03594]::query_impl::mir_built::get_query_incr::__rust_end_short_backtrace
  62:     0x77398ae3192f - rustc_mir_transform[c6aefdac698137fa]::ffi_unwind_calls::has_ffi_unwind_calls
  63:     0x77398ae314d9 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::has_ffi_unwind_calls::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 1usize]>>
  64:     0x77398b0a87dd - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_data_structures[c2151ea158282339]::vec_cache::VecCache<rustc_span[e6282e50b7a97c05]::def_id::LocalDefId, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[ff49814a586d4008]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  65:     0x77398b0a817a - rustc_query_impl[d196c070bbe03594]::query_impl::has_ffi_unwind_calls::get_query_incr::__rust_end_short_backtrace
  66:     0x77398867ac11 - rustc_mir_transform[c6aefdac698137fa]::mir_promoted
  67:     0x77398b32c9d2 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::mir_promoted::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 16usize]>>
  68:     0x77398b09d4e7 - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_data_structures[c2151ea158282339]::vec_cache::VecCache<rustc_span[e6282e50b7a97c05]::def_id::LocalDefId, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 16usize]>, rustc_query_system[ff49814a586d4008]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  69:     0x77398b09cc80 - rustc_query_impl[d196c070bbe03594]::query_impl::mir_promoted::get_query_incr::__rust_end_short_backtrace
  70:     0x77398be5fcc1 - rustc_borrowck[283361fc4b34cd2a]::do_mir_borrowck
  71:     0x77398be5c8fe - <rustc_borrowck[283361fc4b34cd2a]::root_cx::BorrowCheckRootCtxt>::get_or_insert_nested
  72:     0x77398b1a9b6f - rustc_borrowck[283361fc4b34cd2a]::mir_borrowck
  73:     0x77398b1a981f - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>>
  74:     0x77398b1ab91a - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_data_structures[c2151ea158282339]::vec_cache::VecCache<rustc_span[e6282e50b7a97c05]::def_id::LocalDefId, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[ff49814a586d4008]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  75:     0x77398b0abc52 - rustc_query_impl[d196c070bbe03594]::query_impl::mir_borrowck::get_query_incr::__rust_end_short_backtrace
  76:     0x77398c07caab - rustc_hir_analysis[e577ebb869d6e7c7]::collect::type_of::opaque::find_opaque_ty_constraints_for_rpit
  77:     0x77398c07c834 - rustc_hir_analysis[e577ebb869d6e7c7]::collect::type_of::type_of_opaque
  78:     0x77398c07c6f7 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::type_of_opaque::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>>
  79:     0x77398b0aed3f - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefIdCache<rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  80:     0x77398c100e8a - rustc_query_impl[d196c070bbe03594]::query_impl::type_of_opaque::get_query_incr::__rust_end_short_backtrace
  81:     0x77398b2411ca - rustc_hir_analysis[e577ebb869d6e7c7]::collect::type_of::type_of
  82:     0x77398b23bb36 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::type_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>>
  83:     0x77398b0aed3f - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefIdCache<rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  84:     0x77398b0aab36 - rustc_query_impl[d196c070bbe03594]::query_impl::type_of::get_query_incr::__rust_end_short_backtrace
  85:     0x77398c07cfd9 - rustc_hir_analysis[e577ebb869d6e7c7]::check::check::check_opaque
  86:     0x77398b2ebfff - rustc_hir_analysis[e577ebb869d6e7c7]::check::check::check_item_type
  87:     0x77398b62c7b7 - rustc_hir_analysis[e577ebb869d6e7c7]::check::wfcheck::check_well_formed
  88:     0x77398b629e4b - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 1usize]>>
  89:     0x77398b0a8b2d - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_data_structures[c2151ea158282339]::vec_cache::VecCache<rustc_span[e6282e50b7a97c05]::def_id::LocalDefId, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[ff49814a586d4008]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  90:     0x77398b0a82b2 - rustc_query_impl[d196c070bbe03594]::query_impl::check_well_formed::get_query_incr::__rust_end_short_backtrace
  91:     0x77398b626b3b - rustc_hir_analysis[e577ebb869d6e7c7]::check::wfcheck::check_mod_type_wf
  92:     0x77398b626595 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 1usize]>>
  93:     0x77398bde6bb1 - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefaultCache<rustc_span[e6282e50b7a97c05]::def_id::LocalModDefId, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  94:     0x77398bde7685 - rustc_query_impl[d196c070bbe03594]::query_impl::check_mod_type_wf::get_query_incr::__rust_end_short_backtrace
  95:     0x77398b1a5ef2 - rustc_hir_analysis[e577ebb869d6e7c7]::check_crate
  96:     0x77398b199237 - rustc_interface[4b2c44076e9c0aea]::passes::run_required_analyses
  97:     0x77398bde8ade - rustc_interface[4b2c44076e9c0aea]::passes::analysis
  98:     0x77398bde8ab5 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 0usize]>>
  99:     0x77398bde3584 - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::SingleCache<rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
 100:     0x77398bde2ea8 - rustc_query_impl[d196c070bbe03594]::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
 101:     0x77398c034b87 - rustc_interface[4b2c44076e9c0aea]::passes::create_and_enter_global_ctxt::<core[ce1fa00964895ff1]::option::Option<rustc_interface[4b2c44076e9c0aea]::queries::Linker>, rustc_driver_impl[d80da60e87609ad4]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
 102:     0x77398bf0b5a6 - rustc_interface[4b2c44076e9c0aea]::interface::run_compiler::<(), rustc_driver_impl[d80da60e87609ad4]::run_compiler::{closure#0}>::{closure#1}
 103:     0x77398bedad7e - std[e444442488e5ea2d]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[4b2c44076e9c0aea]::util::run_in_thread_with_globals<rustc_interface[4b2c44076e9c0aea]::util::run_in_thread_pool_with_globals<rustc_interface[4b2c44076e9c0aea]::interface::run_compiler<(), rustc_driver_impl[d80da60e87609ad4]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
 104:     0x77398bedb1f4 - <<std[e444442488e5ea2d]::thread::Builder>::spawn_unchecked_<rustc_interface[4b2c44076e9c0aea]::util::run_in_thread_with_globals<rustc_interface[4b2c44076e9c0aea]::util::run_in_thread_pool_with_globals<rustc_interface[4b2c44076e9c0aea]::interface::run_compiler<(), rustc_driver_impl[d80da60e87609ad4]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[ce1fa00964895ff1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
 105:     0x77398bedc5eb - std::sys::pal::unix::thread::Thread::new::thread_start::h8985427f793e6fe1
 106:     0x773985ca57eb - <unknown>
 107:     0x773985d2918c - <unknown>
 108:                0x0 - <unknown>

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

note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new?template=ice.yml

note: please make sure that you have updated to the latest nightly

note: please attach the file at `/home/sherlock/git/user_stack_tests/rustc-ice-2025-05-09T15_58_52-637216.txt` to your bug report

note: compiler flags: --crate-type lib -C embed-bitcode=no -C debuginfo=2 -C linker=clang -C incremental=[REDACTED] -C link-arg=-fuse-ld=mold -C target_cpu=x86-64-v2

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

query stack during panic:
#0 [adt_async_destructor] computing `AsyncDrop` impl for `user_stack::tcp::TcpStream`
#1 [needs_async_drop_raw] computing whether `core::task::poll::Poll<core::option::Option<user_stack::tcp::TcpStream<CompioRuntime>>>` needs async drop
... and 9 other queries... use `env RUST_BACKTRACE=1` to see the full query stack
note: Clippy version: clippy 0.1.88 (50aa041807 2025-05-08)

error: could not compile `user_stack_tests` (lib)

Caused by:
  process didn't exit successfully: `/home/sherlock/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/clippy-driver /home/sherlock/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc --crate-name user_stack_tests --edition=2021 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=145 --crate-type lib --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=3a6711b9f7eff165 -C extra-filename=-66fcce6876169693 --out-dir /home/sherlock/git/user_stack_tests/target/debug/deps -C linker=clang -C incremental=/home/sherlock/git/user_stack_tests/target/debug/incremental -L dependency=/home/sherlock/git/user_stack_tests/target/debug/deps --extern bytes=/home/sherlock/git/user_stack_tests/target/debug/deps/libbytes-92e724eac1bcf0ce.rmeta --extern compio=/home/sherlock/git/user_stack_tests/target/debug/deps/libcompio-bd57dee5af941ab9.rmeta --extern futures_util=/home/sherlock/git/user_stack_tests/target/debug/deps/libfutures_util-d306a4b6994ef2bf.rmeta --extern libc=/home/sherlock/git/user_stack_tests/target/debug/deps/liblibc-de4d3989bdb8bc31.rmeta --extern rustix=/home/sherlock/git/user_stack_tests/target/debug/deps/librustix-20d7fc6df9387815.rmeta --extern user_stack=/home/sherlock/git/user_stack_tests/target/debug/deps/libuser_stack-412f67aaa4efeed7.rmeta -C link-arg=-fuse-ld=mold -C target_cpu=x86-64-v2` (exit status: 101)
Backtrace

thread 'rustc' panicked at /rustc/50aa04180709189a03dde5fd1c05751b2625ed37/compiler/rustc_span/src/def_id.rs:393:26:
DefId::expect_local: `DefId(56:141 ~ user_stack[92be]::tcp::{impl#3})` isn't local
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <rustc_span::def_id::LocalDefId as rustc_serialize::serialize::Decodable<rustc_metadata::rmeta::decoder::DecodeContext>>::decode
   3: rustc_metadata::rmeta::decoder::cstore_impl::provide_extern::adt_async_destructor
      [... omitted 1 frame ...]
   4: <rustc_middle::ty::adt::AdtDef>::async_destructor
   5: rustc_ty_utils::needs_drop::needs_async_drop_raw
      [... omitted 2 frames ...]
   6: <rustc_mir_build::builder::Builder>::is_async_drop_impl
   7: <rustc_mir_build::builder::Builder>::pop_scope
   8: <rustc_mir_build::builder::Builder>::ast_block_stmts
   9: <rustc_mir_build::builder::Builder>::ast_block
  10: <rustc_mir_build::builder::Builder>::expr_into_dest
  11: <rustc_mir_build::builder::Builder>::expr_into_dest
  12: <rustc_mir_build::builder::Builder>::expr_into_dest
  13: <rustc_mir_build::builder::Builder>::expr_into_dest
  14: <rustc_mir_build::builder::Builder>::as_temp::{closure#0}
  15: <rustc_mir_build::builder::Builder>::expr_as_place
  16: <rustc_mir_build::builder::Builder>::expr_as_place
  17: <rustc_mir_build::builder::Builder>::lower_scrutinee
  18: <rustc_mir_build::builder::Builder>::lower_let_expr
  19: <rustc_mir_build::builder::Builder>::then_else_break_inner
  20: <rustc_mir_build::builder::Builder>::then_else_break_inner
  21: <rustc_mir_build::builder::Builder>::expr_into_dest
  22: <rustc_mir_build::builder::Builder>::expr_into_dest
  23: <rustc_mir_build::builder::Builder>::ast_block_stmts
  24: <rustc_mir_build::builder::Builder>::ast_block
  25: <rustc_mir_build::builder::Builder>::expr_into_dest
  26: <rustc_mir_build::builder::Builder>::expr_into_dest
  27: <rustc_mir_build::builder::Builder>::as_temp::{closure#0}
  28: <rustc_mir_build::builder::Builder>::stmt_expr
  29: <rustc_mir_build::builder::Builder>::stmt_expr
  30: <rustc_mir_build::builder::Builder>::ast_block_stmts
  31: <rustc_mir_build::builder::Builder>::ast_block
  32: <rustc_mir_build::builder::Builder>::expr_into_dest
  33: <rustc_mir_build::builder::Builder>::expr_into_dest
  34: <rustc_mir_build::builder::Builder>::expr_into_dest
  35: <rustc_mir_build::builder::Builder>::expr_into_dest
  36: <rustc_mir_build::builder::Builder>::ast_block_stmts
  37: <rustc_mir_build::builder::Builder>::ast_block
  38: <rustc_mir_build::builder::Builder>::expr_into_dest
  39: <rustc_mir_build::builder::Builder>::expr_into_dest
  40: rustc_mir_build::builder::build_mir
  41: rustc_mir_transform::mir_built
      [... omitted 1 frame ...]
  42: rustc_mir_transform::ffi_unwind_calls::has_ffi_unwind_calls
      [... omitted 1 frame ...]
  43: rustc_mir_transform::mir_promoted
      [... omitted 1 frame ...]
  44: rustc_borrowck::do_mir_borrowck
  45: <rustc_borrowck::root_cx::BorrowCheckRootCtxt>::get_or_insert_nested
  46: rustc_borrowck::mir_borrowck
      [... omitted 1 frame ...]
  47: rustc_hir_analysis::collect::type_of::opaque::find_opaque_ty_constraints_for_rpit
  48: rustc_hir_analysis::collect::type_of::type_of_opaque
      [... omitted 1 frame ...]
  49: rustc_hir_analysis::collect::type_of::type_of
      [... omitted 1 frame ...]
  50: rustc_hir_analysis::check::check::check_opaque
  51: rustc_hir_analysis::check::check::check_item_type
  52: rustc_hir_analysis::check::wfcheck::check_well_formed
      [... omitted 1 frame ...]
  53: rustc_hir_analysis::check::wfcheck::check_mod_type_wf
      [... omitted 1 frame ...]
  54: rustc_hir_analysis::check_crate
  55: rustc_interface::passes::run_required_analyses
  56: rustc_interface::passes::analysis
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

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

note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new?template=ice.yml

note: please make sure that you have updated to the latest nightly

note: please attach the file at `/home/sherlock/git/user_stack_tests/rustc-ice-2025-05-09T15_59_33-638263.txt` to your bug report

note: compiler flags: --crate-type lib -C embed-bitcode=no -C debuginfo=2 -C linker=clang -C incremental=[REDACTED] -C link-arg=-fuse-ld=mold -C target_cpu=x86-64-v2

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

query stack during panic:
#0 [adt_async_destructor] computing `AsyncDrop` impl for `user_stack::tcp::TcpStream`
#1 [needs_async_drop_raw] computing whether `core::task::poll::Poll<core::option::Option<user_stack::tcp::TcpStream<CompioRuntime>>>` needs async drop
#2 [mir_built] building MIR for `run::{closure#0}`
#3 [has_ffi_unwind_calls] checking if `run::{closure#0}` contains FFI-unwind calls
#4 [mir_promoted] promoting constants in MIR for `run::{closure#0}`
#5 [mir_borrowck] borrow-checking `run`
#6 [type_of_opaque] computing type of opaque `run::{opaque#0}`
#7 [type_of] computing type of `run::{opaque#0}`
#8 [check_well_formed] checking that `run::{opaque#0}` is well-formed
#9 [check_mod_type_wf] checking that types are well-formed in top-level module
#10 [analysis] running analysis passes on this crate
end of query stack
note: Clippy version: clippy 0.1.88 (50aa041807 2025-05-08)

error: could not compile `user_stack_tests` (lib)

Caused by:
  process didn't exit successfully: `/home/sherlock/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/clippy-driver /home/sherlock/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc --crate-name user_stack_tests --edition=2021 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=145 --crate-type lib --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=3a6711b9f7eff165 -C extra-filename=-66fcce6876169693 --out-dir /home/sherlock/git/user_stack_tests/target/debug/deps -C linker=clang -C incremental=/home/sherlock/git/user_stack_tests/target/debug/incremental -L dependency=/home/sherlock/git/user_stack_tests/target/debug/deps --extern bytes=/home/sherlock/git/user_stack_tests/target/debug/deps/libbytes-92e724eac1bcf0ce.rmeta --extern compio=/home/sherlock/git/user_stack_tests/target/debug/deps/libcompio-bd57dee5af941ab9.rmeta --extern futures_util=/home/sherlock/git/user_stack_tests/target/debug/deps/libfutures_util-d306a4b6994ef2bf.rmeta --extern libc=/home/sherlock/git/user_stack_tests/target/debug/deps/liblibc-de4d3989bdb8bc31.rmeta --extern rustix=/home/sherlock/git/user_stack_tests/target/debug/deps/librustix-20d7fc6df9387815.rmeta --extern user_stack=/home/sherlock/git/user_stack_tests/target/debug/deps/libuser_stack-412f67aaa4efeed7.rmeta -C link-arg=-fuse-ld=mold -C target_cpu=x86-64-v2` (exit status: 101)

@Sherlock-Holo Sherlock-Holo 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 9, 2025
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label May 9, 2025
@jieyouxu jieyouxu added F-async_drop `#![feature(async_drop)]` E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example and removed needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. labels May 9, 2025
@Sherlock-Holo
Copy link
Author

Sherlock-Holo commented May 10, 2025

I write a reproducible codes

rustc version

rustc 1.88.0-nightly (50aa04180 2025-05-08)
binary: rustc
commit-hash: 50aa04180709189a03dde5fd1c05751b2625ed37
commit-date: 2025-05-08
host: x86_64-unknown-linux-gnu
release: 1.88.0-nightly
LLVM version: 20.1.4

dep a

lib.rs

// #![cfg_attr(feature = "async_drop", feature(async_drop))]
// #![cfg_attr(feature = "async_drop", allow(incomplete_features))]
#![feature(async_drop)]
#![allow(incomplete_features)]

pub struct St;

impl St {
    pub async fn p(&self) {
        println!("async");
    }
}

impl Drop for St {
    fn drop(&mut self) {
        println!("456")
    }
}

// #[cfg(feature = "async_drop")]
impl std::future::AsyncDrop for St {
    async fn drop(self: std::pin::Pin<&mut Self>) {
        doit().await;
        println!("123");
    }
}

async fn doit() {
    println!("123");
}

project b

Cargo.toml

[package]
name = "b"
version = "0.1.0"
edition = "2024"

[dependencies]
a = { path = "../a" }
tokio = { version = "1.45.0", features = ["rt", "macros"] }

main.rs

#![feature(async_drop)]
#![allow(incomplete_features)]

#[tokio::main(flavor = "current_thread")]
async fn main() {
    doit().await
}

async fn doit() {
    let st = a::St{};

    st.p().await;
}

cargo run will ICE

   Compiling a v0.1.0 (/tmp/ttt/a)
   Compiling b v0.1.0 (/tmp/ttt/b)

thread 'rustc' panicked at /rustc/50aa04180709189a03dde5fd1c05751b2625ed37/compiler/rustc_span/src/def_id.rs:393:26:
DefId::expect_local: `DefId(23:11 ~ a[a3d7]::{impl#2})` isn't local
stack backtrace:
   0:     0x70d626563923 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h35b8f72326f85230
   1:     0x70d626c05c07 - core::fmt::write::h73f5af0fa08ac030
   2:     0x70d627ce42d1 - std::io::Write::write_fmt::h0140e0dae4becf43
   3:     0x70d626563782 - std::sys::backtrace::BacktraceLock::print::h2c50f8265df4edf7
   4:     0x70d62656737a - std::panicking::default_hook::{{closure}}::h4f831a137f70e67f
   5:     0x70d626566eff - std::panicking::default_hook::h47af645a18677257
   6:     0x70d625595ef3 - std[e444442488e5ea2d]::panicking::update_hook::<alloc[24374ce535a764d]::boxed::Box<rustc_driver_impl[d80da60e87609ad4]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x70d626567bf3 - std::panicking::rust_panic_with_hook::h2b8636e09e17cf97
   8:     0x70d6265678ea - std::panicking::begin_panic_handler::{{closure}}::h21b513d3b95c0c8c
   9:     0x70d626563de9 - std::sys::backtrace::__rust_end_short_backtrace::h1fff5f9fcecd2e0e
  10:     0x70d6265675ad - __rustc[f67a3b4e60d8f4c4]::rust_begin_unwind
  11:     0x70d622e85ce0 - core::panicking::panic_fmt::h0a5d5e7acfcd4e48
  12:     0x70d625b88c58 - <rustc_span[e6282e50b7a97c05]::def_id::LocalDefId as rustc_serialize[c7460d2e773e40d7]::serialize::Decodable<rustc_metadata[7b714db6b508e6c0]::rmeta::decoder::DecodeContext>>::decode
  13:     0x70d625b9d77a - rustc_metadata[7b714db6b508e6c0]::rmeta::decoder::cstore_impl::provide_extern::adt_async_destructor
  14:     0x70d6286ab872 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::adt_async_destructor::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 4usize]>>.cold
  15:     0x70d6275f67fd - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefIdCache<rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 4usize]>>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  16:     0x70d6275f60b9 - rustc_query_impl[d196c070bbe03594]::query_impl::adt_async_destructor::get_query_incr::__rust_end_short_backtrace
  17:     0x70d625c1e10a - <rustc_middle[dca19e53efad7b1b]::ty::adt::AdtDef>::async_destructor
  18:     0x70d6264f3606 - rustc_ty_utils[76373251995fa178]::needs_drop::needs_async_drop_raw
  19:     0x70d62604847e - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::needs_async_drop_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 1usize]>>
  20:     0x70d626019803 - <rustc_query_impl[d196c070bbe03594]::query_impl::needs_async_drop_raw::dynamic_query::{closure#2} as core[ce1fa00964895ff1]::ops::function::FnOnce<(rustc_middle[dca19e53efad7b1b]::ty::context::TyCtxt, rustc_middle[dca19e53efad7b1b]::ty::PseudoCanonicalInput<rustc_middle[dca19e53efad7b1b]::ty::Ty>)>>::call_once
  21:     0x70d626ea28fa - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefaultCache<rustc_middle[dca19e53efad7b1b]::ty::PseudoCanonicalInput<rustc_middle[dca19e53efad7b1b]::ty::Ty>, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  22:     0x70d6260688eb - rustc_query_impl[d196c070bbe03594]::query_impl::needs_async_drop_raw::get_query_incr::__rust_end_short_backtrace
  23:     0x70d625d75453 - <rustc_middle[dca19e53efad7b1b]::ty::Ty>::needs_async_drop
  24:     0x70d626fca060 - <rustc_mir_transform[c6aefdac698137fa]::elaborate_drop::DropCtxt<rustc_mir_transform[c6aefdac698137fa]::elaborate_drops::ElaborateDropsCtxt>>::elaborate_drop
  25:     0x70d623326a20 - <rustc_mir_transform[c6aefdac698137fa]::elaborate_drops::ElaborateDrops as rustc_mir_transform[c6aefdac698137fa]::pass_manager::MirPass>::run_pass
  26:     0x70d626c0c403 - rustc_mir_transform[c6aefdac698137fa]::run_analysis_to_runtime_passes
  27:     0x70d6273f7825 - rustc_mir_transform[c6aefdac698137fa]::mir_drops_elaborated_and_const_checked
  28:     0x70d6273f71f5 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>>
  29:     0x70d626fab91a - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_data_structures[c2151ea158282339]::vec_cache::VecCache<rustc_span[e6282e50b7a97c05]::def_id::LocalDefId, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[ff49814a586d4008]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  30:     0x70d626eac292 - rustc_query_impl[d196c070bbe03594]::query_impl::mir_drops_elaborated_and_const_checked::get_query_incr::__rust_end_short_backtrace
  31:     0x70d6277e17d3 - rustc_mir_transform[c6aefdac698137fa]::optimized_mir
  32:     0x70d6277e115d - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>>
  33:     0x70d626eaed3f - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefIdCache<rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  34:     0x70d626eab50a - rustc_query_impl[d196c070bbe03594]::query_impl::optimized_mir::get_query_incr::__rust_end_short_backtrace
  35:     0x70d625c4700e - <rustc_middle[dca19e53efad7b1b]::ty::context::TyCtxt>::coroutine_layout
  36:     0x70d6272c0bc5 - rustc_ty_utils[76373251995fa178]::layout::layout_of_uncached
  37:     0x70d6272b3b8e - rustc_ty_utils[76373251995fa178]::layout::layout_of
  38:     0x70d6272b3aec - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 16usize]>>
  39:     0x70d626e9fd80 - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefaultCache<rustc_middle[dca19e53efad7b1b]::ty::PseudoCanonicalInput<rustc_middle[dca19e53efad7b1b]::ty::Ty>, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  40:     0x70d626e9ea25 - rustc_query_impl[d196c070bbe03594]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  41:     0x70d6272b1356 - <core[ce1fa00964895ff1]::iter::adapters::GenericShunt<core[ce1fa00964895ff1]::iter::adapters::by_ref_sized::ByRefSized<core[ce1fa00964895ff1]::iter::adapters::map::Map<core[ce1fa00964895ff1]::slice::iter::Iter<rustc_middle[dca19e53efad7b1b]::ty::VariantDef>, rustc_ty_utils[76373251995fa178]::layout::layout_of_uncached::{closure#20}>>, core[ce1fa00964895ff1]::result::Result<core[ce1fa00964895ff1]::convert::Infallible, &rustc_middle[dca19e53efad7b1b]::ty::layout::LayoutError>> as core[ce1fa00964895ff1]::iter::traits::iterator::Iterator>::next
  42:     0x70d6272b8e7e - rustc_ty_utils[76373251995fa178]::layout::layout_of_uncached
  43:     0x70d6272b3b8e - rustc_ty_utils[76373251995fa178]::layout::layout_of
  44:     0x70d6272b3aec - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 16usize]>>
  45:     0x70d626e9fd80 - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefaultCache<rustc_middle[dca19e53efad7b1b]::ty::PseudoCanonicalInput<rustc_middle[dca19e53efad7b1b]::ty::Ty>, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  46:     0x70d626e9ea25 - rustc_query_impl[d196c070bbe03594]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  47:     0x70d6272b1706 - <core[ce1fa00964895ff1]::iter::adapters::GenericShunt<core[ce1fa00964895ff1]::iter::adapters::by_ref_sized::ByRefSized<core[ce1fa00964895ff1]::iter::adapters::map::Map<core[ce1fa00964895ff1]::slice::iter::Iter<rustc_middle[dca19e53efad7b1b]::ty::VariantDef>, rustc_ty_utils[76373251995fa178]::layout::layout_of_uncached::{closure#20}>>, core[ce1fa00964895ff1]::result::Result<core[ce1fa00964895ff1]::convert::Infallible, &rustc_middle[dca19e53efad7b1b]::ty::layout::LayoutError>> as core[ce1fa00964895ff1]::iter::traits::iterator::Iterator>::next
  48:     0x70d6272b8e7e - rustc_ty_utils[76373251995fa178]::layout::layout_of_uncached
  49:     0x70d6272b3b8e - rustc_ty_utils[76373251995fa178]::layout::layout_of
  50:     0x70d6272b3aec - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 16usize]>>
  51:     0x70d626e9fd80 - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefaultCache<rustc_middle[dca19e53efad7b1b]::ty::PseudoCanonicalInput<rustc_middle[dca19e53efad7b1b]::ty::Ty>, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  52:     0x70d626e9ea25 - rustc_query_impl[d196c070bbe03594]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  53:     0x70d6272c4249 - <rustc_middle[dca19e53efad7b1b]::ty::layout::LayoutCx as rustc_middle[dca19e53efad7b1b]::ty::layout::LayoutOf>::spanned_layout_of
  54:     0x70d6264cf1c0 - <core[ce1fa00964895ff1]::iter::adapters::GenericShunt<core[ce1fa00964895ff1]::iter::adapters::by_ref_sized::ByRefSized<core[ce1fa00964895ff1]::iter::adapters::map::Map<core[ce1fa00964895ff1]::slice::iter::Iter<rustc_middle[dca19e53efad7b1b]::mir::query::CoroutineSavedTy>, rustc_ty_utils[76373251995fa178]::layout::layout_of_uncached::{closure#12}>>, core[ce1fa00964895ff1]::result::Result<core[ce1fa00964895ff1]::convert::Infallible, &rustc_middle[dca19e53efad7b1b]::ty::layout::LayoutError>> as core[ce1fa00964895ff1]::iter::traits::iterator::Iterator>::next
  55:     0x70d6264b96c6 - core[ce1fa00964895ff1]::iter::adapters::try_process::<core[ce1fa00964895ff1]::iter::adapters::by_ref_sized::ByRefSized<core[ce1fa00964895ff1]::iter::adapters::map::Map<core[ce1fa00964895ff1]::slice::iter::Iter<rustc_middle[dca19e53efad7b1b]::mir::query::CoroutineSavedTy>, rustc_ty_utils[76373251995fa178]::layout::layout_of_uncached::{closure#12}>>, rustc_abi[6596633b036ea052]::layout::ty::TyAndLayout<rustc_middle[dca19e53efad7b1b]::ty::Ty>, core[ce1fa00964895ff1]::result::Result<core[ce1fa00964895ff1]::convert::Infallible, &rustc_middle[dca19e53efad7b1b]::ty::layout::LayoutError>, <core[ce1fa00964895ff1]::iter::adapters::map::Map<core[ce1fa00964895ff1]::slice::iter::Iter<rustc_middle[dca19e53efad7b1b]::mir::query::CoroutineSavedTy>, rustc_ty_utils[76373251995fa178]::layout::layout_of_uncached::{closure#12}> as core[ce1fa00964895ff1]::iter::traits::iterator::Iterator>::try_collect<rustc_index[f822ae2a15e0011d]::vec::IndexVec<rustc_middle[dca19e53efad7b1b]::mir::query::CoroutineSavedLocal, rustc_abi[6596633b036ea052]::layout::ty::TyAndLayout<rustc_middle[dca19e53efad7b1b]::ty::Ty>>>::{closure#0}, rustc_index[f822ae2a15e0011d]::vec::IndexVec<rustc_middle[dca19e53efad7b1b]::mir::query::CoroutineSavedLocal, rustc_abi[6596633b036ea052]::layout::ty::TyAndLayout<rustc_middle[dca19e53efad7b1b]::ty::Ty>>>
  56:     0x70d6272c11e3 - rustc_ty_utils[76373251995fa178]::layout::layout_of_uncached
  57:     0x70d6272b3b8e - rustc_ty_utils[76373251995fa178]::layout::layout_of
  58:     0x70d6272b3aec - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 16usize]>>
  59:     0x70d626e9fd80 - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::DefaultCache<rustc_middle[dca19e53efad7b1b]::ty::PseudoCanonicalInput<rustc_middle[dca19e53efad7b1b]::ty::Ty>, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  60:     0x70d626e9ea25 - rustc_query_impl[d196c070bbe03594]::query_impl::layout_of::get_query_incr::__rust_end_short_backtrace
  61:     0x70d6279fa1d8 - <rustc_mir_transform[c6aefdac698137fa]::known_panics_lint::KnownPanicsLint as rustc_mir_transform[c6aefdac698137fa]::pass_manager::MirLint>::run_lint
  62:     0x70d626c0c403 - rustc_mir_transform[c6aefdac698137fa]::run_analysis_to_runtime_passes
  63:     0x70d6273f7825 - rustc_mir_transform[c6aefdac698137fa]::mir_drops_elaborated_and_const_checked
  64:     0x70d6273f71f5 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>>
  65:     0x70d626fab91a - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_data_structures[c2151ea158282339]::vec_cache::VecCache<rustc_span[e6282e50b7a97c05]::def_id::LocalDefId, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[ff49814a586d4008]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  66:     0x70d626eac292 - rustc_query_impl[d196c070bbe03594]::query_impl::mir_drops_elaborated_and_const_checked::get_query_incr::__rust_end_short_backtrace
  67:     0x70d626f99810 - rustc_interface[4b2c44076e9c0aea]::passes::run_required_analyses
  68:     0x70d627be8ade - rustc_interface[4b2c44076e9c0aea]::passes::analysis
  69:     0x70d627be8ab5 - rustc_query_impl[d196c070bbe03594]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d196c070bbe03594]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 0usize]>>
  70:     0x70d627be3584 - rustc_query_system[ff49814a586d4008]::query::plumbing::try_execute_query::<rustc_query_impl[d196c070bbe03594]::DynamicConfig<rustc_query_system[ff49814a586d4008]::query::caches::SingleCache<rustc_middle[dca19e53efad7b1b]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[d196c070bbe03594]::plumbing::QueryCtxt, true>
  71:     0x70d627be2ea8 - rustc_query_impl[d196c070bbe03594]::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
  72:     0x70d627e34b87 - rustc_interface[4b2c44076e9c0aea]::passes::create_and_enter_global_ctxt::<core[ce1fa00964895ff1]::option::Option<rustc_interface[4b2c44076e9c0aea]::queries::Linker>, rustc_driver_impl[d80da60e87609ad4]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  73:     0x70d627d0b5a6 - rustc_interface[4b2c44076e9c0aea]::interface::run_compiler::<(), rustc_driver_impl[d80da60e87609ad4]::run_compiler::{closure#0}>::{closure#1}
  74:     0x70d627cdad7e - std[e444442488e5ea2d]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[4b2c44076e9c0aea]::util::run_in_thread_with_globals<rustc_interface[4b2c44076e9c0aea]::util::run_in_thread_pool_with_globals<rustc_interface[4b2c44076e9c0aea]::interface::run_compiler<(), rustc_driver_impl[d80da60e87609ad4]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  75:     0x70d627cdb1f4 - <<std[e444442488e5ea2d]::thread::Builder>::spawn_unchecked_<rustc_interface[4b2c44076e9c0aea]::util::run_in_thread_with_globals<rustc_interface[4b2c44076e9c0aea]::util::run_in_thread_pool_with_globals<rustc_interface[4b2c44076e9c0aea]::interface::run_compiler<(), rustc_driver_impl[d80da60e87609ad4]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[ce1fa00964895ff1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  76:     0x70d627cdc5eb - std::sys::pal::unix::thread::Thread::new::thread_start::h8985427f793e6fe1
  77:     0x70d621aa57eb - <unknown>
  78:     0x70d621b2918c - <unknown>
  79:                0x0 - <unknown>

error: 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: please make sure that you have updated to the latest nightly

note: please attach the file at `/tmp/ttt/b/rustc-ice-2025-05-10T05_48_13-1833685.txt` to your bug report

note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -C linker=clang -C incremental=[REDACTED] -C link-arg=-fuse-ld=mold -C target_cpu=x86-64-v2

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

query stack during panic:
#0 [adt_async_destructor] computing `AsyncDrop` impl for `a::St`
#1 [needs_async_drop_raw] computing whether `a::St` needs async drop
... and 8 other queries... use `env RUST_BACKTRACE=1` to see the full query stack
error: could not compile `b` (bin "b")

Caused by:
  process didn't exit successfully: `/home/sherlock/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc --crate-name b --edition=2024 src/main.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=145 --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=6f7941dd60055fe2 -C extra-filename=-e304ba1d01a61156 --out-dir /tmp/ttt/b/target/debug/deps -C linker=clang -C incremental=/tmp/ttt/b/target/debug/incremental -L dependency=/tmp/ttt/b/target/debug/deps --extern a=/tmp/ttt/b/target/debug/deps/liba-adc7ed2ac0bd725f.rlib --extern tokio=/tmp/ttt/b/target/debug/deps/libtokio-ccb4ee9e91330948.rlib -C link-arg=-fuse-ld=mold -C target_cpu=x86-64-v2` (exit status: 101)

@Sherlock-Holo
Copy link
Author

cc @azhogin

@moxian
Copy link
Contributor

moxian commented May 12, 2025

Smaller, and with no deps:

// src/lib.rs
#![feature(async_drop)]
#![allow(incomplete_features)]

pub struct St;

impl Drop for St {
    fn drop(&mut self) { }
}

impl std::future::AsyncDrop for St {
    async fn drop(self: std::pin::Pin<&mut Self>) { }
}
// src/main.rs
#![feature(async_drop)]
#![allow(incomplete_features)]

async fn doit() {
    let st = mycrate::St{};
}

fn main(){}

Same stacktrace and very similar mcve as #140906 , so the two are probably duplicates. (Although this one curiously requires #![feature(async_drop)] in main.rs, whereas the other one doesn't)

@rustbot label: -E-needs-mcve +S-has-mcve +requires-incomplete-features

@rustbot rustbot added requires-incomplete-features This issue requires the use of incomplete features. S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue and removed E-needs-mcve Call for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example labels May 12, 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) ❄️ requires-incomplete-features This issue requires the use of incomplete features. S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue 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

4 participants