The codebase is getting larger, so its hard to provide a minimal verifiable snapshot, but the below code is what I believe to be the relevant sections. Interestingly after playing with the bug, it only ever popped up on the entity_type("type") in the builder. Other parameters showed no apparent issues.
thread 'rustc' panicked at 'Found unstable fingerprints for mir_built(326119d547d915d1-67e8e5f6d62e5f31):
Steal { value: RwLock(RefCell { value: Some(Body { basic_blocks: BasicBlocks { basic_blocks: [BasicBlockData { statements: [StorageLive(_3), StorageLive(_4), _4 = move _1, FakeRead(ForLet(None), _4), StorageLive(_5), StorageLive(_6), StorageLive(_7), StorageLive(_8), _8 = move _2], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[1] }, kind: _7 = <VALUE as Into<std::string::String>>::into(move _8) -> [return: bb1, unwind: bb10] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_8), _6 = Option::<std::string::String>::Some(move _7)], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:23: 12:24 (#29), scope: scope[1] }, kind: drop(_7) -> [return: bb2, unwind: bb9] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_7), _5 = Option::<Option<std::string::String>>::Some(move _6)], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:23: 12:24 (#29), scope: scope[1] }, kind: drop(_6) -> [return: bb3, unwind: bb8] }), is_cleanup: false }, BasicBlockData { statements: [StorageDead(_6)], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#475), scope: scope[1] }, kind: drop(((*_4).3: std::option::Option<std::option::Option<std::string::String>>)) -> [return: bb4, unwind: bb5] }), is_cleanup: false }, BasicBlockData { statements: [((*_4).3: std::option::Option<std::option::Option<std::string::String>>) = move _5], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:23: 12:24 (#29), scope: scope[1] }, kind: drop(_5) -> [return: bb6, unwind: bb11] }), is_cleanup: false }, BasicBlockData { statements: [((*_4).3: std::option::Option<std::option::Option<std::string::String>>) = move _5], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#475), scope: scope[1] }, kind: goto -> bb8 }), is_cleanup: true }, BasicBlockData { statements: [StorageDead(_5), _3 = &mut (*_4), StorageDead(_4), _0 = &mut (*_3), StorageDead(_3)], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:23: 12:24 (#29), scope: scope[0] }, kind: drop(_2) -> [return: bb7, unwind: bb12] }), is_cleanup: false }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:24: 12:24 (#29), scope: scope[0] }, kind: return }), is_cleanup: false }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:23: 12:24 (#29), scope: scope[1] }, kind: drop(_5) -> [return: bb11, unwind terminate] }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:23: 12:24 (#29), scope: scope[1] }, kind: drop(_6) -> [return: bb11, unwind terminate] }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:23: 12:24 (#29), scope: scope[1] }, kind: drop(_8) -> [return: bb11, unwind terminate] }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:23: 12:24 (#29), scope: scope[0] }, kind: drop(_2) -> [return: bb12, unwind terminate] }), is_cleanup: true }, BasicBlockData { statements: [], terminator: Some(Terminator { source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), 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:150 ~ project_thebrain[1e5d]::endpoints::entities::{impl#3}::entity_type), const_param_did: None }), promoted: None }, source_scopes: [SourceScopeData { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), parent_scope: None, inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId(DefId(0:150 ~ project_thebrain[1e5d]::endpoints::entities::{impl#3}::entity_type).0), safety: Safe }) }, SourceScopeData { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), parent_scope: Some(scope[0]), inlined: None, inlined_parent_scope: None, local_data: Set(SourceScopeLocalData { lint_root: HirId(DefId(0:150 ~ project_thebrain[1e5d]::endpoints::entities::{impl#3}::entity_type).0), safety: Safe }) }], generator: None, local_decls: [LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: &mut endpoints::entities::EntititesEndpointBuilder, user_ty: None, source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[0] } }, LocalDecl { mutability: Not, local_info: Set(User(ImplicitSelf(MutRef))), internal: false, ty: &mut endpoints::entities::EntititesEndpointBuilder, user_ty: None, source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), 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, rust/src/endpoints/entities.rs:12:17: 12:24 (#29))), pat_span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29) }))), internal: false, ty: VALUE, user_ty: None, source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: &mut endpoints::entities::EntititesEndpointBuilder, user_ty: None, source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(User(Var(VarBindingForm { binding_mode: BindByValue(Mut), opt_ty_info: None, opt_match_place: Some((None, rust/src/endpoints/entities.rs:12:17: 12:24 (#29))), pat_span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29) }))), internal: false, ty: &mut endpoints::entities::EntititesEndpointBuilder, user_ty: None, source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: std::option::Option<std::option::Option<std::string::String>>, user_ty: None, source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(AggregateTemp), internal: false, ty: std::option::Option<std::string::String>, user_ty: None, source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(AggregateTemp), internal: false, ty: std::string::String, user_ty: None, source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[0] } }, LocalDecl { mutability: Mut, local_info: Set(Boring), internal: false, ty: VALUE, user_ty: None, source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[0] } }], user_type_annotations: [], arg_count: 2, spread_arg: None, var_debug_info: [VarDebugInfo { name: "self", source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[0] }, value: _1, argument_index: Some(1) }, VarDebugInfo { name: "value", source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[0] }, value: _2, argument_index: Some(2) }, VarDebugInfo { name: "new", source_info: SourceInfo { span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), scope: scope[1] }, value: _4, argument_index: None }], span: rust/src/endpoints/entities.rs:12:17: 12:24 (#29), required_consts: [], is_polymorphic: true, injection_phase: None, tainted_by_errors: None }) }) }', /rustc/90c541806f23a127002de5b4038be731ba1458ca/compiler/rustc_query_system/src/query/plumbing.rs:715:9
Code
The codebase is getting larger, so its hard to provide a minimal verifiable snapshot, but the below code is what I believe to be the relevant sections. Interestingly after playing with the bug, it only ever popped up on the
entity_type("type")in the builder. Other parameters showed no apparent issues.Meta
rustc --version --verbose:Error output
Backtrace