Skip to content

SignatureMismatch ICE #146965

Description

@benruijl

Code

The crate symbolica version 0.18.0 (https://crates.io/crates/symbolica) does not compile on stable Rust 1.90 in release mode.

cargo build # works
cargo build --release # ICE

I will try to create a minimal example.

Meta

rustc --version --verbose:

rustc 1.90.0 (1159e78c4 2025-09-14)
binary: rustc
commit-hash: 1159e78c4747b02ef996e55082b704c09b970588
commit-date: 2025-09-14
host: x86_64-unknown-linux-gnu
release: 1.90.0
LLVM version: 20.1.8

Error output

error: internal compiler error: compiler/rustc_traits/src/codegen.rs:45:13: Encountered error `SignatureMismatch(SignatureMismatchData { found_trait_ref: <{closure@src/poly/gcd.rs:3594:29: 3594:32} as std::ops::Fn<(&domains::algebraic_number::AlgebraicNumber<domains::finite_field::FiniteField<UField>>,)>>, expected_trait_ref: <{closure@src/poly/gcd.rs:3594:29: 3594:32} as std::ops::Fn<(&<domains::algebraic_number::AlgebraicExtension<domains::finite_field::FiniteField<UField>> as domains::Ring>::Element,)>>, terr: Sorts(ExpectedFound { expected: Alias(Projection, AliasTy { args: [domains::algebraic_number::AlgebraicExtension<domains::finite_field::FiniteField<UField/#0>>], def_id: DefId(0:4283 ~ symbolica[e0c6]::domains::Ring::Element), .. }), found: domains::algebraic_number::AlgebraicNumber<domains::finite_field::FiniteField<UField/#0>> }) })` selecting `<{closure@src/poly/gcd.rs:3594:29: 3594:32} as std::ops::Fn<(&<domains::algebraic_number::AlgebraicExtension<domains::finite_field::FiniteField<UField>> as domains::Ring>::Element,)>>` during codegen
Backtrace

thread 'rustc' panicked at compiler/rustc_traits/src/codegen.rs:45:13:
Box<dyn Any>
stack backtrace:
   0:     0x7f63ca800f83 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hdcfcb6d4c8489523
   1:     0x7f63cb002d77 - core::fmt::write::h8a494366950f23bb
   2:     0x7f63cc3d14d1 - std::io::Write::write_fmt::h6556609fca33d0b1
   3:     0x7f63ca800de2 - std::sys::backtrace::BacktraceLock::print::hb2a626a81e06b2dc
   4:     0x7f63ca804887 - std::panicking::default_hook::{{closure}}::h4f78485264f12d10
   5:     0x7f63ca8043eb - std::panicking::default_hook::h2c66fc99e962531d
   6:     0x7f63c98627e3 - std[9479b33d5e275715]::panicking::update_hook::<alloc[252dd2b3abdfe4a]::boxed::Box<rustc_driver_impl[773a1ede480c2143]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x7f63ca8050ce - std::panicking::rust_panic_with_hook::h33ac55f64bbd807d
   8:     0x7f63c989c2f1 - std[9479b33d5e275715]::panicking::begin_panic::<rustc_errors[93b6cceb9b5fedc8]::ExplicitBug>::{closure#0}
   9:     0x7f63c9891286 - std[9479b33d5e275715]::sys::backtrace::__rust_end_short_backtrace::<std[9479b33d5e275715]::panicking::begin_panic<rustc_errors[93b6cceb9b5fedc8]::ExplicitBug>::{closure#0}, !>
  10:     0x7f63c9890f17 - std[9479b33d5e275715]::panicking::begin_panic::<rustc_errors[93b6cceb9b5fedc8]::ExplicitBug>
  11:     0x7f63c98a5f91 - <rustc_errors[93b6cceb9b5fedc8]::diagnostic::BugAbort as rustc_errors[93b6cceb9b5fedc8]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  12:     0x7f63c9eb5dda - rustc_middle[581473cc959b0df7]::util::bug::opt_span_bug_fmt::<rustc_span[dd7040bcb6abea74]::span_encoding::Span>::{closure#0}
  13:     0x7f63c9e9560a - rustc_middle[581473cc959b0df7]::ty::context::tls::with_opt::<rustc_middle[581473cc959b0df7]::util::bug::opt_span_bug_fmt<rustc_span[dd7040bcb6abea74]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  14:     0x7f63c9e9547b - rustc_middle[581473cc959b0df7]::ty::context::tls::with_context_opt::<rustc_middle[581473cc959b0df7]::ty::context::tls::with_opt<rustc_middle[581473cc959b0df7]::util::bug::opt_span_bug_fmt<rustc_span[dd7040bcb6abea74]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  15:     0x7f63c6ed1fb0 - rustc_middle[581473cc959b0df7]::util::bug::bug_fmt
  16:     0x7f63cbd5cad7 - rustc_traits[bfbeae1a3e4b8cfd]::codegen::codegen_select_candidate
  17:     0x7f63cbd5a6b3 - rustc_query_impl[4e8a788e737bdb2b]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[4e8a788e737bdb2b]::query_impl::codegen_select_candidate::dynamic_query::{closure#2}::{closure#0}, rustc_middle[581473cc959b0df7]::query::erase::Erased<[u8; 16usize]>>
  18:     0x7f63cbd59734 - rustc_query_system[5711f675e4c02644]::query::plumbing::try_execute_query::<rustc_query_impl[4e8a788e737bdb2b]::DynamicConfig<rustc_query_system[5711f675e4c02644]::query::caches::DefaultCache<rustc_middle[581473cc959b0df7]::ty::PseudoCanonicalInput<rustc_type_ir[e11decee25f0b077]::predicate::TraitRef<rustc_middle[581473cc959b0df7]::ty::context::TyCtxt>>, rustc_middle[581473cc959b0df7]::query::erase::Erased<[u8; 16usize]>>, false, false, false>, rustc_query_impl[4e8a788e737bdb2b]::plumbing::QueryCtxt, false>
  19:     0x7f63cbd593a3 - rustc_query_impl[4e8a788e737bdb2b]::query_impl::codegen_select_candidate::get_query_non_incr::__rust_end_short_backtrace
  20:     0x7f63cb74ac96 - rustc_ty_utils[327c3462a5d70139]::instance::resolve_instance_raw
  21:     0x7f63cb749700 - rustc_query_impl[4e8a788e737bdb2b]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[4e8a788e737bdb2b]::query_impl::resolve_instance_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[581473cc959b0df7]::query::erase::Erased<[u8; 32usize]>>
  22:     0x7f63cb748826 - rustc_query_system[5711f675e4c02644]::query::plumbing::try_execute_query::<rustc_query_impl[4e8a788e737bdb2b]::DynamicConfig<rustc_query_system[5711f675e4c02644]::query::caches::DefaultCache<rustc_middle[581473cc959b0df7]::ty::PseudoCanonicalInput<(rustc_span[dd7040bcb6abea74]::def_id::DefId, &rustc_middle[581473cc959b0df7]::ty::list::RawList<(), rustc_middle[581473cc959b0df7]::ty::generic_args::GenericArg>)>, rustc_middle[581473cc959b0df7]::query::erase::Erased<[u8; 32usize]>>, false, false, false>, rustc_query_impl[4e8a788e737bdb2b]::plumbing::QueryCtxt, false>
  23:     0x7f63cb748469 - rustc_query_impl[4e8a788e737bdb2b]::query_impl::resolve_instance_raw::get_query_non_incr::__rust_end_short_backtrace
  24:     0x7f63cb73caa2 - <rustc_middle[581473cc959b0df7]::ty::instance::Instance>::try_resolve
  25:     0x7f63cc2109a6 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  26:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  27:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  28:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  29:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  30:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  31:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  32:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  33:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  34:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  35:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  36:     0x7f63cc2104f7 - rustc_mir_transform[134cdb5752387f32]::inline::cycle::process::{closure#0}
  37:     0x7f63cc20f7ee - rustc_mir_transform[134cdb5752387f32]::inline::cycle::mir_callgraph_cyclic
  38:     0x7f63cc20f322 - rustc_query_impl[4e8a788e737bdb2b]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[4e8a788e737bdb2b]::query_impl::mir_callgraph_cyclic::dynamic_query::{closure#2}::{closure#0}, rustc_middle[581473cc959b0df7]::query::erase::Erased<[u8; 8usize]>>
  39:     0x7f63cb1dd3ae - rustc_query_system[5711f675e4c02644]::query::plumbing::try_execute_query::<rustc_query_impl[4e8a788e737bdb2b]::DynamicConfig<rustc_data_structures[32e9e1243901af9b]::vec_cache::VecCache<rustc_span[dd7040bcb6abea74]::def_id::LocalDefId, rustc_middle[581473cc959b0df7]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[5711f675e4c02644]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[4e8a788e737bdb2b]::plumbing::QueryCtxt, false>
  40:     0x7f63cb727f13 - rustc_query_impl[4e8a788e737bdb2b]::query_impl::mir_callgraph_cyclic::get_query_non_incr::__rust_end_short_backtrace
  41:     0x7f63cb724f3a - rustc_mir_transform[134cdb5752387f32]::inline::process_blocks::<rustc_mir_transform[134cdb5752387f32]::inline::NormalInliner>
  42:     0x7f63cba8f9c0 - <rustc_mir_transform[134cdb5752387f32]::inline::Inline as rustc_mir_transform[134cdb5752387f32]::pass_manager::MirPass>::run_pass
  43:     0x7f63cb011587 - rustc_mir_transform[134cdb5752387f32]::run_optimization_passes
  44:     0x7f63cbc50080 - rustc_mir_transform[134cdb5752387f32]::optimized_mir
  45:     0x7f63cbc4fc61 - rustc_query_impl[4e8a788e737bdb2b]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[4e8a788e737bdb2b]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[581473cc959b0df7]::query::erase::Erased<[u8; 8usize]>>
  46:     0x7f63cb018e25 - rustc_query_system[5711f675e4c02644]::query::plumbing::try_execute_query::<rustc_query_impl[4e8a788e737bdb2b]::DynamicConfig<rustc_query_system[5711f675e4c02644]::query::caches::DefIdCache<rustc_middle[581473cc959b0df7]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[4e8a788e737bdb2b]::plumbing::QueryCtxt, false>
  47:     0x7f63cb01831b - rustc_query_impl[4e8a788e737bdb2b]::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
  48:     0x7f63cbb75c13 - <rustc_metadata[e50638f1c3dcb01e]::rmeta::encoder::EncodeContext>::encode_crate_root
  49:     0x7f63cc591a30 - <rustc_metadata[e50638f1c3dcb01e]::rmeta::encoder::encode_metadata::{closure#3} as core[42326c15e70145c1]::ops::function::FnOnce<(rustc_middle[581473cc959b0df7]::ty::context::TyCtxt, &std[9479b33d5e275715]::path::Path)>>::call_once
  50:     0x7f63cc58ec70 - rustc_metadata[e50638f1c3dcb01e]::rmeta::encoder::encode_metadata
  51:     0x7f63cbf47d97 - rustc_metadata[e50638f1c3dcb01e]::fs::encode_and_write_metadata
  52:     0x7f63cc41a2c3 - <rustc_interface[c9c4c8df4db17049]::queries::Linker>::codegen_and_build_linker
  53:     0x7f63cc417ebc - rustc_interface[c9c4c8df4db17049]::passes::create_and_enter_global_ctxt::<core[42326c15e70145c1]::option::Option<rustc_interface[c9c4c8df4db17049]::queries::Linker>, rustc_driver_impl[773a1ede480c2143]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  54:     0x7f63cc2c11f1 - rustc_interface[c9c4c8df4db17049]::interface::run_compiler::<(), rustc_driver_impl[773a1ede480c2143]::run_compiler::{closure#0}>::{closure#1}
  55:     0x7f63cc1751c1 - std[9479b33d5e275715]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[c9c4c8df4db17049]::util::run_in_thread_with_globals<rustc_interface[c9c4c8df4db17049]::util::run_in_thread_pool_with_globals<rustc_interface[c9c4c8df4db17049]::interface::run_compiler<(), rustc_driver_impl[773a1ede480c2143]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  56:     0x7f63cc174ea2 - <<std[9479b33d5e275715]::thread::Builder>::spawn_unchecked_<rustc_interface[c9c4c8df4db17049]::util::run_in_thread_with_globals<rustc_interface[c9c4c8df4db17049]::util::run_in_thread_pool_with_globals<rustc_interface[c9c4c8df4db17049]::interface::run_compiler<(), rustc_driver_impl[773a1ede480c2143]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[42326c15e70145c1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  57:     0x7f63cc17a7c5 - std::sys::pal::unix::thread::Thread::new::thread_start::hb6e99e73da4d28f8
  58:     0x7f63c58969cb - <unknown>
  59:     0x7f63c591aa0c - <unknown>
  60:                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.90.0 (1159e78c4 2025-09-14) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type lib -C opt-level=3 -C linker-plugin-lto -C codegen-units=1 -C strip=debuginfo

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

query stack during panic:
#0 [codegen_select_candidate] computing candidate for `<{closure@src/poly/gcd.rs:3594:29: 3594:32} as core::ops::function::Fn<(&<domains::algebraic_number::AlgebraicExtension<domains::finite_field::FiniteField<UField>> as domains::Ring>::Element,)>>`
#1 [resolve_instance_raw] resolving instance `<{closure@src/poly/gcd.rs:3594:29: 3594:32} as core::ops::function::Fn<(&<domains::algebraic_number::AlgebraicExtension<domains::finite_field::FiniteField<UField>> as domains::Ring>::Element,)>>::call`
... and 2 other queries... use `env RUST_BACKTRACE=1` to see the full query stack
warning: `symbolica` (lib) generated 1 warning (run `cargo fix --lib -p symbolica` to apply 1 suggestion)
error: could not compile `symbolica` (lib); 1 warning emitted

Caused by:
  process didn't exit successfully: `/home/ben/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/rustc --crate-name symbolica --edition=2024 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=80 --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C linker-plugin-lto -C codegen-units=1 --cfg 'feature="default"' --cfg 'feature="tracing_only_warnings"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("bincode", "default", "experimental_poly_gcd", "faster_alloc", "full_fn_cmp", "mathematica_api", "numpy", "pyo3", "pyo3-log", "pyo3-stub-gen", "python_abi3", "python_api", "python_export", "python_stubgen", "serde", "tikv-jemallocator", "tracing_only_warnings", "wolfram-library-link"))' -C metadata=96c1357d8f8088f0 -C extra-filename=-62104d022c125146 --out-dir /home/ben/Sync/Work/symbolica/target/release/deps -C strip=debuginfo -L dependency=/home/ben/Sync/Work/symbolica/target/release/deps --extern ahash=/home/ben/Sync/Work/symbolica/target/release/deps/libahash-7a28b9ed158fd863.rmeta --extern append_only_vec=/home/ben/Sync/Work/symbolica/target/release/deps/libappend_only_vec-99a1c43390cfa51d.rmeta --extern brotli=/home/ben/Sync/Work/symbolica/target/release/deps/libbrotli-b331a1cc75e182c6.rmeta --extern byteorder=/home/ben/Sync/Work/symbolica/target/release/deps/libbyteorder-119ee8ca0470af32.rmeta --extern bytes=/home/ben/Sync/Work/symbolica/target/release/deps/libbytes-d3dd46bcdca0d31b.rmeta --extern colored=/home/ben/Sync/Work/symbolica/target/release/deps/libcolored-594090e79fcf27f6.rmeta --extern dyn_clone=/home/ben/Sync/Work/symbolica/target/release/deps/libdyn_clone-328c01212571218b.rmeta --extern libloading=/home/ben/Sync/Work/symbolica/target/release/deps/liblibloading-71bafbff0017e61b.rmeta --extern log=/home/ben/Sync/Work/symbolica/target/release/deps/liblog-2bbc0195c15cb2c1.rmeta --extern once_cell=/home/ben/Sync/Work/symbolica/target/release/deps/libonce_cell-869860742b3ecb49.rmeta --extern rand=/home/ben/Sync/Work/symbolica/target/release/deps/librand-268f0610b8ef0ce7.rmeta --extern rand_xoshiro=/home/ben/Sync/Work/symbolica/target/release/deps/librand_xoshiro-cff907330d684396.rmeta --extern rayon=/home/ben/Sync/Work/symbolica/target/release/deps/librayon-828f49a5b01c9dd4.rmeta --extern rug=/home/ben/Sync/Work/symbolica/target/release/deps/librug-a6424c8c041e4fbe.rmeta --extern self_cell=/home/ben/Sync/Work/symbolica/target/release/deps/libself_cell-399a7f5929460284.rmeta --extern smallvec=/home/ben/Sync/Work/symbolica/target/release/deps/libsmallvec-3fbe0bd8f44cbfdd.rmeta --extern smartstring=/home/ben/Sync/Work/symbolica/target/release/deps/libsmartstring-d37711d81c03e4ec.rmeta --extern tinyjson=/home/ben/Sync/Work/symbolica/target/release/deps/libtinyjson-b436034f636b2f36.rmeta --extern tracing=/home/ben/Sync/Work/symbolica/target/release/deps/libtracing-35e9ac652d116700.rmeta --extern wide=/home/ben/Sync/Work/symbolica/target/release/deps/libwide-f8d3161bff5ff866.rmeta -L native=/home/ben/Sync/Work/symbolica/target/release/build/gmp-mpfr-sys-0c198db2c79fef3a/out/lib` (exit status: 101)

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 Sep 24, 2025
  2. added
    needs-triageThis issue may need triage. Remove when done. See docs forge.rust-lang.org/release/issue-triaging
    on Sep 24, 2025
  3. added
    I-prioritizeIssue needs a team member to assess the impact. Will be replaced by P-{low,medium,high,critical}
    on Sep 24, 2025
  4. lukaslueg commented on Sep 24, 2025

    @lukaslueg
    Contributor

    bisection points to #142625

    searched nightlies: from nightly-2025-06-23 to nightly-2025-09-24
    regressed nightly: nightly-2025-06-29
    searched commit range: bdaba05...11ad40b
    regressed commit: 11ad40b

  5. lqd commented on Sep 24, 2025

    @lqd
    Member
  6. apiraino commented on Sep 24, 2025

    @apiraino
    Contributor

    Assigning priority (discussion on Zulip).

    @rustbot label -I-prioritize +P-high

  7. added
    P-highHigh priority
    and removed
    I-prioritizeIssue needs a team member to assess the impact. Will be replaced by P-{low,medium,high,critical}
    on Sep 24, 2025
  8. theemathas commented on Sep 24, 2025

    @theemathas
    Contributor

    This was previously reported at symbolica-dev/symbolica#33 but unfortunately not here.

  9. added
    E-needs-mcveCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable Example
    on Sep 24, 2025
  10. lqd commented on Sep 26, 2025

    @lqd
    Member

    This crate is huge and hard to reduce, so I ran out of time. It's messy and can be reduced still, but I have something that's small enough for a test @cjgillot.

    130-line repro
    #[derive(Clone)]
    struct AlgebraicExtension<R> {
        _x: R,
    }
    impl<T> GaloisField for AlgebraicExtension<FiniteField<T>>
    where
        FiniteField<T>: Field,
    {
        type Base = FiniteField<T>;
        fn upgrade(&self) -> AlgebraicExtension<Self::Base> {
            fn is_irreducible<UField>(poly: &mut MultivariatePolynomial<FiniteField<UField>, u16>)
            where
                FiniteField<UField>: Field,
            {
                poly.bivariate_factorization();
                poly.multivariate_factorization();
            }
            let mut poly = MultivariatePolynomial::new();
            is_irreducible(&mut poly);
            todo!()
        }
    }
    impl<R: Clone> Ring for AlgebraicExtension<R> {
        type Element = u16;
    }
    impl<R: Clone> EuclideanDomain for AlgebraicExtension<R> {}
    impl<R: Field> Field for AlgebraicExtension<R> {}
    trait GaloisField: Field {
        type Base: Field;
        fn upgrade(&self) -> AlgebraicExtension<Self::Base> {
            unimplemented!()
        }
        fn upgrade_element(
            &self,
            _: &Self::Element,
        ) -> <AlgebraicExtension<Self::Base> as Ring>::Element {
            unimplemented!()
        }
    }
    impl<UField> GaloisField for FiniteField<UField>
    where
        FiniteField<UField>: Field,
    {
        type Base = Self;
    }
    struct FiniteField<UField> {
        _m: UField,
    }
    trait Ring: Clone {
        type Element;
    }
    trait EuclideanDomain: Ring {}
    trait Field: EuclideanDomain {}
    impl<UField, F: GaloisField<Base = FiniteField<UField>>, E> MultivariatePolynomial<F, E>
    where
        FiniteField<UField>: Field,
        AlgebraicExtension<<F as GaloisField>::Base>: PolynomialGCD<E>,
    {
        fn bivariate_factorization(&self) {
            let _ = PolynomialGCD::gcd(self);
            let field = self.ring.upgrade();
            let s_l = self.map_coeff(|c| self.ring.upgrade_element(c), field.clone());
            s_l.bivariate_factorization();
        }
        fn multivariate_factorization(&self) -> Vec<Self> {
            unimplemented!()
        }
    }
    trait PolynomialGCD<E>: Ring {
        fn gcd(_: &MultivariatePolynomial<Self, E>) -> MultivariatePolynomial<Self, E> {
            unimplemented!()
        }
    }
    impl<UField, F: GaloisField<Base = FiniteField<UField>>, E> PolynomialGCD<E> for F
    where
        FiniteField<UField>: Field,
    {
        fn gcd(a: &MultivariatePolynomial<Self, E>) -> MultivariatePolynomial<Self, E> {
            let field = a.ring.upgrade();
            let ag = a.map_coeff(|c| a.ring.upgrade_element(c), field.clone());
            let g = PolynomialGCD::gcd(&ag);
            g.map_coeff(|_| todo!(), a.ring.clone())
        }
    }
    use std::marker::PhantomData;
    #[derive(Clone)]
    struct MultivariatePolynomial<F: Ring, E = u16> {
        ring: F,
        _phantom: PhantomData<(E, F)>,
    }
    impl<F: Ring, E> MultivariatePolynomial<F, E> {
        fn new() -> Self {
            unimplemented!()
        }
    }
    impl<F: Ring, E> MultivariatePolynomial<F, E> {
        fn map_coeff<U: Ring, T: Fn(&F::Element) -> U::Element>(
            &self,
            f: T,
            field: U,
        ) -> MultivariatePolynomial<U, E> {
            for m in self.into_iter() {
                f(m.coefficient);
            }
            MultivariatePolynomial {
                ring: todo!(),
                _phantom: PhantomData,
            }
        }
    }
    struct MonomialView<'a, F: 'a + Ring> {
        coefficient: &'a F::Element,
    }
    struct MonomialViewIterator<'a, F, E> {
        _m: &'a (F, E),
    }
    impl<'a, F: Ring, E> Iterator for MonomialViewIterator<'a, F, E> {
        type Item = MonomialView<'a, F>;
        fn next(&mut self) -> Option<Self::Item> {
            unimplemented!()
        }
    }
    impl<'a, F: Ring, E> IntoIterator for &'a MultivariatePolynomial<F, E> {
        type Item = MonomialView<'a, F>;
        type IntoIter = MonomialViewIterator<'a, F, E>;
        fn into_iter(self) -> Self::IntoIter {
            unimplemented!()
        }
    }
    > CARGO_INCREMENTAL=0 RUSTFLAGS="-Zinline-mir -Zmir-opt-level=0" cargo build
    
    error: internal compiler error: compiler/rustc_traits/src/codegen.rs:45:13: Encountered error `SignatureMismatch(SignatureMismatchData { found_trait_ref: <{closure@src/lib.rs:82:21: 82:24} as std::ops::Fn<(&u16,)>>, expected_trait_ref: <{closure@src/lib.rs:82:21: 82:24} as std::ops::Fn<(&<AlgebraicExtension<FiniteField<UField>> as Ring>::Element,)>>, terr: Sorts(ExpectedFound { expected: Alias(Projection, AliasTy { args: [AlgebraicExtension<FiniteField<UField/#0>>], def_id: DefId(0:27 ~ symbolica[02ae]::Ring::Element), .. }), found: u16 }) })` selecting `<{closure@src/lib.rs:82:21: 82:24} as std::ops::Fn<(&<AlgebraicExtension<FiniteField<UField>> as Ring>::Element,)>>` during codegen
    
  11. self-assigned this
    on Sep 27, 2025
  12. 12 remaining items

  13. removed their assignment
    on Jan 22, 2026
  14. cjgillot commented on Jan 22, 2026

    @cjgillot
    Contributor

    No, sorry, releasing assignment

  15. added a commit that references this issue on Mar 6, 2026
  16. added a commit that references this issue on Mar 12, 2026
  17. fanninpm commented on Mar 13, 2026

    @fanninpm
    Contributor

    @rustbot label +S-bug-has-test

  18. added
    S-bug-has-testStatus: This bug is tracked inside the repo by a `known-bug` test.
    on Mar 13, 2026
  19. added 2 commits that reference this issue on Jul 13, 2026
  20. lcnr commented on Oct 6, 2026

    @lcnr
    Contributor

    root cause is #152409

  21. added 3 commits that reference this issue on Oct 7, 2026
  22. added a commit that references this issue on Oct 8, 2026
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-associated-itemsArea: Associated items (types, constants & functions)A-mir-optArea: MIR optimizationsA-mir-opt-inliningArea: MIR inliningA-trait-systemArea: Trait systemC-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-highHigh priorityS-bug-has-testStatus: This bug is tracked inside the repo by a `known-bug` test.S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-typesRelevant to the types team, which will review and decide on the PR/issue.fixed-by-next-solverFixed by the next-generation trait solver, `-Znext-solver`.regression-from-stable-to-stablePerformance or correctness regression from one stable version to another.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions