rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
97.69k stars 12.64k forks source link

ICE: Found unstable fingerprints for mir_built #107665

Open RonitNath opened 1 year ago

RonitNath commented 1 year ago

Code

A little backstory: this issue ended up fixing itself while I was attempting minimization, so I'm not sure if this bug report is still useful, as I don't know how to replicate the error anymore. I saved a commit when I found the error, but even reverting to it doesn't cause this bug to pop up again. The command used to test was either cargo test or cargo test --bin server my_fn.

At the same time, this was an ICE, so I believe it may still be worth reporting.

What ended up fixing things was turning use super::* to use super::{only_the_imports_I_need} so I believe there was something that super::* was bringing in that was breaking things. Hereafter, when I say "accidentally fixed the issue" I'm referring to this fixing of imports.

In practice, this is what I was testing (with identifiying information obfuscated):

#[tokio::test]
async fn my_fn() {
    let uid = PERSON_UID;
    let org_id = OID(5555555);
    let result = org::my_fn(uid, org_id).await;
    assert!(result.is_ok());
}

Where org was a module in my project. While minimizing, I brought all the non-external code into that one function my_fn, and still received the error. I'm not including it all since I also found that only this test also caused the error:

fn it_works() {
    assert_eq!(2 + 2, 4);
}

I'm including the former still it gives some context but because I believe this was caused by something in super::* I would ideally submit literally the entire program ---- but since "literally the entire program" is no longer causing the bug to happen for me, I'm not sure what to do. (Literally the entire program in the sense that if I run cargo test now, with the git-reverted version of my program, I don't get the same error again.)

I was still able to test the three main channels before accidentally fixing this though:

Meta

rustc --version --verbose:

rustc 1.66.1 (90743e729 2023-01-10)
binary: rustc
commit-hash: 90743e7298aca107ddaa0c202a4d3604e29bfeb6
commit-date: 2023-01-10
host: x86_64-pc-windows-msvc
release: 1.66.1
LLVM version: 15.0.2

Since this section also asked about the nightly and beta versions, I found the following behavior for both of them: cargo test passes both tests I have, but cargo test -- --my_fn returns:

error: Unrecognized option: 'my_fn'
error: test failed, to rerun pass `--bin server`

So when I then use cargo test --bin server --my_fn the test passes fine.

Nightly version:

rustc --version --verbose
rustc 1.68.0-nightly (3020239de 2023-01-09)
binary: rustc
commit-hash: 3020239de947ec52677e9b4e853a6a9fc073d1f9
commit-date: 2023-01-09
host: x86_64-pc-windows-msvc
release: 1.68.0-nightly
LLVM version: 15.0.6

Beta version:

rustc --version --verbose
rustc 1.68.0-beta.2 (10b73bf73 2023-02-01)
binary: rustc
commit-hash: 10b73bf73a6b770cd92ad8ff538173bc3298411c
commit-date: 2023-02-01
host: x86_64-pc-windows-msvc
release: 1.68.0-beta.2
LLVM version: 15.0.6

For the record, cargo test --bin server my_fn gives what looks like the same error (as cargo test) on stable. After I accidentally fixed the issue, all three versions are not showing the error. (This was before I accidentally fixed the error)

Error output

error: internal compiler error: encountered incremental compilation error with mir_built(928f9b8b18a387f3-3f37f3ec84c3dacd)
  |
  = help: This is a known issue with the compiler. Run `cargo clean -p server` or `cargo clean` to allow your project to compile
  = note: Please follow the instructions below to create a bug report with the provided information
  = note: See <https://github.com/rust-lang/rust/issues/84970> for more information

thread 'rustc' panicked at 'Found unstable fingerprints for mir_built(928f9b8b18a387f3-3f37f3ec84c3dacd): Steal { value: RwLock(RefCell { value: Some(Body { basic_blocks: BasicBlocks { basic_blocks: [BasicBlockData { statements: [StorageLive(_1), StorageLive(_2), _2 = [generator@src\tests.rs:9:26: 14:2 (#0)]], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:8:1: 8:15 (#10), scope: scope[0] }, kind: _1 = std::future::from_generator::<[static generator@src\tests.rs:9:26: 14:2]>(move _2) -> [return: bb1, 
unwind: bb25] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_2), FakeRead(ForLet(None), _1), StorageLive(_3), _3 = move _1, FakeRead(ForLet(None), _3), StorageLive(_4), StorageLive(_5), _5 = &mut _3], terminator: Some(Terminator { source_info: SourceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:133:13: 133:65 (#15), scope: scope[5] }, kind: _4 = Pin::<&mut impl Future<Output = ()>>::new_unchecked(move _5) -> [return: bb2, unwind: bb23] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_5), FakeRead(ForLet(None), _4), StorageLive(_6), StorageLive(_7), _7 = move _4, _6 = move _7 as std::pin::Pin<&mut dyn std::future::Future<Output = ()>> (Pointer(Unsize)), StorageDead(_7), FakeRead(ForLet(None), _6), AscribeUserType(_6, o, UserTypeProjection { base: UserType(2), projs: [] }), StorageLive(_9), StorageLive(_10), StorageLive(_11), StorageLive(_12), StorageLive(_13), StorageLive(_14), StorageLive(_15)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:5: 13:11 (#0), scope: scope[7] }, kind: _15 = tokio::runtime::Builder::new_current_thread() -> [return: bb3, unwind: bb23] }), is_cleanup: false }, BasicBlockData { statements: [_14 = &mut _15], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[7] }, kind: _13 = tokio::runtime::Builder::enable_all(move _14) -> [return: bb4, unwind: bb22] }), is_cleanup: false }, BasicBlockData { statements: [_12 = &mut (*_13), StorageDead(_14)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[7] }, kind: _11 = tokio::runtime::Builder::build(move _12) -> [return: bb5, unwind: bb22] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_12), StorageLive(_16), StorageLive(_17), _17 = const "Failed building the Runtime", _16 = &(*_17)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[7] }, kind: _10 = std::result::Result::<Runtime, std::io::Error>::expect(move _11, move _16) -> [return: bb6, unwind: bb21] }), is_cleanup: false }, BasicBlockData { statements: [_9 = &_10, StorageDead(_16), StorageDead(_11), StorageLive(_18), _18 = move _6], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[7] }, kind: _0 = Runtime::block_on::<Pin<&mut dyn Future<Output = ()>>>(move _9, move _18) -> [return: bb7, unwind: bb20] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_18), StorageDead(_9)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: goto -> bb14 }), is_cleanup: false }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop(_10) -> [return: bb9, unwind: bb22] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_17)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop(_15) -> [return: bb10, unwind: bb23] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_15), StorageDead(_13), StorageDead(_10)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: unreachable }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_6), StorageDead(_4)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:1: 14:2 (#0), scope: scope[1] }, kind: drop(_3) -> [return: bb12, unwind: bb24] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_3)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:1: 14:2 (#0), scope: scope[0] }, kind: drop(_1) -> [return: bb13, unwind: bb26] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_1)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:2: 14:2 (#0), scope: scope[0] }, kind: goto -> bb19 }), is_cleanup: false }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop(_10) -> [return: bb15, unwind: bb22] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_17)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop(_15) -> [return: bb16, unwind: bb23] }), is_cleanup: false }, BasicBlockData 
{ statements: [StorageDead(_15), StorageDead(_13), StorageDead(_10), StorageDead(_6), StorageDead(_4)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:1: 14:2 (#0), scope: scope[1] }, kind: drop(_3) -> [return: bb17, unwind: bb24] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_3)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:1: 14:2 (#0), scope: scope[0] }, kind: drop(_1) -> [return: bb18, unwind: bb26] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_1)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:2: 14:2 (#0), scope: scope[0] }, kind: goto -> bb19 }), is_cleanup: 
false }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:2: 14:2 (#0), scope: scope[0] }, kind: return }), is_cleanup: false }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop(_10) -> 
bb22 }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop(_11) -> bb22 }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop(_15) -> bb23 }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:1: 14:2 (#0), scope: scope[1] }, kind: drop(_3) -> bb24 }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:1: 14:2 (#0), scope: scope[0] }, kind: drop(_1) -> bb26 }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:8:14: 8:15 (#10), scope: scope[0] }, kind: drop(_2) -> bb26 }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:9:7: 14:2 (#0), scope: scope[0] }, kind: resume }), is_cleanup: true }], predecessor_cache: PredecessorCache { cache: OnceCell(Uninit) }, switch_source_cache: SwitchSourceCache { cache: OnceCell(Uninit) }, is_cyclic: GraphIsCyclicCache { cache: OnceCell(Uninit) }, postorder_cache: PostorderCache { cache: OnceCell(Uninit) } 
}, phase: Built, pass_count: 1, source: MirSource { instance: Item(WithOptConstParam { did: DefId(0:123 ~ server[1118]::tests::add_signatory#1), const_param_did: None }), promoted: None }, source_scopes: [SourceScopeData { span: src\tests.rs:9:7: 14:2 (#0), parent_scope: None, inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 0 }, safety: Safe }) }, SourceScopeData { span: src\tests.rs:9:26: 14:2 (#0), parent_scope: Some(scope[0]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 0 }, safety: Safe }) }, SourceScopeData { span: src\tests.rs:9:26: 14:2 (#0), parent_scope: Some(scope[1]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 0 }, safety: Safe }) }, SourceScopeData { span: src\tests.rs:9:26: 14:2 (#0), parent_scope: Some(scope[2]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 0 }, safety: Safe }) }, SourceScopeData { span: src\tests.rs:9:26: 14:2 (#0), parent_scope: Some(scope[2]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 109 }, safety: Safe }) }, SourceScopeData { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:132:22: 134:10 (#15), parent_scope: Some(scope[4]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 109 }, safety: ExplicitUnsafe(HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 107 }) }) }, SourceScopeData { span: src\tests.rs:9:26: 14:2 (#0), parent_scope: Some(scope[3]), inlined: None, inlined_parent_scope: 
None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 0 }, safety: Safe }) }, 
SourceScopeData { span: src\tests.rs:13:28: 13:29 (#0), parent_scope: Some(scope[6]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 153 }, safety: Safe }) }], generator: None, local_decls: [LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: (), user_ty: None, source_info: SourceInfo { span: src\tests.rs:9:26: 9:26 (#0), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Some(User(Set(Var(VarBindingForm { binding_mode: BindByValue(Not), opt_ty_info: None, opt_match_place: Some((None, src\tests.rs:8:1: 8:15 (#10))), pat_span: src\tests.rs:8:1: 8:15 (#10) })))), internal: false, is_block_tail: None, ty: impl std::future::Future<Output = ()>, user_ty: None, source_info: SourceInfo { span: src\tests.rs:8:1: 8:15 (#10), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: [static generator@src\tests.rs:9:26: 14:2], user_ty: None, source_info: SourceInfo { span: src\tests.rs:9:26: 14:2 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Some(User(Set(Var(VarBindingForm { 
binding_mode: BindByValue(Mut), opt_ty_info: None, opt_match_place: Some((None, C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:128:22: 128:24 (#15))), pat_span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:128:13: 128:19 (#15) })))), internal: false, is_block_tail: None, ty: impl std::future::Future<Output = ()>, user_ty: None, source_info: SourceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:128:13: 128:19 (#15), scope: scope[1] } }, LocalDecl { mutability: Mut, local_info: Some(User(Set(Var(VarBindingForm { binding_mode: BindByValue(Mut), opt_ty_info: None, opt_match_place: Some((None, C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:132:22: 134:10 (#15))), pat_span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:132:13: 132:19 (#15) })))), internal: false, is_block_tail: None, ty: std::pin::Pin<&mut impl std::future::Future<Output = ()>>, user_ty: None, source_info: SourceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:132:13: 132:19 (#15), scope: scope[4] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: Some(BlockTailInfo { tail_result_is_ignored: false, span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:133:13: 133:65 (#15) }), ty: &mut impl std::future::Future<Output = ()>, user_ty: None, source_info: SourceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:133:57: 133:64 (#15), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Some(User(Set(Var(VarBindingForm { binding_mode: BindByValue(Not), opt_ty_info: None, opt_match_place: Some((None, src\tests.rs:8:1: 8:15 (#10))), pat_span: src\tests.rs:8:1: 8:15 (#10) })))), internal: false, is_block_tail: None, ty: std::pin::Pin<&mut dyn std::future::Future<Output = ()>>, user_ty: Some(UserTypeProjections { contents: [(UserTypeProjection { base: UserType(1), projs: [] }, src\tests.rs:8:1: 8:15 (#10))] }), source_info: SourceInfo { span: src\tests.rs:8:1: 8:15 (#10), scope: scope[3] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: std::pin::Pin<&mut impl std::future::Future<Output = ()>>, user_ty: None, source_info: SourceInfo { span: src\tests.rs:8:1: 8:15 (#10), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: Some(BlockTailInfo { tail_result_is_ignored: true, span: src\tests.rs:13:28: 13:29 (#0) }), ty: !, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[0] } 
}, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: &tokio::runtime::Runtime, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: None, internal: false, is_block_tail: None, ty: tokio::runtime::Runtime, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: std::result::Result<tokio::runtime::Runtime, std::io::Error>, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: &mut tokio::runtime::Builder, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: &mut tokio::runtime::Builder, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: &mut tokio::runtime::Builder, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: tokio::runtime::Builder, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:5: 13:11 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: &str, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: None, internal: false, is_block_tail: None, ty: &str, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: std::pin::Pin<&mut dyn std::future::Future<Output = ()>>, user_ty: None, source_info: SourceInfo { span: src\tests.rs:8:1: 8:15 (#10), scope: scope[0] } }], user_type_annotations: [CanonicalUserTypeAnnotation { user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }, CanonicalVarInfo { kind: Ty(General(U0)) }], value: TypeOf(DefId(2:9706 ~ core[a1be]::pin::{impl#6}::new_unchecked), UserSubsts { substs: [^0], user_self_ty: Some(UserSelfTy { impl_def_id: DefId(2:9704 ~ core[a1be]::pin::{impl#6}), self_ty: std::pin::Pin<^1> }) }) }, span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:133:13: 133:56 (#15), inferred_ty: unsafe fn(&mut impl std::future::Future<Output = ()>) -> std::pin::Pin<&mut impl std::future::Future<Output = ()>> {std::pin::Pin::<&mut impl std::future::Future<Output = ()>>::new_unchecked} }, CanonicalUserTypeAnnotation { user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Region(U0) }], value: Ty(std::pin::Pin<&mut dyn std::future::Future<Output = ()>>) }, span: src\tests.rs:8:1: 8:15 (#10), inferred_ty: std::pin::Pin<&mut dyn std::future::Future<Output = ()>> }, CanonicalUserTypeAnnotation { user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Region(U0) }], value: Ty(std::pin::Pin<&mut dyn std::future::Future<Output = ()>>) }, span: src\tests.rs:8:1: 8:15 (#10), inferred_ty: std::pin::Pin<&mut dyn std::future::Future<Output = ()>> }], arg_count: 0, spread_arg: None, var_debug_info: [VarDebugInfo { name: "body", source_info: SourceInfo { span: src\tests.rs:8:1: 8:15 (#10), scope: scope[1] }, value: _1 }, VarDebugInfo { name: "body", source_info: SourceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:128:13: 128:19 (#15), scope: scope[2] }, value: _3 }, VarDebugInfo { name: "body", source_info: SourceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:132:13: 132:19 (#15), scope: scope[3] }, value: _4 }, VarDebugInfo { name: "body", source_info: SourceInfo { span: src\tests.rs:8:1: 8:15 (#10), scope: scope[6] }, value: _6 }], span: src\tests.rs:9:7: 14:2 (#0), required_consts: [], is_polymorphic: false, tainted_by_errors: None }) }) }', compiler\rustc_query_system\src\query\plumbing.rs:658:9
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

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

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

note: rustc 1.66.1 (90743e729 2023-01-10) running on x86_64-pc-windows-msvc

note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]

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

query stack during panic:
#0 [mir_built] building MIR for `tests::add_signatory`
#1 [mir_const] preparing `tests::add_signatory` for borrow checking
#2 [mir_promoted] processing MIR for `tests::add_signatory`
#3 [mir_borrowck] borrow-checking `tests::add_signatory`
#4 [mir_drops_elaborated_and_const_checked] elaborating drops for `tests::add_signatory`
#5 [optimized_mir] optimizing MIR for `tests::add_signatory`
#6 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
Backtrace Full

``` thread 'rustc' panicked at 'Found unstable fingerprints for mir_built(928f9b8b18a387f3-3f37f3ec84c3dacd): Steal { value: RwL ock(RefCell { value: Some(Body { basic_blocks: BasicBlocks { basic_blocks: [BasicBlockData { statements: [StorageLive(_1), S torageLive(_2), _2 = [generator@src\tests.rs:9:26: 14:2 (#0)]], terminator: Some(Terminator { source_info: SourceInfo { span : src\tests.rs:8:1: 8:15 (#10), scope: scope[0] }, kind: _1 = std::future::from_generator::<[static generator@src\tests.rs:9 :26: 14:2]>(move _2) -> [return: bb1, unwind: bb25] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_2), FakeRead(ForLet(None), _1), StorageLive(_3), _3 = move _1, FakeRead(ForLet(None), _3), StorageLive(_4), StorageLive(_5), _5 = &mut _3], terminator: Some(Terminator { source_info: SourceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc 6299db9ec823\tokio-1.25.0\src\macros\pin.rs:133:13: 133:65 (#15), scope: scope[5] }, kind: _4 = Pin::<&mut impl Future>::new_unchecked(move _5) -> [return: bb2, unwind: bb23] }), is_cleanup: false }, BasicBlockData { statements: [Stora geDead(_5), FakeRead(ForLet(None), _4), StorageLive(_6), StorageLive(_7), _7 = move _4, _6 = move _7 as std::pin::Pin<&mut d yn std::future::Future> (Pointer(Unsize)), StorageDead(_7), FakeRead(ForLet(None), _6), AscribeUserType(_6, o, UserTypeProjection { base: UserType(2), projs: [] }), StorageLive(_9), StorageLive(_10), StorageLive(_11), StorageLive(_12), StorageLive(_13), StorageLive(_14), StorageLive(_15)], terminator: Some(Terminator { source_info: SourceInfo { span: src\te sts.rs:13:5: 13:11 (#0), scope: scope[7] }, kind: _15 = tokio::runtime::Builder::new_current_thread() -> [return: bb3, unwin d: bb23] }), is_cleanup: false }, BasicBlockData { statements: [_14 = &mut _15], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[7] }, kind: _13 = tokio::runtime::Builder::enable_all(move _1 4) -> [return: bb4, unwind: bb22] }), is_cleanup: false }, BasicBlockData { statements: [_12 = &mut (*_13), StorageDead(_14) ], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[7] }, kind: _11 = tokio::runtime::Builder::build(move _12) -> [return: bb5, unwind: bb22] }), is_cleanup: false }, BasicBlockData { stateme nts: [StorageDead(_12), StorageLive(_16), StorageLive(_17), _17 = const "Failed building the Runtime", _16 = &(*_17)], termi nator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[7] }, kind: _10 = std:: result::Result::::expect(move _11, move _16) -> [return: bb6, unwind: bb21] }), is_cleanup: false } , BasicBlockData { statements: [_9 = &_10, StorageDead(_16), StorageDead(_11), StorageLive(_18), _18 = move _6], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[7] }, kind: _0 = Runtime::blo ck_on::>>(move _9, move _18) -> [return: bb7, unwind: bb20] }), is_cleanup: false }, BasicB lockData { statements: [StorageDead(_18), StorageDead(_9)], terminator: Some(Terminator { source_info: SourceInfo { span: sr c\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: goto -> bb14 }), is_cleanup: false }, BasicBlockData { statements: [] , terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: dro p(_10) -> [return: bb9, unwind: bb22] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_17)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop(_15) -> [ret urn: bb10, unwind: bb23] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_15), StorageDead(_13), StorageD ead(_10)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: unreachable }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_6), StorageDead(_4)], terminator: Some (Terminator { source_info: SourceInfo { span: src\tests.rs:14:1: 14:2 (#0), scope: scope[1] }, kind: drop(_3) -> [return: bb 12, unwind: bb24] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_3)], terminator: Some(Terminator { sou rce_info: SourceInfo { span: src\tests.rs:14:1: 14:2 (#0), scope: scope[0] }, kind: drop(_1) -> [return: bb13, unwind: bb26] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_1)], terminator: Some(Terminator { source_info: SourceI nfo { span: src\tests.rs:14:2: 14:2 (#0), scope: scope[0] }, kind: goto -> bb19 }), is_cleanup: false }, BasicBlockData { st atements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop(_10) -> [return: bb15, unwind: bb22] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_17)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop (_15) -> [return: bb16, unwind: bb23] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_15), StorageDead(_ 13), StorageDead(_10), StorageDead(_6), StorageDead(_4)], terminator: Some(Terminator { source_info: SourceInfo { span: src\ tests.rs:14:1: 14:2 (#0), scope: scope[1] }, kind: drop(_3) -> [return: bb17, unwind: bb24] }), is_cleanup: false }, BasicBl ockData { statements: [StorageDead(_3)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:1: 14 :2 (#0), scope: scope[0] }, kind: drop(_1) -> [return: bb18, unwind: bb26] }), is_cleanup: false }, BasicBlockData { stateme nts: [StorageDead(_1)], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:14:2: 14:2 (#0), scope: s cope[0] }, kind: goto -> bb19 }), is_cleanup: false }, BasicBlockData { statements: [], terminator: Some(Terminator { source _info: SourceInfo { span: src\tests.rs:14:2: 14:2 (#0), scope: scope[0] }, kind: return }), is_cleanup: false }, BasicBlockD ata { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: s cope[7] }, kind: drop(_10) -> bb22 }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { so urce_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[7] }, kind: drop(_11) -> bb22 }), is_cleanup: tru e }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:13:28: 13:2 9 (#0), scope: scope[7] }, kind: drop(_15) -> bb23 }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some (Terminator { source_info: SourceInfo { span: src\tests.rs:14:1: 14:2 (#0), scope: scope[1] }, kind: drop(_3) -> bb24 }), is _cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.r s:14:1: 14:2 (#0), scope: scope[0] }, kind: drop(_1) -> bb26 }), is_cleanup: true }, BasicBlockData { statements: [], termin ator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:8:14: 8:15 (#10), scope: scope[0] }, kind: drop(_2) -> bb26 }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: src\tests.rs:9:7: 14:2 (#0), scope: scope[0] }, kind: resume }), is_cleanup: true }], predecessor_cache: PredecessorCache { cache: OnceCell(Uninit) }, switch_source_cache: SwitchSourceCache { cache: OnceCell(Uninit) }, is_cyclic: GraphIsCyclicCache { cache: OnceCell(Uninit) }, postorder_cache: PostorderCache { cache: OnceCell(Uninit) } }, phase: Built, pass_count: 1, so urce: MirSource { instance: Item(WithOptConstParam { did: DefId(0:123 ~ server[1118]::tests::add_signatory#1), const_param_d id: None }), promoted: None }, source_scopes: [SourceScopeData { span: src\tests.rs:9:7: 14:2 (#0), parent_scope: None, inli ned: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: De fId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 0 }, safety: Safe }) }, SourceScopeData { span: src\tests.rs: 9:26: 14:2 (#0), parent_scope: Some(scope[0]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalDa ta { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 0 }, safet y: Safe }) }, SourceScopeData { span: src\tests.rs:9:26: 14:2 (#0), parent_scope: Some(scope[1]), inlined: None, inlined_par ent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[111 8]::tests::add_signatory#1) }, local_id: 0 }, safety: Safe }) }, SourceScopeData { span: src\tests.rs:9:26: 14:2 (#0), paren t_scope: Some(scope[2]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 0 }, safety: Safe }) }, SourceSc opeData { span: src\tests.rs:9:26: 14:2 (#0), parent_scope: Some(scope[2]), inlined: None, inlined_parent_scope: None, local _data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signato ry#1) }, local_id: 109 }, safety: Safe }) }, SourceScopeData { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299d b9ec823\tokio-1.25.0\src\macros\pin.rs:132:22: 134:10 (#15), parent_scope: Some(scope[4]), inlined: None, inlined_parent_sco pe: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tes ts::add_signatory#1) }, local_id: 109 }, safety: ExplicitUnsafe(HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]: :tests::add_signatory#1) }, local_id: 107 }) }) }, SourceScopeData { span: src\tests.rs:9:26: 14:2 (#0), parent_scope: Some( scope[3]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId { owner: Owner Id { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, local_id: 0 }, safety: Safe }) }, SourceScopeData { span : src\tests.rs:13:28: 13:29 (#0), parent_scope: Some(scope[6]), inlined: None, inlined_parent_scope: None, local_data: Set(S ourceScopeLocalData { lint_root: HirId { owner: OwnerId { def_id: DefId(0:123 ~ server[1118]::tests::add_signatory#1) }, loc al_id: 153 }, safety: Safe }) }], generator: None, local_decls: [LocalDecl { mutability: Mut, local_info: None, internal: fa lse, is_block_tail: None, ty: (), user_ty: None, source_info: SourceInfo { span: src\tests.rs:9:26: 9:26 (#0), scope: scope[ 0] } }, LocalDecl { mutability: Not, local_info: Some(User(Set(Var(VarBindingForm { binding_mode: BindByValue(Not), opt_ty_i nfo: None, opt_match_place: Some((None, src\tests.rs:8:1: 8:15 (#10))), pat_span: src\tests.rs:8:1: 8:15 (#10) })))), intern al: false, is_block_tail: None, ty: impl std::future::Future, user_ty: None, source_info: SourceInfo { span: sr c\tests.rs:8:1: 8:15 (#10), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_ta il: None, ty: [static generator@src\tests.rs:9:26: 14:2], user_ty: None, source_info: SourceInfo { span: src\tests.rs:9:26: 14:2 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Some(User(Set(Var(VarBindingForm { binding_mode: Bi ndByValue(Mut), opt_ty_info: None, opt_match_place: Some((None, C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec8 23\tokio-1.25.0\src\macros\pin.rs:128:22: 128:24 (#15))), pat_span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db 9ec823\tokio-1.25.0\src\macros\pin.rs:128:13: 128:19 (#15) })))), internal: false, is_block_tail: None, ty: impl std::future ::Future, user_ty: None, source_info: SourceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299 db9ec823\tokio-1.25.0\src\macros\pin.rs:128:13: 128:19 (#15), scope: scope[1] } }, LocalDecl { mutability: Mut, local_info: Some(User(Set(Var(VarBindingForm { binding_mode: BindByValue(Mut), opt_ty_info: None, opt_match_place: Some((None, C:\Users\ ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:132:22: 134:10 (#15))), pat_span: C:\Us ers\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:132:13: 132:19 (#15) })))), interna l: false, is_block_tail: None, ty: std::pin::Pin<&mut impl std::future::Future>, user_ty: None, source_info: So urceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:132:13: 132:1 9 (#15), scope: scope[4] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: Some(BlockTailI nfo { tail_result_is_ignored: false, span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\m acros\pin.rs:133:13: 133:65 (#15) }), ty: &mut impl std::future::Future, user_ty: None, source_info: SourceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:133:57: 133:64 (#15), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Some(User(Set(Var(VarBindingForm { binding_mode: BindByValue( Not), opt_ty_info: None, opt_match_place: Some((None, src\tests.rs:8:1: 8:15 (#10))), pat_span: src\tests.rs:8:1: 8:15 (#10) })))), internal: false, is_block_tail: None, ty: std::pin::Pin<&mut dyn std::future::Future>, user_ty: Some(Us erTypeProjections { contents: [(UserTypeProjection { base: UserType(1), projs: [] }, src\tests.rs:8:1: 8:15 (#10))] }), sour ce_info: SourceInfo { span: src\tests.rs:8:1: 8:15 (#10), scope: scope[3] } }, LocalDecl { mutability: Mut, local_info: None , internal: false, is_block_tail: None, ty: std::pin::Pin<&mut impl std::future::Future>, user_ty: None, source _info: SourceInfo { span: src\tests.rs:8:1: 8:15 (#10), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: Some(BlockTailInfo { tail_result_is_ignored: true, span: src\tests.rs:13:28: 13:29 (#0) }), ty: !, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutab ility: Mut, local_info: None, internal: false, is_block_tail: None, ty: &tokio::runtime::Runtime, user_ty: None, source_info : SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: None, inte rnal: false, is_block_tail: None, ty: tokio::runtime::Runtime, user_ty: None, source_info: SourceInfo { span: src\tests.rs:1 3:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, t y: std::result::Result, user_ty: None, source_info: SourceInfo { span: src\tests.rs :13:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: &mut tokio::runtime::Builder, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scop e[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: &mut tokio::runtime::Buil der, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutabili ty: Mut, local_info: None, internal: false, is_block_tail: None, ty: &mut tokio::runtime::Builder, user_ty: None, source_inf o: SourceInfo { span: src\tests.rs:13:5: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, int ernal: false, is_block_tail: None, ty: tokio::runtime::Builder, user_ty: None, source_info: SourceInfo { span: src\tests.rs: 13:5: 13:11 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_block_tail: None, ty: &str, user_ty: None, source_info: SourceInfo { span: src\tests.rs:13:28: 13:29 (#0), scope: scope[0] } }, LocalDecl { mu tability: Not, local_info: None, internal: false, is_block_tail: None, ty: &str, user_ty: None, source_info: SourceInfo { sp an: src\tests.rs:13:28: 13:29 (#0), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: None, internal: false, is_ block_tail: None, ty: std::pin::Pin<&mut dyn std::future::Future>, user_ty: None, source_info: SourceInfo { spa n: src\tests.rs:8:1: 8:15 (#10), scope: scope[0] } }], user_type_annotations: [CanonicalUserTypeAnnotation { user_ty: Canoni cal { max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }, CanonicalVarInfo { kind: Ty(General(U0)) }], value: TypeOf(DefId(2:9706 ~ core[a1be]::pin::{impl#6}::new_unchecked), UserSubsts { substs: [^0], user_self_ty: Some(UserS elfTy { impl_def_id: DefId(2:9704 ~ core[a1be]::pin::{impl#6}), self_ty: std::pin::Pin<^1> }) }) }, span: C:\Users\ronit\.ca rgo\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:133:13: 133:56 (#15), inferred_ty: unsafe fn(&mu t impl std::future::Future) -> std::pin::Pin<&mut impl std::future::Future> {std::pin::Pin::<&mut impl std::future::Future>::new_unchecked} }, CanonicalUserTypeAnnotation { user_ty: Canonical { max_universe: U 0, variables: [CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Region(U0) }], value: Ty(std::pin::Pin<&mut d yn std::future::Future>) }, span: src\tests.rs:8:1: 8:15 (#10), inferred_ty: std::pin::Pin<&mut dyn std::future ::Future> }, CanonicalUserTypeAnnotation { user_ty: Canonical { max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }, CanonicalVarInfo { kind: Region(U0) }], value: Ty(std::pin::Pin<&mut dyn std::future::Future>) }, span: src\tests.rs:8:1: 8:15 (#10), inferred_ty: std::pin::Pin<&mut dyn std::future::Future> }], arg_c ount: 0, spread_arg: None, var_debug_info: [VarDebugInfo { name: "body", source_info: SourceInfo { span: src\tests.rs:8:1: 8 :15 (#10), scope: scope[1] }, value: _1 }, VarDebugInfo { name: "body", source_info: SourceInfo { span: C:\Users\ronit\.carg o\registry\src\github.com-1ecc6299db9ec823\tokio-1.25.0\src\macros\pin.rs:128:13: 128:19 (#15), scope: scope[2] }, value: _3 }, VarDebugInfo { name: "body", source_info: SourceInfo { span: C:\Users\ronit\.cargo\registry\src\github.com-1ecc6299db9ec 823\tokio-1.25.0\src\macros\pin.rs:132:13: 132:19 (#15), scope: scope[3] }, value: _4 }, VarDebugInfo { name: "body", source _info: SourceInfo { span: src\tests.rs:8:1: 8:15 (#10), scope: scope[6] }, value: _6 }], span: src\tests.rs:9:7: 14:2 (#0), required_consts: [], is_polymorphic: false, tainted_by_errors: None }) }) }', compiler\rustc_query_system\src\query\plumbing .rs:658:9 stack backtrace: 0: 0x7ffcf6ee9a62 - ::fmt::hc97dbc4fe64c9 e1d 1: 0x7ffcf6f256db - core::fmt::write::ha369a394538739aa 2: 0x7ffcf6edc18a - ::fmt::h479b71bd3dadc1d1 3: 0x7ffcf6ee97ab - std::sys::common::alloc::realloc_fallback::h233ebec439b629e2 4: 0x7ffcf6eed109 - std::panicking::default_hook::h0ab9e14ad869b271 5: 0x7ffcf6eecd8a - std::panicking::default_hook::h0ab9e14ad869b271 6: 0x7ffc91901d6e - rustc_driver[e9de03b45d14c171]::describe_lints 7: 0x7ffcf6eeda60 - std::panicking::rust_panic_with_hook::he7a40468954ae645 8: 0x7ffcf6eed7bd - ::get::h44bc3105923 add49 9: 0x7ffcf6eea76f - ::fmt::hc97dbc4fe64c9 e1d 10: 0x7ffcf6eed480 - rust_begin_unwind 11: 0x7ffcf6f5b5f5 - core::panicking::panic_fmt::h1862038ee9bad685 12: 0x7ffc93c9faa0 - rustc_query_system[7839065ace8a0431]::query::plumbing::incremental_verify_ich_cold 13: 0x7ffc93586554 - as rustc_serialize[5fa760e9e07a81b9]::serialize::Decodable >::decode 14: 0x7ffc8fcc1b46 - <&rustc_index[b766228394234ab1]::vec::IndexVec as rustc_serialize[5fa760e9e07a81b9]::serialize::Decodable>::decode 15: 0x7ffc912bb021 - >::encode 16: 0x7ffc911e6968 - ::as_any 17: 0x7ffc90c74ed0 - ::run_pass 18: 0x7ffc93439b32 - ::fmt 19: 0x7ffc8fcc1b1b - <&rustc_index[b766228394234ab1]::vec::IndexVec as rustc_serialize[5fa760e9e07a81b9]::serialize::Decodable>::decode 20: 0x7ffc912bb021 - >::encode 21: 0x7ffc911e6ab7 - ::as_any 22: 0x7ffc90c76619 - ::run_pass 23: 0x7ffc93439c36 - ::fmt 24: 0x7ffc8fcc1fd8 - <&rustc_index[b766228394234ab1]::vec::IndexVec as rustc_serialize[5fa760e9e07a81b9]::serialize::Decodable>::decode 25: 0x7ffc912bcf68 - >::encode 26: 0x7ffc911e70a0 - ::as_any 27: 0x7ffc90f5fc74 - >::from 28: 0x7ffc90f5f668 - >::from 29: 0x7ffc9343a7a3 - ::fmt 30: 0x7ffc8fcc8bda - <&rustc_index[b766228394234ab1]::vec::IndexVec as rustc_serialize[5fa760e9e07a81b9]::serialize::Decodable>::decode 31: 0x7ffc912d03c9 - >::encode 32: 0x7ffc911e8d25 - ::as_any 33: 0x7ffc917ac3ef - ::mir_borrowck_opt_const_arg 34: 0x7ffc90c77fd7 - ::run_pass 35: 0x7ffc8fb23002 - ::clone_from 36: 0x7ffc8fb9b545 - <&rustc_index[b766228394234ab1]::vec::IndexVec as rustc_serialize[5fa760e9e07a81b9]::serialize::Decodable>::decode 37: 0x7ffc912bb26d - >::encode 38: 0x7ffc911e6e1b - ::as_any 39: 0x7ffc90c7b6c7 - ::run_pass 40: 0x7ffc8fb25031 - ::clone_from 41: 0x7ffc8fbade25 - <&rustc_index[b766228394234ab1]::vec::IndexVec as rustc_serialize[5fa760e9e07a81b9]::serialize::Decodable>::decode 42: 0x7ffc912f1bc0 - >::encode 43: 0x7ffc911e7208 - ::as_any 44: 0x7ffc917cad2d - ::instance_mir 45: 0x7ffc90c49f31 - ::visit_operand 46: 0x7ffc90c46fb5 - ::visit_operand 47: 0x7ffc90c473a9 - ::visit_operand 48: 0x7ffc90c473a9 - ::visit_operand 49: 0x7ffc8f8f0b36 - rustc_monomorphize[c5e62122062f1e21]::provide 50: 0x7ffc8f8f5dfd - ::place_inlined_mono_items 51: 0x7ffc8f8eef41 - ::visit_const 52: 0x7ffc8fb260c5 - ::clone_from 53: 0x7ffc8fbca0f3 - <&rustc_index[b766228394234ab1]::vec::IndexVec as rustc_serialize[5fa760e9e07a81b9]::serialize::Decodable>::decode 54: 0x7ffc8fcaacb6 - <&rustc_index[b766228394234ab1]::vec::IndexVec as rustc_serialize[5fa760e9e07a81b9]::serialize::Decodable>::decode 55: 0x7ffc8fce9795 - <&rustc_index[b766228394234ab1]::vec::IndexVec as rustc_serialize[5fa760e9e07a81b9]::serialize::Decodable>::decode 56: 0x7ffc8fb387aa - ::try_mark_green 57: 0x7ffc8f18fdf7 - ::i8p_llcx 58: 0x7ffc8f17f4bc - ::codegen_crate 59: 0x7ffc8f169264 - rustc_interface[10a7111f9310fd6d]::passes::analysis 60: 0x7ffc8f15c639 - ::pre_expansion_lint 61: 0x7ffc8f14b04c - ::ongoing_codegen 62: 0x7ffc8f11c5c3 - ::fmt 63: 0x7ffc8f11b6dd - rustc_driver[e9de03b45d14c171]::args::arg_expand_all 64: 0x7ffc8f10c809 - 65: 0x7ffc8f103990 - 66: 0x7ffcf6efeabc - std::sys::windows::thread::Thread::new::haf1327b4da6a4ac1 67: 0x7ffd35c37614 - BaseThreadInitThunk 68: 0x7ffd37a226a1 - RtlUserThreadStart error: internal compiler error: unexpected panic note: the compiler unexpectedly panicked. this is a bug. note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&tem plate=ice.md note: rustc 1.66.1 (90743e729 2023-01-10) running on x86_64-pc-windows-msvc note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED] note: some of the compiler flags provided by cargo are hidden query stack during panic: #0 [mir_built] building MIR for `tests::add_signatory` #1 [mir_const] preparing `tests::add_signatory` for borrow checking #2 [mir_promoted] processing MIR for `tests::add_signatory` #3 [mir_borrowck] borrow-checking `tests::add_signatory` #4 [mir_drops_elaborated_and_const_checked] elaborating drops for `tests::add_signatory` #5 [optimized_mir] optimizing MIR for `tests::add_signatory` #6 [collect_and_partition_mono_items] collect_and_partition_mono_items end of query stack warning: `server` (bin "server" test) generated 22 warnings error: could not compile `server` due to previous error; 22 warnings emitted ```

This was the first time I'm submitting a bug report for anything, so any feedback is appreciated. Thank you! And I apologize once more that I'm unable to find a code snippet which replicates the error. Unreplicable errors are the worst.

jhwgh1968 commented 1 year ago

I, too, have hit this bug with a similar import error, code change, recompile cycle.

Good news: by coincidence, I made a ZFS snapshot of the filesystem minutes after it happened. I can restore that and repro at will.

Bad news: it seems like if I change anything it invalidates the cache, recompiles properly, and goes away.

I was planning to trim files in target/ until it was a managable size and then privately offer a tarball to a rust dev who would look at it. But now I'm not sure I can actually ship my reproducer directory properly.

Any tips for making this into a docker container? What environment does it check?

EDIT: I'm on stable, 1.66.1

jhwgh1968 commented 1 year ago

I have figured out how to make a docker container which reproduces the problem. I did it by nailing down a couple env vars, and copying way too much of my home dir into it.

I will prune it down procedurally to something much smaller. Hopefully I'll have a perfect reproduction within the next week or two that is not immensely bloated.

jhwgh1968 commented 1 year ago

I have successfully created a Docker container which reproduces the problem, based on some code of mine that is not ready for the public. But I'd be willing to send it to a compiler dev for examination.

After significant pruning, the container is ~0.5GB compressed (~1.6 GB uncompressed). But keep in mind it is completely self-contained, so that includes the entire toolchain which reproduces the problem (the then-newest stable).

I'll offer a file sharking link privately via e-mail to any rust dev who would take this issue up.

Pinging as first ideas:

workingjubilee commented 1 year ago

@jhwgh1968 Sure, try this handle at gmail?

jhwgh1968 commented 1 year ago

E-mail sent, @workingjubilee!