Skip to content

ICE / Hang found DefPathHash collision between DefPath  #140731

Closed
@matthiaskrgr

Description

@matthiaskrgr

Code

The compiler first crashes, thn hangs when trying to print the query stack

// Various examples of structs whose fields are not well-formed.

#![allow(dead_code)]

trait Trait<'a, T> {
    type Out;
}
trait Trait1<'a, 'b, T> {
    type Out;
}

impl PartialEq for Foo {
    fn eq(&self, _: &Foo) -> bool {
        false // ha ha!
    }
}

struct RefOk<'a, T:'a> {
    field: &'a T
}

impl<'a, T> Trait<'a, T> for u32 {
    use super::*;
    type Opq0<'a, 'b> = impl Sized;
    type Opq1<'a> = impl for<'b> Trait<'b, Ty = Opq0<'a, 'b>>;
    type Opq2 = impl for<'a> Trait<'a, Ty = Opq1<'a>>;
    #[define_opaque(Opq2)]
    fn test() -> Opq2 {}
    //~^ ERROR: expected generic lifetime parameter, found `'a`
}

impl<'a, 'b, T> Trait1<'a, 'b, T> for u32 {
    type Out = &'decl_macro &'b T; //~ ERROR reference has a longer lifetime than the data
}

fn main() { }

Meta

rustc --version --verbose:

rustc 1.88.0-nightly (27d6200a7 2025-05-06)
binary: rustc
commit-hash: 27d6200a70601f6fcf419bf2f9e37989f3624ca4
commit-date: 2025-05-06
host: x86_64-unknown-linux-gnu
release: 1.88.0-nightly
LLVM version: 20.1.4

Error output

yes
Backtrace


thread 'rustc' panicked at compiler/rustc_hir/src/definitions.rs:70:13:
found DefPathHash collision between DefPath {
    data: [
        DisambiguatedDefPathData {
            data: Impl,
            disambiguator: 1,
        },
        DisambiguatedDefPathData {
            data: TypeNs(
                "Opq2",
            ),
            disambiguator: 0,
        },
        DisambiguatedDefPathData {
            data: OpaqueTy,
            disambiguator: 0,
        },
        DisambiguatedDefPathData {
            data: LifetimeNs(
                "'a",
            ),
            disambiguator: 0,
        },
    ],
    krate: crate0,
} and DefPath {
    data: [
        DisambiguatedDefPathData {
            data: Impl,
            disambiguator: 1,
        },
        DisambiguatedDefPathData {
            data: TypeNs(
                "Opq2",
            ),
            disambiguator: 0,
        },
        DisambiguatedDefPathData {
            data: OpaqueTy,
            disambiguator: 0,
        },
        DisambiguatedDefPathData {
            data: LifetimeNs(
                "'a",
            ),
            disambiguator: 0,
        },
    ],
    krate: crate0,
}. Compilation cannot continue.
stack backtrace:
   0:     0x7d192392adb3 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h49add6602009883c
   1:     0x7d1924005987 - core::fmt::write::h2b8bafb760aedb33
   2:     0x7d192505ed51 - std::io::Write::write_fmt::ha8b80ee893d079cf
   3:     0x7d192392ac12 - std::sys::backtrace::BacktraceLock::print::hadbbabeac5dd5672
   4:     0x7d192392e80a - std::panicking::default_hook::{{closure}}::ha7627b2e1192d33c
   5:     0x7d192392e38f - std::panicking::default_hook::h2f275c3e1f15d3b8
   6:     0x7d192296c9f3 - std[ce8ccf77ffb023bf]::panicking::update_hook::<alloc[b6746bf1a130dcae]::boxed::Box<rustc_driver_impl[56fd1ef501a43154]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x7d192392f083 - std::panicking::rust_panic_with_hook::h7a5ac864f0ff33c8
   8:     0x7d192392ed7a - std::panicking::begin_panic_handler::{{closure}}::h0dc8b96251fd771a
   9:     0x7d192392b279 - std::sys::backtrace::__rust_end_short_backtrace::h57fb7450f73ac317
  10:     0x7d192392ea3d - __rustc[f04850fc019d6c8f]::rust_begin_unwind
  11:     0x7d192027f560 - core::panicking::panic_fmt::h87fef3678568c0b5
  12:     0x7d1924f437e1 - <rustc_middle[3c56263abe6b39ea]::ty::context::TyCtxt>::create_def
  13:     0x7d1921256777 - <rustc_hir_analysis[a1f9f0d5967b6f8b]::collect::resolve_bound_vars::BoundVarContext>::remap_opaque_captures
  14:     0x7d1924cb2ab2 - <rustc_hir_analysis[a1f9f0d5967b6f8b]::collect::resolve_bound_vars::BoundVarContext as rustc_hir[73e75b1373ad420a]::intravisit::Visitor>::visit_opaque_ty
  15:     0x7d1924ca5ecb - <rustc_hir_analysis[a1f9f0d5967b6f8b]::collect::resolve_bound_vars::BoundVarContext as rustc_hir[73e75b1373ad420a]::intravisit::Visitor>::visit_impl_item
  16:     0x7d1924ca4b43 - rustc_hir_analysis[a1f9f0d5967b6f8b]::collect::resolve_bound_vars::resolve_bound_vars
  17:     0x7d1924ca4884 - rustc_query_impl[831cfaf2ee55e692]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[831cfaf2ee55e692]::query_impl::resolve_bound_vars::dynamic_query::{closure#2}::{closure#0}, rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 8usize]>>
  18:     0x7d1924749555 - rustc_query_system[fd4cfdcfbd5ee71f]::query::plumbing::try_execute_query::<rustc_query_impl[831cfaf2ee55e692]::DynamicConfig<rustc_data_structures[6dfce788614e05b9]::vec_cache::VecCache<rustc_hir[73e75b1373ad420a]::hir_id::OwnerId, rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[fd4cfdcfbd5ee71f]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[831cfaf2ee55e692]::plumbing::QueryCtxt, false>
  19:     0x7d1924748fd2 - rustc_query_impl[831cfaf2ee55e692]::query_impl::resolve_bound_vars::get_query_non_incr::__rust_end_short_backtrace
  20:     0x7d1925e10fcb - <rustc_hir_analysis[a1f9f0d5967b6f8b]::collect::resolve_bound_vars::provide::{closure#2} as core[380bbaee9f56bd6b]::ops::function::FnOnce<(rustc_middle[3c56263abe6b39ea]::ty::context::TyCtxt, rustc_span[39b72d7c522ce93c]::def_id::LocalDefId)>>::call_once.cold
  21:     0x7d19252d6524 - rustc_query_impl[831cfaf2ee55e692]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[831cfaf2ee55e692]::query_impl::opaque_captured_lifetimes::dynamic_query::{closure#2}::{closure#0}, rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 16usize]>>
  22:     0x7d19252d650d - <rustc_query_impl[831cfaf2ee55e692]::query_impl::opaque_captured_lifetimes::dynamic_query::{closure#2} as core[380bbaee9f56bd6b]::ops::function::FnOnce<(rustc_middle[3c56263abe6b39ea]::ty::context::TyCtxt, rustc_span[39b72d7c522ce93c]::def_id::LocalDefId)>>::call_once
  23:     0x7d19244863cb - rustc_query_system[fd4cfdcfbd5ee71f]::query::plumbing::try_execute_query::<rustc_query_impl[831cfaf2ee55e692]::DynamicConfig<rustc_data_structures[6dfce788614e05b9]::vec_cache::VecCache<rustc_span[39b72d7c522ce93c]::def_id::LocalDefId, rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 16usize]>, rustc_query_system[fd4cfdcfbd5ee71f]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[831cfaf2ee55e692]::plumbing::QueryCtxt, false>
  24:     0x7d19252e0f6a - rustc_query_impl[831cfaf2ee55e692]::query_impl::opaque_captured_lifetimes::get_query_non_incr::__rust_end_short_backtrace
  25:     0x7d19248c6959 - <dyn rustc_hir_analysis[a1f9f0d5967b6f8b]::hir_ty_lowering::HirTyLowerer>::lower_ty
  26:     0x7d1924455a5c - rustc_hir_analysis[a1f9f0d5967b6f8b]::collect::type_of::type_of
  27:     0x7d1924450c36 - rustc_query_impl[831cfaf2ee55e692]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[831cfaf2ee55e692]::query_impl::type_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 8usize]>>
  28:     0x7d192444f87f - rustc_query_system[fd4cfdcfbd5ee71f]::query::plumbing::try_execute_query::<rustc_query_impl[831cfaf2ee55e692]::DynamicConfig<rustc_query_system[fd4cfdcfbd5ee71f]::query::caches::DefIdCache<rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[831cfaf2ee55e692]::plumbing::QueryCtxt, false>
  29:     0x7d192444f42b - rustc_query_impl[831cfaf2ee55e692]::query_impl::type_of::get_query_non_incr::__rust_end_short_backtrace
  30:     0x7d19248e2da6 - rustc_hir_analysis[a1f9f0d5967b6f8b]::check::wfcheck::check_well_formed
  31:     0x7d19248e0dcb - rustc_query_impl[831cfaf2ee55e692]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[831cfaf2ee55e692]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 1usize]>>
  32:     0x7d19248e0671 - rustc_query_system[fd4cfdcfbd5ee71f]::query::plumbing::try_execute_query::<rustc_query_impl[831cfaf2ee55e692]::DynamicConfig<rustc_data_structures[6dfce788614e05b9]::vec_cache::VecCache<rustc_span[39b72d7c522ce93c]::def_id::LocalDefId, rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[fd4cfdcfbd5ee71f]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[831cfaf2ee55e692]::plumbing::QueryCtxt, false>
  33:     0x7d19248e014a - rustc_query_impl[831cfaf2ee55e692]::query_impl::check_well_formed::get_query_non_incr::__rust_end_short_backtrace
  34:     0x7d19248dd6e5 - rustc_hir_analysis[a1f9f0d5967b6f8b]::check::wfcheck::check_mod_type_wf
  35:     0x7d19248dd4df - rustc_query_impl[831cfaf2ee55e692]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[831cfaf2ee55e692]::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 1usize]>>
  36:     0x7d1924fe8ac4 - rustc_query_system[fd4cfdcfbd5ee71f]::query::plumbing::try_execute_query::<rustc_query_impl[831cfaf2ee55e692]::DynamicConfig<rustc_query_system[fd4cfdcfbd5ee71f]::query::caches::DefaultCache<rustc_span[39b72d7c522ce93c]::def_id::LocalModDefId, rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[831cfaf2ee55e692]::plumbing::QueryCtxt, false>
  37:     0x7d1924fe8851 - rustc_query_impl[831cfaf2ee55e692]::query_impl::check_mod_type_wf::get_query_non_incr::__rust_end_short_backtrace
  38:     0x7d19242dc544 - rustc_hir_analysis[a1f9f0d5967b6f8b]::check_crate
  39:     0x7d19244753f7 - rustc_interface[8bf1101b7dd5e9b7]::passes::run_required_analyses
  40:     0x7d1924fe99de - rustc_interface[8bf1101b7dd5e9b7]::passes::analysis
  41:     0x7d1924fe99b5 - rustc_query_impl[831cfaf2ee55e692]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[831cfaf2ee55e692]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 0usize]>>
  42:     0x7d1924f74f3a - rustc_query_system[fd4cfdcfbd5ee71f]::query::plumbing::try_execute_query::<rustc_query_impl[831cfaf2ee55e692]::DynamicConfig<rustc_query_system[fd4cfdcfbd5ee71f]::query::caches::SingleCache<rustc_middle[3c56263abe6b39ea]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[831cfaf2ee55e692]::plumbing::QueryCtxt, false>
  43:     0x7d1924f74c0f - rustc_query_impl[831cfaf2ee55e692]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  44:     0x7d19251a5987 - rustc_interface[8bf1101b7dd5e9b7]::passes::create_and_enter_global_ctxt::<core[380bbaee9f56bd6b]::option::Option<rustc_interface[8bf1101b7dd5e9b7]::queries::Linker>, rustc_driver_impl[56fd1ef501a43154]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  45:     0x7d1925094766 - rustc_interface[8bf1101b7dd5e9b7]::interface::run_compiler::<(), rustc_driver_impl[56fd1ef501a43154]::run_compiler::{closure#0}>::{closure#1}
  46:     0x7d19250588fe - std[ce8ccf77ffb023bf]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[8bf1101b7dd5e9b7]::util::run_in_thread_with_globals<rustc_interface[8bf1101b7dd5e9b7]::util::run_in_thread_pool_with_globals<rustc_interface[8bf1101b7dd5e9b7]::interface::run_compiler<(), rustc_driver_impl[56fd1ef501a43154]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  47:     0x7d1925058d74 - <<std[ce8ccf77ffb023bf]::thread::Builder>::spawn_unchecked_<rustc_interface[8bf1101b7dd5e9b7]::util::run_in_thread_with_globals<rustc_interface[8bf1101b7dd5e9b7]::util::run_in_thread_pool_with_globals<rustc_interface[8bf1101b7dd5e9b7]::interface::run_compiler<(), rustc_driver_impl[56fd1ef501a43154]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[380bbaee9f56bd6b]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  48:     0x7d192505a16b - std::sys::pal::unix::thread::Thread::new::thread_start::h4984952b7bb83f95
  49:     0x7d191eea370a - <unknown>
  50:     0x7d191ef27aac - <unknown>
  51:                0x0 - <unknown>

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

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

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

note: please attach the file at `/tmp/rustc-ice-2025-05-07T06_17_26-487536.txt` to your bug report

query stack during panic:

<HANG>

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️I-hangIssue: The compiler never terminates, due to infinite loops, deadlock, livelock, etc.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions