Skip to content

ICE: failed to normalize std::option::Option<Alias(Projection ...  #122044

Closed

Description

@matthiaskrgr

auto-reduced (treereduce-rust):

use std::hint::black_box;

trait Func {
    type Ret: Id;
}

trait Id {
    type Assoc;
}
impl Id for u32 {}
impl Id for u32 {}

impl<F: FnOnce() -> R, R: Id> Func for F {
    type Ret = R;
}

fn bar() -> impl Copy + Id {
    0u32
}

struct Foo<T: Func> {
    _func: T,
    value: Option<<<T as Func>::Ret as Id>::Assoc>,
}

fn main() {
    let mut fn_def = black_box(Foo {
        _func: bar,
        value: None,
    });
    let fn_ptr = black_box(Foo {
        _func: bar as fn() -> _,
        value: None,
    });

    fn_def.value = fn_ptr.value;
}

original:

use std::hint::black_box;

trait Func {
    type Ret: Id;
}

trait Id {
    type Assoc;
}
impl Id for u32 {
    type Assoc = u32;
}
impl Id for u32 {
    type Assoc = i32;
}

impl<F: FnOnce() -> R, R: Id> Func for F {
    type Ret = R;
}

#[inline(always)]
fn bar() -> impl Copy + Id {
    0u32
}

struct Foo<T: Func> {
    _func: T,
    value: Option<<<T as Func>::Ret as Id>::Assoc>,
}

fn main() {
    let mut fn_def = black_box(Foo {
        _func: bar,
        value: None,
    });
    let fn_ptr = black_box(Foo {
        _func: bar as fn() -> _,
        value: None,
    });
    
    fn_def.value = fn_ptr.value;
    black_box(Foo {
        _func: bar,
        value: None,
    });
}

Version information

rustc 1.78.0-nightly (c7beecf3e 2024-03-05)
binary: rustc
commit-hash: c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e
commit-date: 2024-03-05
host: x86_64-unknown-linux-gnu
release: 1.78.0-nightly
LLVM version: 18.1.0

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc

Program output

error[E0119]: conflicting implementations of trait `Id` for type `u32`
  --> /tmp/icemaker_global_tempdir.Vcuzw2RFrTGI/rustc_testrunner_tmpdir_reporting.l4vSpjX9SkGn/mvce.rs:11:1
   |
10 | impl Id for u32 {}
   | --------------- first implementation here
11 | impl Id for u32 {}
   | ^^^^^^^^^^^^^^^ conflicting implementation for `u32`

error: internal compiler error: compiler/rustc_middle/src/ty/normalize_erasing_regions.rs:187:90: Failed to normalize std::option::Option<Alias(Projection, AliasTy { args: [Alias(Projection, AliasTy { args: [Binder(fn() -> u32, [])], def_id: DefId(0:5 ~ mvce[edfe]::Func::Ret) })], def_id: DefId(0:7 ~ mvce[edfe]::Id::Assoc) })>, maybe try to call `try_normalize_erasing_regions` instead

thread 'rustc' panicked at compiler/rustc_middle/src/util/bug.rs:35:44:
Box<dyn Any>
stack backtrace:
   0:     0x7f454338c754 - std::backtrace_rs::backtrace::libunwind::trace::hb3ca6a58ed9e0cab
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
   1:     0x7f454338c754 - std::backtrace_rs::backtrace::trace_unsynchronized::h327ee65d2c5d0ca7
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f454338c754 - std::sys_common::backtrace::_print_fmt::h8a71adbcae5a9442
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x7f454338c754 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h5069361c3741e3bd
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f45433ddb2c - core::fmt::rt::Argument::fmt::hc76ed39d719dd67d
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/core/src/fmt/rt.rs:142:9
   5:     0x7f45433ddb2c - core::fmt::write_internal::h7c84a75384687dd4
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/core/src/fmt/mod.rs:1126:17
   6:     0x7f4543381167 - core::fmt::write::h269ee61a459584fc
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/core/src/fmt/mod.rs:1108:67
   7:     0x7f4543381167 - std::io::Write::write_fmt::h8eeafb0d3c9d6dcf
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/std/src/io/mod.rs:1846:15
   8:     0x7f454338c504 - std::sys_common::backtrace::_print::h9ab859621d08b838
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/std/src/sys_common/backtrace.rs:47:5
   9:     0x7f454338c504 - std::sys_common::backtrace::print::h276f59edd5cafd51
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/std/src/sys_common/backtrace.rs:34:9
  10:     0x7f454338f10b - std::panicking::default_hook::{{closure}}::hb04a76c354ad4ca2
  11:     0x7f454338ee67 - std::panicking::default_hook::h13aec473440bd413
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/std/src/panicking.rs:292:9
  12:     0x7f45462804cc - std[8dbd9ad68df9295b]::panicking::update_hook::<alloc[3b906e9cacb41ed6]::boxed::Box<rustc_driver_impl[46903fbbfbd2d4f2]::install_ice_hook::{closure#0}>>::{closure#0}
  13:     0x7f454338f822 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hb8d4d85a716e33a7
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/alloc/src/boxed.rs:2030:9
  14:     0x7f454338f822 - std::panicking::rust_panic_with_hook::hd5a905865100487a
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/std/src/panicking.rs:783:13
  15:     0x7f45462ac9a4 - std[8dbd9ad68df9295b]::panicking::begin_panic::<rustc_errors[3b280157a1a56311]::ExplicitBug>::{closure#0}
  16:     0x7f45462a98c6 - std[8dbd9ad68df9295b]::sys_common::backtrace::__rust_end_short_backtrace::<std[8dbd9ad68df9295b]::panicking::begin_panic<rustc_errors[3b280157a1a56311]::ExplicitBug>::{closure#0}, !>
  17:     0x7f45462a95a6 - std[8dbd9ad68df9295b]::panicking::begin_panic::<rustc_errors[3b280157a1a56311]::ExplicitBug>
  18:     0x7f45462b6131 - <rustc_errors[3b280157a1a56311]::diagnostic::BugAbort as rustc_errors[3b280157a1a56311]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  19:     0x7f454668e10c - <rustc_errors[3b280157a1a56311]::DiagCtxt>::bug::<alloc[3b906e9cacb41ed6]::string::String>
  20:     0x7f454673257b - rustc_middle[ab69c4f92afbdebe]::util::bug::opt_span_bug_fmt::<rustc_span[1f98bb2c9ae0a849]::span_encoding::Span>::{closure#0}
  21:     0x7f454671568a - rustc_middle[ab69c4f92afbdebe]::ty::context::tls::with_opt::<rustc_middle[ab69c4f92afbdebe]::util::bug::opt_span_bug_fmt<rustc_span[1f98bb2c9ae0a849]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  22:     0x7f4546715508 - rustc_middle[ab69c4f92afbdebe]::ty::context::tls::with_context_opt::<rustc_middle[ab69c4f92afbdebe]::ty::context::tls::with_opt<rustc_middle[ab69c4f92afbdebe]::util::bug::opt_span_bug_fmt<rustc_span[1f98bb2c9ae0a849]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  23:     0x7f4544c529d0 - rustc_middle[ab69c4f92afbdebe]::util::bug::bug_fmt
  24:     0x7f454795e731 - <rustc_middle[ab69c4f92afbdebe]::ty::normalize_erasing_regions::NormalizeAfterErasingRegionsFolder as rustc_type_ir[5a0133e54bb7004d]::fold::TypeFolder<rustc_middle[ab69c4f92afbdebe]::ty::context::TyCtxt>>::fold_ty
  25:     0x7f4547a359d7 - <rustc_mir_dataflow[4dca6c6bfb913a17]::elaborate_drops::DropCtxt<rustc_mir_transform[df1dd399e1c2956f]::elaborate_drops::Elaborator>>::elaborate_drop
  26:     0x7f454478434c - <rustc_mir_transform[df1dd399e1c2956f]::elaborate_drops::ElaborateDrops as rustc_middle[ab69c4f92afbdebe]::mir::MirPass>::run_pass
  27:     0x7f454761400f - rustc_mir_transform[df1dd399e1c2956f]::pass_manager::run_passes_inner
  28:     0x7f4547d25bc6 - rustc_mir_transform[df1dd399e1c2956f]::mir_drops_elaborated_and_const_checked
  29:     0x7f4547d254e1 - rustc_query_impl[6d84502f9670cd53]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[6d84502f9670cd53]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[ab69c4f92afbdebe]::query::erase::Erased<[u8; 8usize]>>
  30:     0x7f45477474b8 - rustc_query_system[2567e3f9f30a9009]::query::plumbing::try_execute_query::<rustc_query_impl[6d84502f9670cd53]::DynamicConfig<rustc_query_system[2567e3f9f30a9009]::query::caches::VecCache<rustc_span[1f98bb2c9ae0a849]::def_id::LocalDefId, rustc_middle[ab69c4f92afbdebe]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[6d84502f9670cd53]::plumbing::QueryCtxt, false>
  31:     0x7f4547746d8c - rustc_query_impl[6d84502f9670cd53]::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
  32:     0x7f45482e893a - rustc_interface[4f9ebc0114c1dc52]::passes::analysis
  33:     0x7f45482e8119 - rustc_query_impl[6d84502f9670cd53]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[6d84502f9670cd53]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[ab69c4f92afbdebe]::query::erase::Erased<[u8; 1usize]>>
  34:     0x7f4548317b25 - rustc_query_system[2567e3f9f30a9009]::query::plumbing::try_execute_query::<rustc_query_impl[6d84502f9670cd53]::DynamicConfig<rustc_query_system[2567e3f9f30a9009]::query::caches::SingleCache<rustc_middle[ab69c4f92afbdebe]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[6d84502f9670cd53]::plumbing::QueryCtxt, false>
  35:     0x7f4548317889 - rustc_query_impl[6d84502f9670cd53]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  36:     0x7f4548326842 - rustc_interface[4f9ebc0114c1dc52]::interface::run_compiler::<core[8c889010effea61c]::result::Result<(), rustc_span[1f98bb2c9ae0a849]::ErrorGuaranteed>, rustc_driver_impl[46903fbbfbd2d4f2]::run_compiler::{closure#0}>::{closure#0}
  37:     0x7f45485f0446 - std[8dbd9ad68df9295b]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[4f9ebc0114c1dc52]::util::run_in_thread_with_globals<rustc_interface[4f9ebc0114c1dc52]::util::run_in_thread_pool_with_globals<rustc_interface[4f9ebc0114c1dc52]::interface::run_compiler<core[8c889010effea61c]::result::Result<(), rustc_span[1f98bb2c9ae0a849]::ErrorGuaranteed>, rustc_driver_impl[46903fbbfbd2d4f2]::run_compiler::{closure#0}>::{closure#0}, core[8c889010effea61c]::result::Result<(), rustc_span[1f98bb2c9ae0a849]::ErrorGuaranteed>>::{closure#0}, core[8c889010effea61c]::result::Result<(), rustc_span[1f98bb2c9ae0a849]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[8c889010effea61c]::result::Result<(), rustc_span[1f98bb2c9ae0a849]::ErrorGuaranteed>>
  38:     0x7f45485f0272 - <<std[8dbd9ad68df9295b]::thread::Builder>::spawn_unchecked_<rustc_interface[4f9ebc0114c1dc52]::util::run_in_thread_with_globals<rustc_interface[4f9ebc0114c1dc52]::util::run_in_thread_pool_with_globals<rustc_interface[4f9ebc0114c1dc52]::interface::run_compiler<core[8c889010effea61c]::result::Result<(), rustc_span[1f98bb2c9ae0a849]::ErrorGuaranteed>, rustc_driver_impl[46903fbbfbd2d4f2]::run_compiler::{closure#0}>::{closure#0}, core[8c889010effea61c]::result::Result<(), rustc_span[1f98bb2c9ae0a849]::ErrorGuaranteed>>::{closure#0}, core[8c889010effea61c]::result::Result<(), rustc_span[1f98bb2c9ae0a849]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[8c889010effea61c]::result::Result<(), rustc_span[1f98bb2c9ae0a849]::ErrorGuaranteed>>::{closure#1} as core[8c889010effea61c]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  39:     0x7f4543398f85 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h24c0cfbfedc1fa18
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/alloc/src/boxed.rs:2016:9
  40:     0x7f4543398f85 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h4b4e456aeb7e2c2b
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/alloc/src/boxed.rs:2016:9
  41:     0x7f4543398f85 - std::sys::pal::unix::thread::Thread::new::thread_start::hd6ad0feb9d6b2058
                               at /rustc/c7beecf3e3cef7a8226a99aec4e4f6bfc114ba8e/library/std/src/sys/pal/unix/thread.rs:108:17
  42:     0x7f454318055a - <unknown>
  43:     0x7f45431fda3c - <unknown>
  44:                0x0 - <unknown>

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.78.0-nightly (c7beecf3e 2024-03-05) running on x86_64-unknown-linux-gnu

query stack during panic:
#0 [mir_drops_elaborated_and_const_checked] elaborating drops for `main`
#1 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0119`.

Activity

  1. added
    I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
    T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
    C-bugCategory: This is a bug.
    on Mar 5, 2024
  2. added
    needs-triageThis issue may need triage. Remove when done. See docs forge.rust-lang.org/release/issue-triaging
    on Mar 5, 2024
  3. matthiaskrgr commented on Mar 5, 2024

    @matthiaskrgr
    MemberAuthor

    Regressed in #120847 cc @oli-obk

  4. matthiaskrgr commented on Mar 5, 2024

    @matthiaskrgr
    MemberAuthor

    on beta:

    error[E0119]: conflicting implementations of trait `Id` for type `u32`
      --> /tmp/im/6D5DCD6BEEA9C6F8503D479EDB2B94D2C111E432766CB91E1C9E18F452DF092D.rs:13:1
       |
    10 | impl Id for u32 {
       | --------------- first implementation here
    ...
    13 | impl Id for u32 {
       | ^^^^^^^^^^^^^^^ conflicting implementation for `u32`
    
    error: aborting due to 1 previous error
    
    For more information about this error, try `rustc --explain E0119`.
    
  5. removed
    needs-triageThis issue may need triage. Remove when done. See docs forge.rust-lang.org/release/issue-triaging
    on Mar 11, 2024
  6. added
    S-bug-has-testStatus: This bug is tracked inside the repo by a `known-bug` test.
    on Apr 15, 2024
  7. added 3 commits that reference this issue on Jun 19, 2024
    3f36c28
    53ecfe7
    f0af381
  8. added a commit that references this issue on Jun 20, 2024
    e7be356
  9. added a commit that references this issue on Jun 20, 2024
    053c10c
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

    C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-bug-has-testStatus: This bug is tracked inside the repo by a `known-bug` test.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