Skip to content

drop-tracking: ICE when using default struct update syntax #98476

Description

@jyn514

cc #97331, @eholk. Minimized from https://crater-reports.s3.amazonaws.com/pr-97334/try%23615edd3ad1cf6871c977dc900317cb6c2070fd6b/gh/AsuMagic.markov-irc/log.txt in the crater run for #97334.

Code

fn main() {
    let _ = foo();
}

async fn from_config(_: Config) {}

async fn foo() {
    from_config(Config {
        nickname: None,
        ..Default::default()
    })
    .await;
}

#[derive(Default)]
struct Config {
    nickname: Option<Box<u8>>,
}

Meta

rustc --version: 615edd3ad1cf6871c977dc900317cb6c2070fd6b

Error output

error: internal compiler error: compiler/rustc_mir_transform/src/generator.rs:753:13: Broken MIR: generator contains type Config in MIR, but typeck only knows about {ResumeTy, impl Future<Output = ()>, ()} and []
  --> src/main.rs:7:16
   |
7  |   async fn foo() {
   |  ________________^
8  | |     from_config(Config {
9  | |         nickname: None,
10 | |         ..Default::default()
11 | |     })
12 | |     .await;
13 | | }
   | |_^
Backtrace

thread 'rustc' panicked at 'Box<dyn Any>', /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/compiler/rustc_errors/src/lib.rs:1274:9
stack backtrace:
   0:     0x7fd66bab8f4d - std::backtrace_rs::backtrace::libunwind::trace::h48663e6e02482f77
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7fd66bab8f4d - std::backtrace_rs::backtrace::trace_unsynchronized::hd59d5365552a1436
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7fd66bab8f4d - std::sys_common::backtrace::_print_fmt::ha78e5f373355cd4a
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x7fd66bab8f4d - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h1b6548c67a95d5a1
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x7fd66bb14aac - core::fmt::write::hca7ee89651358f58
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/core/src/fmt/mod.rs:1196:17
   5:     0x7fd66baaa6e1 - std::io::Write::write_fmt::h4bbc99e2a7952e78
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/io/mod.rs:1654:15
   6:     0x7fd66babbc35 - std::sys_common::backtrace::_print::h26a0e5520b381b04
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x7fd66babbc35 - std::sys_common::backtrace::print::h743a45291d5f39cc
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x7fd66babbc35 - std::panicking::default_hook::{{closure}}::hf1e2b39dfd75cbc2
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/panicking.rs:295:22
   9:     0x7fd66babb956 - std::panicking::default_hook::h347898a158e52020
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/panicking.rs:314:9
  10:     0x7fd66c282d11 - rustc_driver[2c8e23c1704d1846]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0x7fd66babc30a - std::panicking::rust_panic_with_hook::h3cc7233c1fa5669e
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/panicking.rs:702:17
  12:     0x7fd66c44acf1 - std[23f59d9749713536]::panicking::begin_panic::<rustc_errors[4317dacdbe7ee454]::ExplicitBug>::{closure#0}
  13:     0x7fd66c447296 - std[23f59d9749713536]::sys_common::backtrace::__rust_end_short_backtrace::<std[23f59d9749713536]::panicking::begin_panic<rustc_errors[4317dacdbe7ee454]::ExplicitBug>::{closure#0}, !>
  14:     0x7fd66c45d946 - std[23f59d9749713536]::panicking::begin_panic::<rustc_errors[4317dacdbe7ee454]::ExplicitBug>
  15:     0x7fd66c446546 - std[23f59d9749713536]::panic::panic_any::<rustc_errors[4317dacdbe7ee454]::ExplicitBug>
  16:     0x7fd66c4445a1 - <rustc_errors[4317dacdbe7ee454]::HandlerInner>::span_bug::<rustc_span[e0494e7a78d29b23]::span_encoding::Span, &alloc[444af299f81eecf5]::string::String>
  17:     0x7fd66c4439b0 - <rustc_errors[4317dacdbe7ee454]::Handler>::span_bug::<rustc_span[e0494e7a78d29b23]::span_encoding::Span, &alloc[444af299f81eecf5]::string::String>
  18:     0x7fd66c493fb8 - rustc_middle[8b88f8a0f89f93bb]::ty::context::tls::with_opt::<rustc_middle[8b88f8a0f89f93bb]::util::bug::opt_span_bug_fmt<rustc_span[e0494e7a78d29b23]::span_encoding::Span>::{closure#0}, ()>
  19:     0x7fd66c493b86 - rustc_middle[8b88f8a0f89f93bb]::util::bug::opt_span_bug_fmt::<rustc_span[e0494e7a78d29b23]::span_encoding::Span>
  20:     0x7fd66c493b44 - rustc_middle[8b88f8a0f89f93bb]::util::bug::span_bug_fmt::<rustc_span[e0494e7a78d29b23]::span_encoding::Span>
  21:     0x7fd66d6982aa - <rustc_mir_transform[63cdf027e05c8c75]::generator::StateTransform as rustc_middle[8b88f8a0f89f93bb]::mir::MirPass>::run_pass
  22:     0x7fd66d6894d0 - rustc_mir_transform[63cdf027e05c8c75]::pass_manager::run_passes
  23:     0x7fd66d6ddeed - rustc_mir_transform[63cdf027e05c8c75]::optimized_mir
  24:     0x7fd66e7e44a7 - <rustc_query_system[8f6ed9285397c37a]::dep_graph::graph::DepGraph<rustc_middle[8b88f8a0f89f93bb]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[8b88f8a0f89f93bb]::ty::context::TyCtxt, rustc_span[e0494e7a78d29b23]::def_id::DefId, &rustc_middle[8b88f8a0f89f93bb]::mir::Body>
  25:     0x7fd66dd93b9d - rustc_query_system[8f6ed9285397c37a]::query::plumbing::try_execute_query::<rustc_query_impl[362fa764a08dc22]::plumbing::QueryCtxt, rustc_query_system[8f6ed9285397c37a]::query::caches::DefaultCache<rustc_span[e0494e7a78d29b23]::def_id::DefId, &rustc_middle[8b88f8a0f89f93bb]::mir::Body>>
  26:     0x7fd66cc3c837 - rustc_query_system[8f6ed9285397c37a]::query::plumbing::force_query::<rustc_query_impl[362fa764a08dc22]::queries::optimized_mir, rustc_query_impl[362fa764a08dc22]::plumbing::QueryCtxt>
  27:     0x7fd66ccec7b4 - rustc_query_impl[362fa764a08dc22]::query_callbacks::optimized_mir::force_from_dep_node
  28:     0x7fd66e1c4dc1 - <rustc_middle[8b88f8a0f89f93bb]::ty::context::TyCtxt as rustc_query_system[8f6ed9285397c37a]::dep_graph::DepContext>::try_force_from_dep_node
  29:     0x7fd66dd0725e - <rustc_query_system[8f6ed9285397c37a]::dep_graph::graph::DepGraph<rustc_middle[8b88f8a0f89f93bb]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[362fa764a08dc22]::plumbing::QueryCtxt>
  30:     0x7fd66dd0722c - <rustc_query_system[8f6ed9285397c37a]::dep_graph::graph::DepGraph<rustc_middle[8b88f8a0f89f93bb]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[362fa764a08dc22]::plumbing::QueryCtxt>
  31:     0x7fd66dd0722c - <rustc_query_system[8f6ed9285397c37a]::dep_graph::graph::DepGraph<rustc_middle[8b88f8a0f89f93bb]::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl[362fa764a08dc22]::plumbing::QueryCtxt>
  32:     0x7fd66ddd1318 - rustc_query_system[8f6ed9285397c37a]::query::plumbing::get_query::<rustc_query_impl[362fa764a08dc22]::queries::layout_of, rustc_query_impl[362fa764a08dc22]::plumbing::QueryCtxt>
  33:     0x7fd66dd60fd0 - <rustc_query_impl[362fa764a08dc22]::Queries as rustc_middle[8b88f8a0f89f93bb]::ty::query::QueryEngine>::layout_of
  34:     0x7fd66d6cac58 - <rustc_mir_transform[63cdf027e05c8c75]::const_prop_lint::ConstProp as rustc_mir_transform[63cdf027e05c8c75]::pass_manager::MirLint>::run_lint
  35:     0x7fd66d6894d0 - rustc_mir_transform[63cdf027e05c8c75]::pass_manager::run_passes
  36:     0x7fd66d6dcaf8 - rustc_mir_transform[63cdf027e05c8c75]::mir_drops_elaborated_and_const_checked
  37:     0x7fd66e7cc85c - <rustc_query_system[8f6ed9285397c37a]::dep_graph::graph::DepGraph<rustc_middle[8b88f8a0f89f93bb]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[8b88f8a0f89f93bb]::ty::context::TyCtxt, rustc_middle[8b88f8a0f89f93bb]::ty::WithOptConstParam<rustc_span[e0494e7a78d29b23]::def_id::LocalDefId>, &rustc_data_structures[10bde15a730ca175]::steal::Steal<rustc_middle[8b88f8a0f89f93bb]::mir::Body>>
  38:     0x7fd66dd70688 - rustc_query_system[8f6ed9285397c37a]::query::plumbing::try_execute_query::<rustc_query_impl[362fa764a08dc22]::plumbing::QueryCtxt, rustc_query_system[8f6ed9285397c37a]::query::caches::DefaultCache<rustc_middle[8b88f8a0f89f93bb]::ty::WithOptConstParam<rustc_span[e0494e7a78d29b23]::def_id::LocalDefId>, &rustc_data_structures[10bde15a730ca175]::steal::Steal<rustc_middle[8b88f8a0f89f93bb]::mir::Body>>>
  39:     0x7fd66dd5e8b8 - <rustc_query_impl[362fa764a08dc22]::Queries as rustc_middle[8b88f8a0f89f93bb]::ty::query::QueryEngine>::mir_drops_elaborated_and_const_checked
  40:     0x7fd66d6ddd5c - rustc_mir_transform[63cdf027e05c8c75]::optimized_mir
  41:     0x7fd66e7e44a7 - <rustc_query_system[8f6ed9285397c37a]::dep_graph::graph::DepGraph<rustc_middle[8b88f8a0f89f93bb]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[8b88f8a0f89f93bb]::ty::context::TyCtxt, rustc_span[e0494e7a78d29b23]::def_id::DefId, &rustc_middle[8b88f8a0f89f93bb]::mir::Body>
  42:     0x7fd66dd93b9d - rustc_query_system[8f6ed9285397c37a]::query::plumbing::try_execute_query::<rustc_query_impl[362fa764a08dc22]::plumbing::QueryCtxt, rustc_query_system[8f6ed9285397c37a]::query::caches::DefaultCache<rustc_span[e0494e7a78d29b23]::def_id::DefId, &rustc_middle[8b88f8a0f89f93bb]::mir::Body>>
  43:     0x7fd66dd5eb5e - <rustc_query_impl[362fa764a08dc22]::Queries as rustc_middle[8b88f8a0f89f93bb]::ty::query::QueryEngine>::optimized_mir
  44:     0x7fd66e1f0d85 - <rustc_middle[8b88f8a0f89f93bb]::ty::context::TyCtxt>::instance_mir
  45:     0x7fd66d659e05 - rustc_monomorphize[7d37f3bf7209d2f1]::collector::collect_neighbours
  46:     0x7fd66d656762 - rustc_monomorphize[7d37f3bf7209d2f1]::collector::collect_items_rec
  47:     0x7fd66e4a9fbb - <rustc_session[cbae6b27f1b96b52]::session::Session>::time::<(), rustc_monomorphize[7d37f3bf7209d2f1]::collector::collect_crate_mono_items::{closure#1}>
  48:     0x7fd66e49efeb - rustc_monomorphize[7d37f3bf7209d2f1]::collector::collect_crate_mono_items
  49:     0x7fd66e4a5c36 - rustc_monomorphize[7d37f3bf7209d2f1]::partitioning::collect_and_partition_mono_items
  50:     0x7fd66cb525d8 - <rustc_middle[8b88f8a0f89f93bb]::dep_graph::dep_node::DepKind as rustc_query_system[8f6ed9285397c37a]::dep_graph::DepKind>::with_deps::<<rustc_query_system[8f6ed9285397c37a]::dep_graph::graph::DepGraph<rustc_middle[8b88f8a0f89f93bb]::dep_graph::dep_node::DepKind>>::with_task_impl<rustc_middle[8b88f8a0f89f93bb]::ty::context::TyCtxt, (), (&std[23f59d9749713536]::collections::hash::set::HashSet<rustc_span[e0494e7a78d29b23]::def_id::DefId, core[d4370e29f295d5d]::hash::BuildHasherDefault<rustc_hash[e6f0752b427bcd09]::FxHasher>>, &[rustc_middle[8b88f8a0f89f93bb]::mir::mono::CodegenUnit])>::{closure#0}, (&std[23f59d9749713536]::collections::hash::set::HashSet<rustc_span[e0494e7a78d29b23]::def_id::DefId, core[d4370e29f295d5d]::hash::BuildHasherDefault<rustc_hash[e6f0752b427bcd09]::FxHasher>>, &[rustc_middle[8b88f8a0f89f93bb]::mir::mono::CodegenUnit])>
  51:     0x7fd66cbcfa81 - <rustc_query_system[8f6ed9285397c37a]::dep_graph::graph::DepGraph<rustc_middle[8b88f8a0f89f93bb]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[8b88f8a0f89f93bb]::ty::context::TyCtxt, (), (&std[23f59d9749713536]::collections::hash::set::HashSet<rustc_span[e0494e7a78d29b23]::def_id::DefId, core[d4370e29f295d5d]::hash::BuildHasherDefault<rustc_hash[e6f0752b427bcd09]::FxHasher>>, &[rustc_middle[8b88f8a0f89f93bb]::mir::mono::CodegenUnit])>
  52:     0x7fd66e8b6a47 - rustc_query_system[8f6ed9285397c37a]::query::plumbing::try_execute_query::<rustc_query_impl[362fa764a08dc22]::plumbing::QueryCtxt, rustc_query_system[8f6ed9285397c37a]::query::caches::DefaultCache<(), (&std[23f59d9749713536]::collections::hash::set::HashSet<rustc_span[e0494e7a78d29b23]::def_id::DefId, core[d4370e29f295d5d]::hash::BuildHasherDefault<rustc_hash[e6f0752b427bcd09]::FxHasher>>, &[rustc_middle[8b88f8a0f89f93bb]::mir::mono::CodegenUnit])>>
  53:     0x7fd66e8ef4b0 - rustc_query_system[8f6ed9285397c37a]::query::plumbing::get_query::<rustc_query_impl[362fa764a08dc22]::queries::collect_and_partition_mono_items, rustc_query_impl[362fa764a08dc22]::plumbing::QueryCtxt>
  54:     0x7fd66e84f042 - <rustc_query_impl[362fa764a08dc22]::Queries as rustc_middle[8b88f8a0f89f93bb]::ty::query::QueryEngine>::collect_and_partition_mono_items
  55:     0x7fd66e37a1f5 - <rustc_codegen_llvm[614e335b7ddb2b7c]::LlvmCodegenBackend as rustc_codegen_ssa[87ec517d1ac920df]::traits::backend::CodegenBackend>::codegen_crate
  56:     0x7fd66e340f77 - <rustc_session[cbae6b27f1b96b52]::session::Session>::time::<alloc[444af299f81eecf5]::boxed::Box<dyn core[d4370e29f295d5d]::any::Any>, rustc_interface[b04e2cdf424baf9e]::passes::start_codegen::{closure#0}>
  57:     0x7fd66e33d38c - <rustc_interface[b04e2cdf424baf9e]::passes::QueryContext>::enter::<<rustc_interface[b04e2cdf424baf9e]::queries::Queries>::ongoing_codegen::{closure#0}::{closure#0}, core[d4370e29f295d5d]::result::Result<alloc[444af299f81eecf5]::boxed::Box<dyn core[d4370e29f295d5d]::any::Any>, rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>>
  58:     0x7fd66e36146f - <rustc_interface[b04e2cdf424baf9e]::queries::Queries>::ongoing_codegen
  59:     0x7fd66e309deb - <rustc_interface[b04e2cdf424baf9e]::interface::Compiler>::enter::<rustc_driver[2c8e23c1704d1846]::run_compiler::{closure#1}::{closure#2}, core[d4370e29f295d5d]::result::Result<core[d4370e29f295d5d]::option::Option<rustc_interface[b04e2cdf424baf9e]::queries::Linker>, rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>>
  60:     0x7fd66e3325af - rustc_span[e0494e7a78d29b23]::with_source_map::<core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>, rustc_interface[b04e2cdf424baf9e]::interface::create_compiler_and_run<core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>, rustc_driver[2c8e23c1704d1846]::run_compiler::{closure#1}>::{closure#1}>
  61:     0x7fd66e31dd94 - rustc_interface[b04e2cdf424baf9e]::interface::create_compiler_and_run::<core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>, rustc_driver[2c8e23c1704d1846]::run_compiler::{closure#1}>
  62:     0x7fd66e3082b2 - <scoped_tls[941ee80d8231eb23]::ScopedKey<rustc_span[e0494e7a78d29b23]::SessionGlobals>>::set::<rustc_interface[b04e2cdf424baf9e]::interface::run_compiler<core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>, rustc_driver[2c8e23c1704d1846]::run_compiler::{closure#1}>::{closure#0}, core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>>
  63:     0x7fd66e31f37f - std[23f59d9749713536]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[b04e2cdf424baf9e]::util::run_in_thread_pool_with_globals<rustc_interface[b04e2cdf424baf9e]::interface::run_compiler<core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>, rustc_driver[2c8e23c1704d1846]::run_compiler::{closure#1}>::{closure#0}, core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>>::{closure#0}, core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>>
  64:     0x7fd66e31f4b9 - <<std[23f59d9749713536]::thread::Builder>::spawn_unchecked_<rustc_interface[b04e2cdf424baf9e]::util::run_in_thread_pool_with_globals<rustc_interface[b04e2cdf424baf9e]::interface::run_compiler<core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>, rustc_driver[2c8e23c1704d1846]::run_compiler::{closure#1}>::{closure#0}, core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>>::{closure#0}, core[d4370e29f295d5d]::result::Result<(), rustc_errors[4317dacdbe7ee454]::ErrorGuaranteed>>::{closure#1} as core[d4370e29f295d5d]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  65:     0x7fd66bac6223 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hae8ffeec5cb662e2
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/alloc/src/boxed.rs:1872:9
  66:     0x7fd66bac6223 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h1b179c7aca9d8b98
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/alloc/src/boxed.rs:1872:9
  67:     0x7fd66bac6223 - std::sys::unix::thread::Thread::new::thread_start::h3faf721b71afff7d
                               at /rustc/615edd3ad1cf6871c977dc900317cb6c2070fd6b/library/std/src/sys/unix/thread.rs:108:17
  68:     0x7fd66b9e1609 - start_thread
                               at /build/glibc-SzIz7B/glibc-2.31/nptl/pthread_create.c:477:8
  69:     0x7fd66b8fa133 - clone
                               at /build/glibc-SzIz7B/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
  70:                0x0 - <unknown>

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

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

note: rustc 1.63.0-nightly (615edd3ad 2022-05-23) running on x86_64-unknown-linux-gnu

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

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

query stack during panic:
#0 [optimized_mir] optimizing MIR for `foo::{closure#0}`
#1 [layout_of] computing layout of `impl core::future::future::Future<Output = ()>`
#2 [mir_drops_elaborated_and_const_checked] elaborating drops for `main`
#3 [optimized_mir] optimizing MIR for `main`
#4 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-async-awaitArea: Async & AwaitAsyncAwait-TriagedAsync-await issues that have been triaged during a working group meeting.C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.glacierICE tracked in rust-lang/glacier.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions