Skip to content

Incremental recompilation MIR ICE #110457

Description

@crumblingstatue

See the minimal repro in a comment below.
The original was a repository that wasn't meant to be published (yet).

thread 'rustc' panicked at 'Found unstable fingerprints for mir_built(846f94324a996071-e947a0936904c2fb): Steal { value: RwLock(RefCell { value: Some(Body { basic_blocks: BasicBlocks { basic_blocks: [BasicBlockData { statements: [StorageLive(_3), StorageLive(_4), StorageLive(_5), StorageLive(_6), StorageLive(_7), StorageLive(_8), StorageLive(_9), _9 = [const ""], _8 = &_9, _7 = &(*_8), _6 = move _7 as &[&str] (Pointer(Unsize)), StorageDead(_7), StorageLive(_10), StorageLive(_11), StorageLive(_12), StorageLive(_13), StorageLive(_14), StorageLive(_15), StorageLive(_16), _16 = &(*(_1.0: &tiles::TileDb)), _15 = &(*_16)], terminator: Some(Terminator { source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#190), scope: scope[0] }, kind: _14 = ArgumentV1::<'_>::new_debug::<TileDb>(move _15) -> [return: bb1, unwind: bb9] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_15), _13 = [move _14], StorageDead(_14), _12 = &_13, _11 = &(*_12), _10 = move _11 as &[core::fmt::ArgumentV1<'_>] (Pointer(Unsize)), StorageDead(_11)], terminator: Some(Terminator { source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:39: 120:79 (#190), scope: scope[0] }, kind: _5 = Arguments::<'_>::new_v1(move _6, move _10) -> [return: bb2, unwind: bb9] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_10), StorageDead(_6)], terminator: Some(Terminator { source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:19: 120:80 (#189), scope: scope[0] }, kind: _4 = format(move _5) -> [return: bb3, unwind: bb9] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_5), FakeRead(ForLet(None), _4), StorageDead(_16), StorageDead(_13), StorageDead(_12), StorageDead(_9), StorageDead(_8), _3 = move _4], terminator: Some(Terminator { source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:122:5: 122:6 (#189), scope: scope[0] }, kind: drop(_4) -> [return: bb4, unwind: bb9] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_4)], terminator: Some(Terminator { source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#11365), scope: scope[0] }, kind: drop(((*_2).2: std::string::String)) -> [return: bb5, unwind: bb6] }), is_cleanup: false }, BasicBlockData { statements: [((*_2).2: std::string::String) = move _3, _0 = const ()], terminator: Some(Terminator { source_info: SourceInfo { span: src/game.rs:24:28: 24:29 (#162), scope: scope[0] }, kind: drop(_3) -> [return: bb7, unwind: bb9] }), is_cleanup: false }, BasicBlockData { statements: [((*_2).2: std::string::String) = move _3], terminator: Some(Terminator { source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#11365), scope: scope[0] }, kind: goto -> bb8 }), is_cleanup: true }, BasicBlockData { statements: [StorageDead(_3)], terminator: Some(Terminator { source_info: SourceInfo { span: src/game.rs:24:29: 24:29 (#162), scope: scope[0] }, kind: return }), is_cleanup: false }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src/game.rs:24:28: 24:29 (#162), scope: scope[0] }, kind: drop(_3) -> [return: bb9, unwind terminate] }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#162), scope: scope[0] }, kind: resume }), is_cleanup: true }], cache: Cache { predecessors: OnceCell(Uninit), switch_sources: OnceCell(Uninit), is_cyclic: OnceCell(Uninit), postorder: OnceCell(Uninit) } }, phase: Built, pass_count: 0, source: MirSource { instance: Item(WithOptConstParam { did: DefId(0:769 ~ mantle_diver[456a]::game::{impl#2}::inspect_mut::{closure#0}::{closure#8}::{closure#0}), const_param_did: None }), promoted: None }, source_scopes: [SourceScopeData { span: src/game.rs:24:22: 24:29 (#162), parent_scope: None, inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId(DefId(0:751 ~ mantle_diver[456a]::game::{impl#2}::inspect_mut).760), safety: Safe }) }, SourceScopeData { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:9: 122:6 (#189), parent_scope: Some(scope[0]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId(DefId(0:751 ~ mantle_diver[456a]::game::{impl#2}::inspect_mut).760), safety: Safe }) }], generator: None, local_decls: [LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: (), user_ty: None, source_info: SourceInfo { span: src/game.rs:24:22: 24:22 (#162), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: [closure@src/game.rs:24:22: 24:29], user_ty: None, source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#162), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Set(User(Var(VarBindingForm { binding_mode: BindByValue(Not), opt_ty_info: None, opt_match_place: Some((None, src/game.rs:24:22: 24:29 (#162))), pat_span: src/game.rs:24:22: 24:29 (#162) }))), internal: false, ty: &mut egui::PlatformOutput, user_ty: None, source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#162), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: std::string::String, user_ty: None, source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:119:23: 122:6 (#189), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Set(User(Var(VarBindingForm { binding_mode: BindByValue(Not), opt_ty_info: None, opt_match_place: Some((None, (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:19: 120:80 (#189))), pat_span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:13: 120:16 (#189) }))), internal: false, ty: std::string::String, user_ty: None, source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:13: 120:16 (#189), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: std::fmt::Arguments<'_>, user_ty: None, source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:39: 120:79 (#190), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: &[&str], user_ty: None, source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#162), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: &[&str; 1], user_ty: None, source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#162), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Set(Boring), internal: false, ty: &[&str; 1], user_ty: None, source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#162), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Set(Boring), internal: false, ty: [&str; 1], user_ty: None, source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#162), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: &[core::fmt::ArgumentV1<'_>], user_ty: None, source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:39: 120:79 (#190), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: &[core::fmt::ArgumentV1<'_>; 1], user_ty: None, source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:39: 120:79 (#190), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Set(Boring), internal: false, ty: &[core::fmt::ArgumentV1<'_>; 1], user_ty: None, source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:39: 120:79 (#190), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Set(Boring), internal: false, ty: [core::fmt::ArgumentV1<'_>; 1], user_ty: None, source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:39: 120:79 (#190), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: core::fmt::ArgumentV1<'_>, user_ty: None, source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#190), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: &tiles::TileDb, user_ty: None, source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#190), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Set(Boring), internal: false, ty: &tiles::TileDb, user_ty: None, source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#190), scope: scope[0] } }], user_type_annotations: [CanonicalUserTypeAnnotation { user_ty: Canonical { value: TypeOf(DefId(2:9040 ~ core[2859]::fmt::{impl#4}::new_v1), UserSubsts { substs: [ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrAnon(None) })], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(2:9037 ~ core[2859]::fmt::{impl#4}), self_ty: std::fmt::Arguments<'_> }) }), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Region(U0) }] }, span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:39: 120:79 (#190), inferred_ty: fn(&[&'static str], &[core::fmt::ArgumentV1<'_>]) -> std::fmt::Arguments<'_> {std::fmt::Arguments::<'_>::new_v1} }, CanonicalUserTypeAnnotation { user_ty: Canonical { value: TypeOf(DefId(2:41685 ~ core[2859]::fmt::{impl#3}::new_debug), UserSubsts { substs: [ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrAnon(None) }), ^1], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(2:9030 ~ core[2859]::fmt::{impl#3}), self_ty: core::fmt::ArgumentV1<'_> }) }), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Ty(General(U0)) }, CanonicalVarInfo { kind: Region(U0) }] }, span: src/game.rs:24:22: 24:29 (#190), inferred_ty: for<'b> fn(&'b tiles::TileDb) -> core::fmt::ArgumentV1<'b> {core::fmt::ArgumentV1::<'_>::new_debug::<tiles::TileDb>} }], arg_count: 2, spread_arg: None, var_debug_info: [VarDebugInfo { name: "o", source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#162), scope: scope[0] }, value: _2, argument_index: Some(2) }, VarDebugInfo { name: "self__tile_db", source_info: SourceInfo { span: src/game.rs:24:22: 24:29 (#1589), scope: scope[0] }, value: (*(_1.0: &tiles::TileDb)), argument_index: None }, VarDebugInfo { name: "res", source_info: SourceInfo { span: (omitted)/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/macros.rs:120:13: 120:16 (#189), scope: scope[1] }, value: _4, argument_index: None }], span: src/game.rs:24:22: 24:29 (#162), required_consts: [], is_polymorphic: false, injection_phase: None, tainted_by_errors: None }) }) }', /rustc/d0f204e4d750b62f9d6c2593405e828757126832/compiler/rustc_query_system/src/query/plumbing.rs:715:9
stack backtrace:
   0:     0x7f13df09dcca - std::backtrace_rs::backtrace::libunwind::trace::h5305f7ceb73a8f21
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7f13df09dcca - std::backtrace_rs::backtrace::trace_unsynchronized::haaa611f40c18b8f2
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f13df09dcca - std::sys_common::backtrace::_print_fmt::hc172453659fd99fe
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x7f13df09dcca - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hacfa999350a262bc
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f13df1020cf - core::fmt::write::h90b031b2ddd09ae3
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/core/src/fmt/mod.rs:1254:17
   5:     0x7f13df090905 - std::io::Write::write_fmt::hbb52b722349829fc
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/io/mod.rs:1698:15
   6:     0x7f13df09da95 - std::sys_common::backtrace::_print::heb41e31eaa89e35c
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x7f13df09da95 - std::sys_common::backtrace::print::hf098c20687d22cb5
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x7f13df0a073e - std::panicking::default_hook::{{closure}}::h88384ed37cb8e0ea
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/panicking.rs:269:22
   9:     0x7f13df0a04e5 - std::panicking::default_hook::he41d226f47136c9d
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/panicking.rs:288:9
  10:     0x7f13dde1c9d5 - <rustc_driver_impl[dca6eaec99318d6f]::DEFAULT_HOOK::{closure#0}::{closure#0} as core[2859ca24dae969e5]::ops::function::FnOnce<(&core[2859ca24dae969e5]::panic::panic_info::PanicInfo,)>>::call_once::{shim:vtable#0}
  11:     0x7f13df0a0f34 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h9892c2e157351f3c
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/alloc/src/boxed.rs:1987:9
  12:     0x7f13df0a0f34 - std::panicking::rust_panic_with_hook::hd9989e613e7d3298
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/panicking.rs:695:13
  13:     0x7f13df0a0ca9 - std::panicking::begin_panic_handler::{{closure}}::h3053bcc9ba607096
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/panicking.rs:582:13
  14:     0x7f13df09e136 - std::sys_common::backtrace::__rust_end_short_backtrace::he69314b31cae3af9
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/sys_common/backtrace.rs:150:18
  15:     0x7f13df0a0a02 - rust_begin_unwind
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/panicking.rs:578:5
  16:     0x7f13df0fe443 - core::panicking::panic_fmt::h99dcfcf83543bc7f
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/core/src/panicking.rs:67:14
  17:     0x7f13de6f472e - rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::incremental_verify_ich_failed::<rustc_middle[cf4061c8958768de]::ty::context::TyCtxt>
  18:     0x7f13dcecb527 - <std[eb24bce596941705]::thread::local::LocalKey<core[2859ca24dae969e5]::cell::Cell<*const ()>>>::with::<rustc_middle[cf4061c8958768de]::ty::context::tls::enter_context<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::execute_job_incr<rustc_query_impl[795a55a813d303c3]::queries::mir_built, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#1}, core[2859ca24dae969e5]::option::Option<(rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>>::{closure#0}, core[2859ca24dae969e5]::option::Option<(rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>>
  19:     0x7f13dceca4cb - rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_execute_query::<rustc_query_impl[795a55a813d303c3]::queries::mir_built, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>
  20:     0x7f13dd81cbc5 - <rustc_query_impl[795a55a813d303c3]::Queries as rustc_middle[cf4061c8958768de]::ty::query::QueryEngine>::mir_built
  21:     0x7f13dcc118ab - rustc_mir_transform[6ecad65af303aadd]::mir_const
  22:     0x7f13de770231 - <std[eb24bce596941705]::thread::local::LocalKey<core[2859ca24dae969e5]::cell::Cell<*const ()>>>::with::<rustc_middle[cf4061c8958768de]::ty::context::tls::enter_context<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_load_from_disk_and_cache_in_memory<rustc_query_impl[795a55a813d303c3]::queries::mir_const, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#1}, rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>>::{closure#0}, rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>>
  23:     0x7f13de725501 - <rustc_middle[cf4061c8958768de]::dep_graph::dep_node::DepKind as rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::DepKind>::with_deps::<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_load_from_disk_and_cache_in_memory<rustc_query_impl[795a55a813d303c3]::queries::mir_const, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#1}, rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>>
  24:     0x7f13dcf4dac0 - <std[eb24bce596941705]::thread::local::LocalKey<core[2859ca24dae969e5]::cell::Cell<*const ()>>>::with::<rustc_middle[cf4061c8958768de]::ty::context::tls::enter_context<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::execute_job_incr<rustc_query_impl[795a55a813d303c3]::queries::mir_const, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#1}, core[2859ca24dae969e5]::option::Option<(rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>>::{closure#0}, core[2859ca24dae969e5]::option::Option<(rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>>
  25:     0x7f13dcf4d01b - rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_execute_query::<rustc_query_impl[795a55a813d303c3]::queries::mir_const, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>
  26:     0x7f13dc502cf7 - rustc_mir_transform[6ecad65af303aadd]::mir_promoted
  27:     0x7f13de767e51 - <std[eb24bce596941705]::thread::local::LocalKey<core[2859ca24dae969e5]::cell::Cell<*const ()>>>::with::<rustc_middle[cf4061c8958768de]::ty::context::tls::enter_context<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_load_from_disk_and_cache_in_memory<rustc_query_impl[795a55a813d303c3]::queries::mir_promoted, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#1}, rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 16usize]>>::{closure#0}, rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 16usize]>>
  28:     0x7f13de71e1bd - <rustc_middle[cf4061c8958768de]::dep_graph::dep_node::DepKind as rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::DepKind>::with_deps::<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_load_from_disk_and_cache_in_memory<rustc_query_impl[795a55a813d303c3]::queries::mir_promoted, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#1}, rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 16usize]>>
  29:     0x7f13dc9f6f59 - <std[eb24bce596941705]::thread::local::LocalKey<core[2859ca24dae969e5]::cell::Cell<*const ()>>>::with::<rustc_middle[cf4061c8958768de]::ty::context::tls::enter_context<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::execute_job_incr<rustc_query_impl[795a55a813d303c3]::queries::mir_promoted, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#1}, core[2859ca24dae969e5]::option::Option<(rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 16usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>>::{closure#0}, core[2859ca24dae969e5]::option::Option<(rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 16usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>>
  30:     0x7f13dc9f5bbe - rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_execute_query::<rustc_query_impl[795a55a813d303c3]::queries::mir_promoted, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>
  31:     0x7f13dd81cdb5 - <rustc_query_impl[795a55a813d303c3]::Queries as rustc_middle[cf4061c8958768de]::ty::query::QueryEngine>::mir_promoted
  32:     0x7f13dc5ef1e3 - rustc_mir_transform[6ecad65af303aadd]::mir_drops_elaborated_and_const_checked
  33:     0x7f13de76eeb1 - <std[eb24bce596941705]::thread::local::LocalKey<core[2859ca24dae969e5]::cell::Cell<*const ()>>>::with::<rustc_middle[cf4061c8958768de]::ty::context::tls::enter_context<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_load_from_disk_and_cache_in_memory<rustc_query_impl[795a55a813d303c3]::queries::mir_drops_elaborated_and_const_checked, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#1}, rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>>::{closure#0}, rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>>
  34:     0x7f13de724891 - <rustc_middle[cf4061c8958768de]::dep_graph::dep_node::DepKind as rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::DepKind>::with_deps::<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_load_from_disk_and_cache_in_memory<rustc_query_impl[795a55a813d303c3]::queries::mir_drops_elaborated_and_const_checked, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#1}, rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>>
  35:     0x7f13dcd7d070 - <std[eb24bce596941705]::thread::local::LocalKey<core[2859ca24dae969e5]::cell::Cell<*const ()>>>::with::<rustc_middle[cf4061c8958768de]::ty::context::tls::enter_context<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::execute_job_incr<rustc_query_impl[795a55a813d303c3]::queries::mir_drops_elaborated_and_const_checked, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#1}, core[2859ca24dae969e5]::option::Option<(rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>>::{closure#0}, core[2859ca24dae969e5]::option::Option<(rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>>
  36:     0x7f13dcd7c5cb - rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_execute_query::<rustc_query_impl[795a55a813d303c3]::queries::mir_drops_elaborated_and_const_checked, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>
  37:     0x7f13dceee12a - rustc_mir_transform[6ecad65af303aadd]::optimized_mir
  38:     0x7f13dcef1455 - <std[eb24bce596941705]::thread::local::LocalKey<core[2859ca24dae969e5]::cell::Cell<*const ()>>>::with::<rustc_middle[cf4061c8958768de]::ty::context::tls::enter_context<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::execute_job_incr<rustc_query_impl[795a55a813d303c3]::queries::optimized_mir, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#2}, (rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>::{closure#0}, (rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>
  39:     0x7f13dceed750 - rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_execute_query::<rustc_query_impl[795a55a813d303c3]::queries::optimized_mir, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>
  40:     0x7f13dcd474ef - rustc_monomorphize[3742297bb00b1687]::collector::collect_neighbours
  41:     0x7f13dcd44187 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  42:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  43:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  44:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  45:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  46:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  47:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  48:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  49:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  50:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  51:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  52:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  53:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  54:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  55:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  56:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  57:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  58:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  59:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  60:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  61:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  62:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  63:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  64:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  65:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  66:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  67:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  68:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  69:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  70:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  71:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  72:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  73:     0x7f13dcd44626 - rustc_monomorphize[3742297bb00b1687]::collector::collect_items_rec
  74:     0x7f13dce98271 - rustc_data_structures[d8df482a503b4e16]::sync::par_for_each_in::<alloc[b5adc9823d408db1]::vec::Vec<rustc_middle[cf4061c8958768de]::mir::mono::MonoItem>, rustc_monomorphize[3742297bb00b1687]::collector::collect_crate_mono_items::{closure#1}::{closure#0}>
  75:     0x7f13dce97f50 - <rustc_session[8b35cc4b9a893792]::session::Session>::time::<(), rustc_monomorphize[3742297bb00b1687]::collector::collect_crate_mono_items::{closure#1}>
  76:     0x7f13dce97a09 - rustc_monomorphize[3742297bb00b1687]::collector::collect_crate_mono_items
  77:     0x7f13dce95d57 - rustc_monomorphize[3742297bb00b1687]::partitioning::collect_and_partition_mono_items
  78:     0x7f13dd235a90 - <std[eb24bce596941705]::thread::local::LocalKey<core[2859ca24dae969e5]::cell::Cell<*const ()>>>::with::<rustc_middle[cf4061c8958768de]::ty::context::tls::enter_context<rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::execute_job_incr<rustc_query_impl[795a55a813d303c3]::queries::collect_and_partition_mono_items, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>::{closure#2}, (rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 24usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>::{closure#0}, (rustc_middle[cf4061c8958768de]::query::erase::Erased<[u8; 24usize]>, rustc_query_system[3bbe62cc4d6de6cb]::dep_graph::graph::DepNodeIndex)>
  79:     0x7f13dd23558d - rustc_query_system[3bbe62cc4d6de6cb]::query::plumbing::try_execute_query::<rustc_query_impl[795a55a813d303c3]::queries::collect_and_partition_mono_items, rustc_query_impl[795a55a813d303c3]::plumbing::QueryCtxt>
  80:     0x7f13dd23502d - <rustc_query_impl[795a55a813d303c3]::Queries as rustc_middle[cf4061c8958768de]::ty::query::QueryEngine>::collect_and_partition_mono_items
  81:     0x7f13dd286b25 - rustc_codegen_ssa[c3c07222a87f26e1]::base::codegen_crate::<rustc_codegen_llvm[955e4dcdadf0f118]::LlvmCodegenBackend>
  82:     0x7f13dd2868fa - <rustc_codegen_llvm[955e4dcdadf0f118]::LlvmCodegenBackend as rustc_codegen_ssa[c3c07222a87f26e1]::traits::backend::CodegenBackend>::codegen_crate
  83:     0x7f13dd0e3352 - <rustc_session[8b35cc4b9a893792]::session::Session>::time::<alloc[b5adc9823d408db1]::boxed::Box<dyn core[2859ca24dae969e5]::any::Any>, rustc_interface[39fd61ecdbea2b33]::passes::start_codegen::{closure#0}>
  84:     0x7f13dd0e2e1d - rustc_interface[39fd61ecdbea2b33]::passes::start_codegen
  85:     0x7f13dd0de214 - <rustc_middle[cf4061c8958768de]::ty::context::GlobalCtxt>::enter::<<rustc_interface[39fd61ecdbea2b33]::queries::Queries>::ongoing_codegen::{closure#0}::{closure#0}, core[2859ca24dae969e5]::result::Result<alloc[b5adc9823d408db1]::boxed::Box<dyn core[2859ca24dae969e5]::any::Any>, rustc_span[da8828833cd3cbdf]::ErrorGuaranteed>>
  86:     0x7f13dd0dc8b8 - <rustc_interface[39fd61ecdbea2b33]::queries::Queries>::ongoing_codegen
  87:     0x7f13dd0dc0c1 - <rustc_interface[39fd61ecdbea2b33]::interface::Compiler>::enter::<rustc_driver_impl[dca6eaec99318d6f]::run_compiler::{closure#1}::{closure#2}, core[2859ca24dae969e5]::result::Result<core[2859ca24dae969e5]::option::Option<rustc_interface[39fd61ecdbea2b33]::queries::Linker>, rustc_span[da8828833cd3cbdf]::ErrorGuaranteed>>
  88:     0x7f13dd0d72e1 - rustc_span[da8828833cd3cbdf]::set_source_map::<core[2859ca24dae969e5]::result::Result<(), rustc_span[da8828833cd3cbdf]::ErrorGuaranteed>, rustc_interface[39fd61ecdbea2b33]::interface::run_compiler<core[2859ca24dae969e5]::result::Result<(), rustc_span[da8828833cd3cbdf]::ErrorGuaranteed>, rustc_driver_impl[dca6eaec99318d6f]::run_compiler::{closure#1}>::{closure#0}::{closure#0}>
  89:     0x7f13dd0d688f - std[eb24bce596941705]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[39fd61ecdbea2b33]::util::run_in_thread_pool_with_globals<rustc_interface[39fd61ecdbea2b33]::interface::run_compiler<core[2859ca24dae969e5]::result::Result<(), rustc_span[da8828833cd3cbdf]::ErrorGuaranteed>, rustc_driver_impl[dca6eaec99318d6f]::run_compiler::{closure#1}>::{closure#0}, core[2859ca24dae969e5]::result::Result<(), rustc_span[da8828833cd3cbdf]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[2859ca24dae969e5]::result::Result<(), rustc_span[da8828833cd3cbdf]::ErrorGuaranteed>>
  90:     0x7f13dd6e6551 - <<std[eb24bce596941705]::thread::Builder>::spawn_unchecked_<rustc_interface[39fd61ecdbea2b33]::util::run_in_thread_pool_with_globals<rustc_interface[39fd61ecdbea2b33]::interface::run_compiler<core[2859ca24dae969e5]::result::Result<(), rustc_span[da8828833cd3cbdf]::ErrorGuaranteed>, rustc_driver_impl[dca6eaec99318d6f]::run_compiler::{closure#1}>::{closure#0}, core[2859ca24dae969e5]::result::Result<(), rustc_span[da8828833cd3cbdf]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[2859ca24dae969e5]::result::Result<(), rustc_span[da8828833cd3cbdf]::ErrorGuaranteed>>::{closure#1} as core[2859ca24dae969e5]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  91:     0x7f13df0ab3b5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h118c6a9a1198fa04
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/alloc/src/boxed.rs:1973:9
  92:     0x7f13df0ab3b5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h227ba44e92b651ba
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/alloc/src/boxed.rs:1973:9
  93:     0x7f13df0ab3b5 - std::sys::unix::thread::Thread::new::thread_start::h0c1a778c12429624
                               at /rustc/d0f204e4d750b62f9d6c2593405e828757126832/library/std/src/sys/unix/thread.rs:108:17
  94:     0x7f13daa9ebb5 - <unknown>
  95:     0x7f13dab20d90 - <unknown>
  96:                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: rustc 1.71.0-nightly (d0f204e4d 2023-04-16) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type bin -C embed-bitcode=no -C debuginfo=2 -C linker=clang -C incremental=[REDACTED] -C link-arg=--ld-path=/usr/bin/mold

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

query stack during panic:
#0 [mir_built] building MIR for `game::<impl at src/game.rs:24:22: 24:29>::inspect_mut::{closure#0}::{closure#8}::{closure#0}`
#1 [mir_const] preparing `game::<impl at src/game.rs:24:22: 24:29>::inspect_mut::{closure#0}::{closure#8}::{closure#0}` for borrow checking
#2 [mir_promoted] processing MIR for `game::<impl at src/game.rs:24:22: 24:29>::inspect_mut::{closure#0}::{closure#8}::{closure#0}`
#3 [mir_drops_elaborated_and_const_checked] elaborating drops for `game::<impl at src/game.rs:24:22: 24:29>::inspect_mut::{closure#0}::{closure#8}::{closure#0}`
#4 [optimized_mir] optimizing MIR for `game::<impl at src/game.rs:24:22: 24:29>::inspect_mut::{closure#0}::{closure#8}::{closure#0}`
#5 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack

Meta

rustc --version --verbose:

rustc 1.71.0-nightly (d0f204e4d 2023-04-16)
binary: rustc
commit-hash: d0f204e4d750b62f9d6c2593405e828757126832
commit-date: 2023-04-16
host: x86_64-unknown-linux-gnu
release: 1.71.0-nightly
LLVM version: 16.0.2

Build help

Needs SFML as a non-rust dependency.
See https://github.com/jeremyletang/rust-sfml#environment-variables

Easiest way should be to download the source and build it with CMake, and point the above environment variables to the appropriate locations in your download folder.

Activity

  1. self-assigned this
    on Apr 17, 2023
  2. Noratrieb commented on Apr 17, 2023

    @Noratrieb
    Member

    Assigning myself to minimize, hopefully writing some cargo-minimize docs for incremental on the way.

  3. added
    I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
    A-incr-compArea: Incremental compilation
    on Apr 17, 2023
  4. Noratrieb commented on Apr 18, 2023

    @Noratrieb
    Member

    I have an MCVE (less minimal than I had hoped sadly)

    pub struct TileDef {
        pub layer: (),
        #[cfg(second)]
        pub blend_graphic: String,
    }
    
    pub(crate) struct GameState {
        pub(crate) tile_db: TileDb,
    }
    
    impl GameState {
        fn inspect_mut(&mut self) {
            egui_inspect_derive::expand! {}
        }
    }
    
    fn new() -> GameState {
        loop {}
    }
    
    fn main() {
        let mut app = new();
        app.inspect_mut();
    }
    // this is actually used
    pub struct TileDb {
        unknown_bg: TileDef,
    }
    
    impl std::fmt::Debug for TileDb {
        fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
            loop {}
        }
    }
    
    pub struct PlatformOutput {
        pub copied_text: String,
    }
    
    pub fn output_mut<R>(writer: impl FnOnce(&mut PlatformOutput) -> R) -> R {
        loop {}
    }

    Where egui_inspect_derive is a proc macro crate containing

    use proc_macro::TokenStream;
    use quote::quote;
    
    #[proc_macro]
    pub fn expand(_: TokenStream) -> TokenStream {
        quote! {
            output_mut(|o| o.copied_text = "".into());
            output_mut(|o| o.copied_text = format!("{:?}", self.tile_db));
        }
        .into()
    }

    I cannot manually expand the macro. I have already tried -Zincremental-relative-spans=no which didn't help. I will continue investigating this.

    To reproduce, first compile it without any cfgs and then enable second.

  5. added
    S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issue
    on Apr 18, 2023
  6. WaffleLapkin commented on Apr 19, 2023

    @WaffleLapkin
    Member

    Bisection results using Noratrieb/game-wip-dontplay@cc39bd4.
    cc @cjgillot, the bisection points at #107270.

    searched nightlies: from nightly-2021-01-01 to nightly-2023-04-19
    regressed nightly: nightly-2023-03-17
    searched commit range: ab65486...511364e
    regressed commit: e386217

    bisected with cargo-bisect-rustc v0.6.6

    Host triple: aarch64-unknown-linux-gnu
    Reproduce with:

    cargo bisect-rustc --start 2021-01-01 --regress success --script ./repro.sh --access github
  7. Noratrieb commented on Apr 19, 2023

    @Noratrieb
    Member

    I've found some potentially interesting bits:
    I've printed the result from both sessions and got the following diff:

    128c128
    <                 span: src/main.rs: 13: 9: 13: 40(#20),
    ---
    >                 span: src/main.rs: 13: 9: 13: 40(#224),
    165c165
    <                 span: src/main.rs: 13: 9: 13: 40(#20),
    ---
    >                 span: src/main.rs: 13: 9: 13: 40(#224),
    230c230
    <           did: DefId(0: 20~mantle_diver[
    ---
    >           did: DefId(0: 21~mantle_diver[
    248c248
    <             lint_root: HirId(DefId(0: 8~mantle_diver[
    ---
    >             lint_root: HirId(DefId(0: 9~mantle_diver[
    264c264
    <             lint_root: HirId(DefId(0: 8~mantle_diver[
    ---
    >             lint_root: HirId(DefId(0: 9~mantle_diver[

    Some DefIds are different (makes sense, a field was added) and two spans changed their SyntaxContext drastically. These are spans that are expanded from the proc macro using Span::call_site.

    before
    Steal{
      value: RwLock(RefCell{
        value: Some(Body{
          basic_blocks: BasicBlocks{
            basic_blocks: [
              BasicBlockData{
                statements: [
                  StorageLive(_3),
                  StorageLive(_4),
                  StorageLive(_5),
                  StorageLive(_6),
                  StorageLive(_7),
                  StorageLive(_8),
                  StorageLive(_9),
                  _9=[
                    const""
                  ],
                  _8=&_9,
                  _7=&(*_8),
                  _6=move_7as&[
                    &str
                  ](Pointer(Unsize)),
                  StorageDead(_7),
                  StorageLive(_10),
                  StorageLive(_11),
                  StorageLive(_12),
                  StorageLive(_13),
                  StorageLive(_14),
                  StorageLive(_15),
                  StorageLive(_16),
                  _16=&(*(_1.0: &TileDb)),
                  _15=&(*_16)
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 9: 13: 40(#9),
                    scope: scope[
                      0
                    ]
                  },
                  kind: _14=core: : fmt: : ArgumentV1: : <'_>: : new_debug: : <TileDb>(move_15)->[
                    return: bb1,
                    unwind: bb9
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  StorageDead(_15),
                  _13=[
                    move_14
                  ],
                  StorageDead(_14),
                  _12=&_13,
                  _11=&(*_12),
                  _10=move_11as&[
                    core: : fmt: : ArgumentV1<'_>
                  ](Pointer(Unsize)),
                  StorageDead(_11)
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                    scope: scope[
                      0
                    ]
                  },
                  kind: _5=Arguments: : <'_>: : new_v1(move_6,
                  move_10)->[
                    return: bb2,
                    unwind: bb9
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  StorageDead(_10),
                  StorageDead(_6)
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 19: 120: 80(#7),
                    scope: scope[
                      0
                    ]
                  },
                  kind: _4=format(move_5)->[
                    return: bb3,
                    unwind: bb9
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  StorageDead(_5),
                  FakeRead(ForLet(None),
                  _4),
                  StorageDead(_16),
                  StorageDead(_13),
                  StorageDead(_12),
                  StorageDead(_9),
                  StorageDead(_8),
                  _3=move_4
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 122: 5: 122: 6(#7),
                    scope: scope[
                      0
                    ]
                  },
                  kind: drop(_4)->[
                    return: bb4,
                    unwind: bb9
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  StorageDead(_4)
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 9: 13: 40(#20),
                    scope: scope[
                      0
                    ]
                  },
                  kind: drop(((*_2).0: std: : string: : String))->[
                    return: bb5,
                    unwind: bb6
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  ((*_2).0: std: : string: : String)=move_3,
                  _0=const()
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 39: 13: 40(#5),
                    scope: scope[
                      0
                    ]
                  },
                  kind: drop(_3)->[
                    return: bb7,
                    unwind: bb9
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  ((*_2).0: std: : string: : String)=move_3
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 9: 13: 40(#20),
                    scope: scope[
                      0
                    ]
                  },
                  kind: goto->bb8
                }),
                is_cleanup: true
              },
              BasicBlockData{
                statements: [
                  StorageDead(_3)
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 40: 13: 40(#5),
                    scope: scope[
                      0
                    ]
                  },
                  kind: return
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 39: 13: 40(#5),
                    scope: scope[
                      0
                    ]
                  },
                  kind: drop(_3)->[
                    return: bb9,
                    unwindterminate
                  ]
                }),
                is_cleanup: true
              },
              BasicBlockData{
                statements: [],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 9: 13: 40(#5),
                    scope: scope[
                      0
                    ]
                  },
                  kind: resume
                }),
                is_cleanup: true
              }
            ],
            cache: Cache{
              predecessors: OnceCell(Uninit),
              switch_sources: OnceCell(Uninit),
              is_cyclic: OnceCell(Uninit),
              postorder: OnceCell(Uninit)
            }
          },
          phase: Built,
          pass_count: 0,
          source: MirSource{
            instance: Item(WithOptConstParam{
              did: DefId(0: 20~mantle_diver[
                d58e
              ]: : {
                impl#0
              }: : inspect_mut: : {
                closure#1
              }),
              const_param_did: None
            }),
            promoted: None
          },
          source_scopes: [
            SourceScopeData{
              span: src/main.rs: 13: 9: 13: 40(#5),
              parent_scope: None,
              inlined: None,
              inlined_parent_scope: None,
              local_data: Set(SourceScopeLocalData{
                lint_root: HirId(DefId(0: 8~mantle_diver[
                  d58e
                ]: : {
                  impl#0
                }: : inspect_mut).21),
                safety: Safe
              })
            },
            SourceScopeData{
              span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 9: 122: 6(#7),
              parent_scope: Some(scope[
                0
              ]),
              inlined: None,
              inlined_parent_scope: None,
              local_data: Set(SourceScopeLocalData{
                lint_root: HirId(DefId(0: 8~mantle_diver[
                  d58e
                ]: : {
                  impl#0
                }: : inspect_mut).21),
                safety: Safe
              })
            }
          ],
          generator: None,
          local_decls: [
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: (),
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 9(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: [
                closure@src/main.rs: 13: 9: 13: 40
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(User(Var(VarBindingForm{
                binding_mode: BindByValue(Not),
                opt_ty_info: None,
                opt_match_place: Some((None,
                src/main.rs: 13: 9: 13: 40(#5))),
                pat_span: src/main.rs: 13: 9: 13: 40(#5)
              }))),
              internal: false,
              ty: &mutPlatformOutput,
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: std: : string: : String,
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 119: 23: 122: 6(#7),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(User(Var(VarBindingForm{
                binding_mode: BindByValue(Not),
                opt_ty_info: None,
                opt_match_place: Some((None,
                /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 19: 120: 80(#7))),
                pat_span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 13: 120: 16(#7)
              }))),
              internal: false,
              ty: std: : string: : String,
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 13: 120: 16(#7),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: std: : fmt: : Arguments<'_>,
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                &str
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                &str;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                &str;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(Boring),
              internal: false,
              ty: [
                &str;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                core: : fmt: : ArgumentV1<'_>
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                core: : fmt: : ArgumentV1<'_>;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                core: : fmt: : ArgumentV1<'_>;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(Boring),
              internal: false,
              ty: [
                core: : fmt: : ArgumentV1<'_>;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: core: : fmt: : ArgumentV1<'_>,
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: &TileDb,
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(Boring),
              internal: false,
              ty: &TileDb,
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#9),
                scope: scope[
                  0
                ]
              }
            }
          ],
          user_type_annotations: [
            CanonicalUserTypeAnnotation{
              user_ty: Canonical{
                value: TypeOf(DefId(2: 9040~core[
                  44ff
                ]: : fmt: : {
                  impl#4
                }: : new_v1),
                UserSubsts{
                  substs: [
                    ReLateBound(DebruijnIndex(0),
                    BoundRegion{
                      var: 0,
                      kind: BrAnon(None)
                    })
                  ],
                  user_self_ty: Some(UserSelfTy{
                    impl_def_id: DefId(2: 9037~core[
                      44ff
                    ]: : fmt: : {
                      impl#4
                    }),
                    self_ty: std: : fmt: : Arguments<'_>
                  })
                }),
                max_universe: U0,
                variables: [
                  CanonicalVarInfo{
                    kind: Region(U0)
                  },
                  CanonicalVarInfo{
                    kind: Region(U0)
                  }
                ]
              },
              span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
              inferred_ty: fn(&[
                &'staticstr
              ],
              &[
                core: : fmt: : ArgumentV1<'_>
              ])->std: : fmt: : Arguments<'_>{
                std: : fmt: : Arguments: : <'_>: : new_v1
              }
            },
            CanonicalUserTypeAnnotation{
              user_ty: Canonical{
                value: TypeOf(DefId(2: 41685~core[
                  44ff
                ]: : fmt: : {
                  impl#3
                }: : new_debug),
                UserSubsts{
                  substs: [
                    ReLateBound(DebruijnIndex(0),
                    BoundRegion{
                      var: 0,
                      kind: BrAnon(None)
                    }),
                    ^1
                  ],
                  user_self_ty: Some(UserSelfTy{
                    impl_def_id: DefId(2: 9030~core[
                      44ff
                    ]: : fmt: : {
                      impl#3
                    }),
                    self_ty: core: : fmt: : ArgumentV1<'_>
                  })
                }),
                max_universe: U0,
                variables: [
                  CanonicalVarInfo{
                    kind: Region(U0)
                  },
                  CanonicalVarInfo{
                    kind: Ty(General(U0))
                  },
                  CanonicalVarInfo{
                    kind: Region(U0)
                  }
                ]
              },
              span: src/main.rs: 13: 9: 13: 40(#9),
              inferred_ty: for<'b>fn(&'bTileDb)->core: : fmt: : ArgumentV1<'b>{
                core: : fmt: : ArgumentV1: : <'_>: : new_debug: : <TileDb>
              }
            }
          ],
          arg_count: 2,
          spread_arg: None,
          var_debug_info: [
            VarDebugInfo{
              name: "o",
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              },
              value: _2,
              argument_index: Some(2)
            },
            VarDebugInfo{
              name: "self__tile_db",
              source_info: SourceInfo{
                span: src/main.rs: 12: 25: 12: 29(#0),
                scope: scope[
                  0
                ]
              },
              value: (*(_1.0: &TileDb)),
              argument_index: None
            },
            VarDebugInfo{
              name: "res",
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 13: 120: 16(#7),
                scope: scope[
                  1
                ]
              },
              value: _4,
              argument_index: None
            }
          ],
          span: src/main.rs: 13: 9: 13: 40(#5),
          required_consts: [],
          is_polymorphic: false,
          injection_phase: None,
          tainted_by_errors: None
        })
      })
    }
    after
    Steal{
      value: RwLock(RefCell{
        value: Some(Body{
          basic_blocks: BasicBlocks{
            basic_blocks: [
              BasicBlockData{
                statements: [
                  StorageLive(_3),
                  StorageLive(_4),
                  StorageLive(_5),
                  StorageLive(_6),
                  StorageLive(_7),
                  StorageLive(_8),
                  StorageLive(_9),
                  _9=[
                    const""
                  ],
                  _8=&_9,
                  _7=&(*_8),
                  _6=move_7as&[
                    &str
                  ](Pointer(Unsize)),
                  StorageDead(_7),
                  StorageLive(_10),
                  StorageLive(_11),
                  StorageLive(_12),
                  StorageLive(_13),
                  StorageLive(_14),
                  StorageLive(_15),
                  StorageLive(_16),
                  _16=&(*(_1.0: &TileDb)),
                  _15=&(*_16)
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 9: 13: 40(#9),
                    scope: scope[
                      0
                    ]
                  },
                  kind: _14=core: : fmt: : ArgumentV1: : <'_>: : new_debug: : <TileDb>(move_15)->[
                    return: bb1,
                    unwind: bb9
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  StorageDead(_15),
                  _13=[
                    move_14
                  ],
                  StorageDead(_14),
                  _12=&_13,
                  _11=&(*_12),
                  _10=move_11as&[
                    core: : fmt: : ArgumentV1<'_>
                  ](Pointer(Unsize)),
                  StorageDead(_11)
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                    scope: scope[
                      0
                    ]
                  },
                  kind: _5=Arguments: : <'_>: : new_v1(move_6,
                  move_10)->[
                    return: bb2,
                    unwind: bb9
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  StorageDead(_10),
                  StorageDead(_6)
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 19: 120: 80(#7),
                    scope: scope[
                      0
                    ]
                  },
                  kind: _4=format(move_5)->[
                    return: bb3,
                    unwind: bb9
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  StorageDead(_5),
                  FakeRead(ForLet(None),
                  _4),
                  StorageDead(_16),
                  StorageDead(_13),
                  StorageDead(_12),
                  StorageDead(_9),
                  StorageDead(_8),
                  _3=move_4
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 122: 5: 122: 6(#7),
                    scope: scope[
                      0
                    ]
                  },
                  kind: drop(_4)->[
                    return: bb4,
                    unwind: bb9
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  StorageDead(_4)
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 9: 13: 40(#224),
                    scope: scope[
                      0
                    ]
                  },
                  kind: drop(((*_2).0: std: : string: : String))->[
                    return: bb5,
                    unwind: bb6
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  ((*_2).0: std: : string: : String)=move_3,
                  _0=const()
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 39: 13: 40(#5),
                    scope: scope[
                      0
                    ]
                  },
                  kind: drop(_3)->[
                    return: bb7,
                    unwind: bb9
                  ]
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [
                  ((*_2).0: std: : string: : String)=move_3
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 9: 13: 40(#224),
                    scope: scope[
                      0
                    ]
                  },
                  kind: goto->bb8
                }),
                is_cleanup: true
              },
              BasicBlockData{
                statements: [
                  StorageDead(_3)
                ],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 40: 13: 40(#5),
                    scope: scope[
                      0
                    ]
                  },
                  kind: return
                }),
                is_cleanup: false
              },
              BasicBlockData{
                statements: [],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 39: 13: 40(#5),
                    scope: scope[
                      0
                    ]
                  },
                  kind: drop(_3)->[
                    return: bb9,
                    unwindterminate
                  ]
                }),
                is_cleanup: true
              },
              BasicBlockData{
                statements: [],
                terminator: Some(Terminator{
                  source_info: SourceInfo{
                    span: src/main.rs: 13: 9: 13: 40(#5),
                    scope: scope[
                      0
                    ]
                  },
                  kind: resume
                }),
                is_cleanup: true
              }
            ],
            cache: Cache{
              predecessors: OnceCell(Uninit),
              switch_sources: OnceCell(Uninit),
              is_cyclic: OnceCell(Uninit),
              postorder: OnceCell(Uninit)
            }
          },
          phase: Built,
          pass_count: 0,
          source: MirSource{
            instance: Item(WithOptConstParam{
              did: DefId(0: 21~mantle_diver[
                d58e
              ]: : {
                impl#0
              }: : inspect_mut: : {
                closure#1
              }),
              const_param_did: None
            }),
            promoted: None
          },
          source_scopes: [
            SourceScopeData{
              span: src/main.rs: 13: 9: 13: 40(#5),
              parent_scope: None,
              inlined: None,
              inlined_parent_scope: None,
              local_data: Set(SourceScopeLocalData{
                lint_root: HirId(DefId(0: 9~mantle_diver[
                  d58e
                ]: : {
                  impl#0
                }: : inspect_mut).21),
                safety: Safe
              })
            },
            SourceScopeData{
              span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 9: 122: 6(#7),
              parent_scope: Some(scope[
                0
              ]),
              inlined: None,
              inlined_parent_scope: None,
              local_data: Set(SourceScopeLocalData{
                lint_root: HirId(DefId(0: 9~mantle_diver[
                  d58e
                ]: : {
                  impl#0
                }: : inspect_mut).21),
                safety: Safe
              })
            }
          ],
          generator: None,
          local_decls: [
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: (),
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 9(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: [
                closure@src/main.rs: 13: 9: 13: 40
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(User(Var(VarBindingForm{
                binding_mode: BindByValue(Not),
                opt_ty_info: None,
                opt_match_place: Some((None,
                src/main.rs: 13: 9: 13: 40(#5))),
                pat_span: src/main.rs: 13: 9: 13: 40(#5)
              }))),
              internal: false,
              ty: &mutPlatformOutput,
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: std: : string: : String,
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 119: 23: 122: 6(#7),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(User(Var(VarBindingForm{
                binding_mode: BindByValue(Not),
                opt_ty_info: None,
                opt_match_place: Some((None,
                /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 19: 120: 80(#7))),
                pat_span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 13: 120: 16(#7)
              }))),
              internal: false,
              ty: std: : string: : String,
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 13: 120: 16(#7),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: std: : fmt: : Arguments<'_>,
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                &str
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                &str;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                &str;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(Boring),
              internal: false,
              ty: [
                &str;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                core: : fmt: : ArgumentV1<'_>
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                core: : fmt: : ArgumentV1<'_>;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(Boring),
              internal: false,
              ty: &[
                core: : fmt: : ArgumentV1<'_>;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(Boring),
              internal: false,
              ty: [
                core: : fmt: : ArgumentV1<'_>;1
              ],
              user_ty: None,
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: core: : fmt: : ArgumentV1<'_>,
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Mut,
              local_info: Set(Boring),
              internal: false,
              ty: &TileDb,
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#9),
                scope: scope[
                  0
                ]
              }
            },
            LocalDecl{
              mutability: Not,
              local_info: Set(Boring),
              internal: false,
              ty: &TileDb,
              user_ty: None,
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#9),
                scope: scope[
                  0
                ]
              }
            }
          ],
          user_type_annotations: [
            CanonicalUserTypeAnnotation{
              user_ty: Canonical{
                value: TypeOf(DefId(2: 9040~core[
                  44ff
                ]: : fmt: : {
                  impl#4
                }: : new_v1),
                UserSubsts{
                  substs: [
                    ReLateBound(DebruijnIndex(0),
                    BoundRegion{
                      var: 0,
                      kind: BrAnon(None)
                    })
                  ],
                  user_self_ty: Some(UserSelfTy{
                    impl_def_id: DefId(2: 9037~core[
                      44ff
                    ]: : fmt: : {
                      impl#4
                    }),
                    self_ty: std: : fmt: : Arguments<'_>
                  })
                }),
                max_universe: U0,
                variables: [
                  CanonicalVarInfo{
                    kind: Region(U0)
                  },
                  CanonicalVarInfo{
                    kind: Region(U0)
                  }
                ]
              },
              span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 39: 120: 79(#9),
              inferred_ty: fn(&[
                &'staticstr
              ],
              &[
                core: : fmt: : ArgumentV1<'_>
              ])->std: : fmt: : Arguments<'_>{
                std: : fmt: : Arguments: : <'_>: : new_v1
              }
            },
            CanonicalUserTypeAnnotation{
              user_ty: Canonical{
                value: TypeOf(DefId(2: 41685~core[
                  44ff
                ]: : fmt: : {
                  impl#3
                }: : new_debug),
                UserSubsts{
                  substs: [
                    ReLateBound(DebruijnIndex(0),
                    BoundRegion{
                      var: 0,
                      kind: BrAnon(None)
                    }),
                    ^1
                  ],
                  user_self_ty: Some(UserSelfTy{
                    impl_def_id: DefId(2: 9030~core[
                      44ff
                    ]: : fmt: : {
                      impl#3
                    }),
                    self_ty: core: : fmt: : ArgumentV1<'_>
                  })
                }),
                max_universe: U0,
                variables: [
                  CanonicalVarInfo{
                    kind: Region(U0)
                  },
                  CanonicalVarInfo{
                    kind: Ty(General(U0))
                  },
                  CanonicalVarInfo{
                    kind: Region(U0)
                  }
                ]
              },
              span: src/main.rs: 13: 9: 13: 40(#9),
              inferred_ty: for<'b>fn(&'bTileDb)->core: : fmt: : ArgumentV1<'b>{
                core: : fmt: : ArgumentV1: : <'_>: : new_debug: : <TileDb>
              }
            }
          ],
          arg_count: 2,
          spread_arg: None,
          var_debug_info: [
            VarDebugInfo{
              name: "o",
              source_info: SourceInfo{
                span: src/main.rs: 13: 9: 13: 40(#5),
                scope: scope[
                  0
                ]
              },
              value: _2,
              argument_index: Some(2)
            },
            VarDebugInfo{
              name: "self__tile_db",
              source_info: SourceInfo{
                span: src/main.rs: 12: 25: 12: 29(#0),
                scope: scope[
                  0
                ]
              },
              value: (*(_1.0: &TileDb)),
              argument_index: None
            },
            VarDebugInfo{
              name: "res",
              source_info: SourceInfo{
                span: /home/nilsh/projects/rust/library/alloc/src/macros.rs: 120: 13: 120: 16(#7),
                scope: scope[
                  1
                ]
              },
              value: _4,
              argument_index: None
            }
          ],
          span: src/main.rs: 13: 9: 13: 40(#5),
          required_consts: [],
          is_polymorphic: false,
          injection_phase: None,
          tainted_by_errors: None
        })
      })
    }
  8. cjgillot commented on Apr 20, 2023

    @cjgillot
    Contributor

    The fact that DefIds are different is not an issue, those are just a shorthand, what's relevant is the DefPathHash.
    I'm a bit more worried about the change in SyntaxContext. This may indicate a hash collision in expansions.
    Thanks a lot for the investigation.

  9. self-assigned this
    on Apr 22, 2023
  10. removed their assignment
    on Apr 23, 2023
  11. cjgillot commented on May 19, 2023

    @cjgillot
    Contributor

    Writing my progress here before forgetting about it.

    First execution:

    1. Build MIR for mantle_diver.{impl#0}-inspect_mut-{closure#0};
    2. This requires marking some spans with Replace, so creates expansion expn5, and syntax context 40;
    3. Builds MIR for mantle_diver.{impl#0}-inspect_mut-{closure#1};
    4. This requires marking some other spans with Replace, so creates expansion expn6, and syntax context 41.

    Subtlety: expn5 and expn6 are created from the same span information, because egui_inspect_derive does not give the two closures different spans. So these expansions' hashes collide. Because hash collisions are bad, we increment the disambiguator for expn6.
    expn5 gets hash 14985880015710967966
    expn6 gets hash 14036241682333888583

    Second execution:

    1. MIR for mantle_diver.{impl#0}-inspect_mut-{closure#0} is green, so is not re-computed;
    2. MIR for mantle_diver.{impl#0}-inspect_mut-{closure#1} is green too;
    3. Processing MIR for mantle_diver.{impl#0}-inspect_mut-{closure#1} depends on the layout of TileDef;
    4. MIR for mantle_diver.{impl#0}-inspect_mut-{closure#1} is re-built;
    5. This requires marking the span with Replace, so to create an expansion and a syntax context;
    6. As closure#0 has not been built, there is no hash collision, so the expansion for closure#1 has hash 14985880015710967966, which is not the expected hash 14036241682333888583;
    7. ICE.
  12. cjgillot commented on May 27, 2023

    @cjgillot
    Contributor

    The ICE itself should have been removed by #111952, in which MIR building does not create Replace expansions any more.

  13. added
    E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.
    on May 27, 2023
  14. removed their assignment
    on May 27, 2023
  15. WaffleLapkin commented on May 29, 2023

    @WaffleLapkin
    Member

    @cjgillot did #111952 fix the underlying problem, or only the way that it's reached here? (i.e. would it be possible to reach a similar ICE with non Replace expansions)

  16. cjgillot commented on May 29, 2023

    @cjgillot
    Contributor

    It just removed the symptom. The underlying bug is still there, and should be fixed by #111815. I don't think it currently possible to trigger the ICE, not until someone adds post-lowering expansions back.

  17. added a commit that references this issue on May 29, 2023
    36526cf
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-incr-compArea: Incremental compilationC-bugCategory: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions