rust-lang / rust-lang/rust

ICE:rustc panicked at compiler\rustc_const_eval\src\interpret\call.rs:293:9

Open
#141,691 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

C-bug F-generic_const_exprs I-ICE P-low T-compiler
Dominant language
Rust
Stars
119k
Forks
16.1k
PR merge metrics
PR metrics pending

Description

The code is generated by a fuzzer and reduced manually

Code
#![feature(generic_const_exprs)]
const fn min(a: usize, b: usize) -> usize {
    a
}
trait Trait1<T> {
    fn func() {}
}
struct Struct1<const N: i32, const M: usize> {}

impl<const N: usize, const M: usize> Trait1<[i32; min(N, M)]> for Struct1<N, M> {}
fn main() {
    <Struct1<0, 0>>::func();
}
Meta

rustc --version --verbose:

rustc 1.89.0-nightly (45f256d9d 2025-05-27)
binary: rustc
commit-hash: 45f256d9d7cffb66185c0bf1b8a864cba79db90c
commit-date: 2025-05-27
host: x86_64-pc-windows-msvc
release: 1.89.0-nightly
LLVM version: 20.1.5
Error output
error: the constant `N` is not of type `i32`
  --> .\test.rs:10:67
   |
10 | impl<const N: usize, const M: usize> Trait1<[i32; min(N, M)]> for Struct1<N, M> {}
   |                                                                   ^^^^^^^^^^^^^ expected `i32`, found `usize`
   |
note: required by a const generic parameter in `Struct1`
  --> .\test.rs:8:16
   |
8  | struct Struct1<const N: i32, const M: usize> {}
   |                ^^^^^^^^^^^^ required by this const generic parameter in `Struct1`
Backtrace

thread 'rustc' panicked at compiler\rustc_const_eval\src\interpret\call.rs:293:9:
assertion `left == right` failed
  left: Layout { size: Size(4 bytes), align: AbiAndPrefAlign { abi: Align(4 bytes), pref: Align(4 bytes) }, backend_repr: Scalar(Initialized { value: Int(I32, true), valid_range: 0..=4294967295 }), fields: Primitive, largest_niche: None, uninhabited: false, variants: Single { index: 0 }, max_repr_align: None, unadjusted_abi_align: Align(4 bytes), randomization_seed: 18446462603027873795 }
 right: Layout { size: Size(8 bytes), align: AbiAndPrefAlign { abi: Align(8 bytes), pref: Align(8 bytes) }, backend_repr: Scalar(Initialized { value: Int(I64, false), valid_range: 0..=18446744073709551615 }), fields: Primitive, largest_niche: None, uninhabited: false, variants: Single { index: 0 }, max_repr_align: None, unadjusted_abi_align: Align(8 bytes), randomization_seed: 8589934599 }
stack backtrace:
   0:     0x7ffe23dfa092 - std::backtrace_rs::backtrace::win64::trace
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\..\..\backtrace\src\backtrace\win64.rs:85
   1:     0x7ffe23dfa092 - std::backtrace_rs::backtrace::trace_unsynchronized
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
   2:     0x7ffe23dfa092 - std::sys::backtrace::_print_fmt
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\sys\backtrace.rs:66
   3:     0x7ffe23dfa092 - std::sys::backtrace::impl$0::print::impl$0::fmt
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\sys\backtrace.rs:39
   4:     0x7ffe23e2dcdb - core::fmt::rt::Argument::fmt
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\core\src\fmt\rt.rs:173
   5:     0x7ffe23e2dcdb - core::fmt::write
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\core\src\fmt\mod.rs:1446
   6:     0x7ffe23defce7 - std::io::default_write_fmt
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\io\mod.rs:639
   7:     0x7ffe23defce7 - std::io::Write::write_fmt<std::sys::stdio::windows::Stderr>
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\io\mod.rs:1914
   8:     0x7ffe23df9ed5 - std::sys::backtrace::BacktraceLock::print
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\sys\backtrace.rs:42
   9:     0x7ffe23dffc6a - std::panicking::default_hook::closure$0
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\panicking.rs:300
  10:     0x7ffe23dffa00 - std::panicking::default_hook
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\panicking.rs:327
  11:     0x7ffe25532759 - core[ac12185d53e22e8f]::slice::sort::unstable::heapsort::heapsort::<((rustc_lint_defs[193b32fd50306806]::Level, &str), usize), <((rustc_lint_defs[193b32fd50306806]::Level, &str), usize) as core[ac12185d53e22e8f]::cmp::PartialOrd>::lt>
  12:     0x7ffe23e008fe - std::panicking::rust_panic_with_hook
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\panicking.rs:841
  13:     0x7ffe23e00659 - std::panicking::begin_panic_handler::closure$0
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\panicking.rs:706
  14:     0x7ffe23dfae5f - std::sys::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\sys\backtrace.rs:168
  15:     0x7ffe23e0025e - std::panicking::begin_panic_handler
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\panicking.rs:697
  16:     0x7ffe26fca181 - core::panicking::panic_fmt
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\core\src\panicking.rs:75
  17:     0x7ffe26fca6b4 - core::panicking::assert_failed_inner
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\core\src\panicking.rs:427
  18:     0x7ffe2606b9af - core[ac12185d53e22e8f]::panicking::assert_failed::<rustc_abi[108aeeaba70cd8e6]::layout::ty::Layout, rustc_abi[108aeeaba70cd8e6]::layout::ty::Layout>
  19:     0x7ffe2489dfda - rustc_const_eval[4510b251ae541fec]::const_eval::eval_queries::eval_to_allocation_raw_provider
  20:     0x7ffe246bea29 - rustc_const_eval[4510b251ae541fec]::const_eval::fn_queries::constness
  21:     0x7ffe2488e271 - rustc_const_eval[4510b251ae541fec]::const_eval::eval_queries::eval_to_allocation_raw_provider
  22:     0x7ffe24d60a18 - rustc_query_impl[e0f175676c7ebdd7]::plumbing::query_key_hash_verify_all
  23:     0x7ffe24c4f353 - RINvNtNtCsiGEjBpC2ZP2_18rustc_query_system5query8plumbing17try_execute_queryINtCsjjmM8TuMoF7_16rustc_query_impl13DynamicConfigINtNtB4_6caches12DefaultCacheINtNtCs55DwxXtzdwY_12rustc_middle2ty20PseudoCanonicalInputNtNtNtB2y_3mir9interpret8GlobalIdEINtNtNtB2
  24:     0x7ffe24d6a263 - rustc_query_impl[e0f175676c7ebdd7]::plumbing::query_key_hash_verify_all
  25:     0x7ffe2374cd9a - rustc_const_eval[4510b251ae541fec]::const_eval::valtrees::eval_to_valtree
  26:     0x7ffe203d6457 - <alloc[eace62e2d56f260]::sync::Arc<jiff[9304c94eb9a4089a]::tz::db::Kind>>::drop_slow
  27:     0x7ffe23976168 - <alloc[eace62e2d56f260]::sync::Arc<rustc_session[16fbb01393245908]::cstore::CrateSource>>::drop_slow
  28:     0x7ffe2394db2b - <alloc[eace62e2d56f260]::sync::Arc<rustc_session[16fbb01393245908]::cstore::CrateSource>>::drop_slow
  29:     0x7ffe24c4f4ac - RINvNtNtCsiGEjBpC2ZP2_18rustc_query_system5query8plumbing17try_execute_queryINtCsjjmM8TuMoF7_16rustc_query_impl13DynamicConfigINtNtB4_6caches12DefaultCacheINtNtCs55DwxXtzdwY_12rustc_middle2ty20PseudoCanonicalInputNtNtNtB2y_3mir9interpret8GlobalIdEINtNtNtB2
  30:     0x7ffe2398de53 - rustc_query_impl[e0f175676c7ebdd7]::query_system
  31:     0x7ffe23c815cb - <rustc_middle[3b4c1402574a7aca]::ty::context::TyCtxt>::const_eval_global_id_for_typeck
  32:     0x7ffe23c80756 - <rustc_middle[3b4c1402574a7aca]::ty::context::TyCtxt>::const_eval_resolve_for_typeck
  33:     0x7ffe23a98e3b - rustc_trait_selection[5fe835ba5507d126]::traits::try_evaluate_const
  34:     0x7ffe23a8d33e - rustc_trait_selection[5fe835ba5507d126]::traits::const_evaluatable::is_const_evaluatable
  35:     0x7ffe24e3f105 - <rustc_trait_selection[5fe835ba5507d126]::traits::select::SelectionContext>::evaluate_root_obligation
  36:     0x7ffe2469e58e - rustc_traits[36faf54d2693f56c]::evaluate_obligation::evaluate_obligation
  37:     0x7ffe24d6070e - rustc_query_impl[e0f175676c7ebdd7]::plumbing::query_key_hash_verify_all
  38:     0x7ffe24c5eb61 - RINvNtNtCsiGEjBpC2ZP2_18rustc_query_system5query8plumbing17try_execute_queryINtCsjjmM8TuMoF7_16rustc_query_impl13DynamicConfigINtNtB4_6caches12DefaultCacheINtNtCsljKxAZ0XE6t_13rustc_type_ir9canonical19CanonicalQueryInputNtNtNtCs55DwxXtzdwY_12rustc_middle2t
  39:     0x7ffe24d72770 - rustc_query_impl[e0f175676c7ebdd7]::plumbing::query_key_hash_verify_all
  40:     0x7ffe24e99a3c - <rustc_infer[985d2958cd0e1db]::infer::InferCtxt as rustc_trait_selection[5fe835ba5507d126]::traits::query::evaluate_obligation::InferCtxtExt>::evaluate_obligation_no_overflow
  41:     0x7ffe24e97c59 - <rustc_infer[985d2958cd0e1db]::infer::InferCtxt as rustc_trait_selection[5fe835ba5507d126]::traits::query::evaluate_obligation::InferCtxtExt>::predicate_may_hold
  42:     0x7ffe23f72d8e - <alloc[eace62e2d56f260]::raw_vec::RawVec<rustc_hir_typeck[fd2d3b73b4775676]::method::probe::Candidate>>::grow_one
  43:     0x7ffe2402eafc - rustc_hir_typeck[fd2d3b73b4775676]::method::probe::method_autoderef_steps
  44:     0x7ffe2402b9c3 - rustc_hir_typeck[fd2d3b73b4775676]::method::probe::method_autoderef_steps
  45:     0x7ffe24099604 - rustc_hir_typeck[fd2d3b73b4775676]::typeck
  46:     0x7ffe23fca182 - <<rustc_hir_typeck[fd2d3b73b4775676]::fn_ctxt::FnCtxt>::deduce_closure_signature_from_predicates::MentionsTy as rustc_type_ir[f84f795d5caa6a3b]::visit::TypeVisitor<rustc_middle[3b4c1402574a7aca]::ty::context::TyCtxt>>::visit_ty
  47:     0x7ffe23fa1e4e - <<rustc_hir_typeck[fd2d3b73b4775676]::fn_ctxt::FnCtxt>::deduce_closure_signature_from_predicates::MentionsTy as rustc_type_ir[f84f795d5caa6a3b]::visit::TypeVisitor<rustc_middle[3b4c1402574a7aca]::ty::context::TyCtxt>>::visit_ty
  48:     0x7ffe23f7b8a9 - <alloc[eace62e2d56f260]::raw_vec::RawVec<rustc_hir_typeck[fd2d3b73b4775676]::method::probe::Candidate>>::grow_one
  49:     0x7ffe23fa3256 - <<rustc_hir_typeck[fd2d3b73b4775676]::fn_ctxt::FnCtxt>::deduce_closure_signature_from_predicates::MentionsTy as rustc_type_ir[f84f795d5caa6a3b]::visit::TypeVisitor<rustc_middle[3b4c1402574a7aca]::ty::context::TyCtxt>>::visit_ty
  50:     0x7ffe240071a2 - <<rustc_hir_typeck[fd2d3b73b4775676]::fn_ctxt::FnCtxt>::deduce_closure_signature_from_predicates::MentionsTy as rustc_type_ir[f84f795d5caa6a3b]::visit::TypeVisitor<rustc_middle[3b4c1402574a7aca]::t: 
:context::TyCtxt>>::visit_ty
  51:     0x7ffe23fa3863 - <<rustc_hir_typeck[fd2d3b73b4775676]::fn_ctxt::FnCtxt>::deduce_closure_signature_from_predicates::MentionsTy as rustc_type_ir[f84f795d5caa6a3b]::visit::TypeVisitor<rustc_middle[3b4c1402574a7aca]::ty::context::TyCtxt>>::visit_ty
  52:     0x7ffe2406bfc5 - rustc_hir_typeck[fd2d3b73b4775676]::typeck
  53:     0x7ffe240b7b29 - <rustc_hir_typeck[fd2d3b73b4775676]::upvar::InferBorrowKind as rustc_hir_typeck[fd2d3b73b4775676]::expr_use_visitor::Delegate>::borrow
  54:     0x7ffe2406b66f - rustc_hir_typeck[fd2d3b73b4775676]::typeck
  55:     0x7ffe24d617cb - rustc_query_impl[e0f175676c7ebdd7]::plumbing::query_key_hash_verify_all
  56:     0x7ffe24c9a4b4 - RINvNtNtCsiGEjBpC2ZP2_18rustc_query_system5query8plumbing17try_execute_queryINtCsjjmM8TuMoF7_16rustc_query_impl13DynamicConfigINtNtCsdp6gSCMhqdi_21rustc_data_structures9vec_cache8VecCacheNtNtCs8zVwBRWrGp6_10rustc_span6def_id10LocalDefIdINtNtNtCs55DwxXtzdwY
  57:     0x7ffe24d69b12 - rustc_query_impl[e0f175676c7ebdd7]::plumbing::query_key_hash_verify_all
  58:     0x7ffe240f28cd - RINvMs6_NtCshOjLGddQ5dz_9hashbrown3rawINtB6_8RawTablejE14reserve_rehashNCINvNtNtCskeB7iFIufKC_8indexmap3map4core8get_hashTNtNtNtCs55DwxXtzdwY_12rustc_middle2ty9predicate6ClauseNtNtCs8zVwBRWrGp6_10rustc_span13span_encoding4SpanEuE0ECshEom3V5sNcT_18rustc_hir
  59:     0x7ffe2418fe12 - rustc_hir_analysis[cd991074a42e8cf5]::check_crate
  60:     0x7ffe23e69c83 - <rustc_interface[6bd24b2f061a6461]::passes::LintStoreExpandImpl as rustc_expand[ee8b454fe707dc9e]::base::LintStoreExpand>::pre_expansion_lint
  61:     0x7ffe203ea507 - rustc_interface[6bd24b2f061a6461]::passes::analysis
  62:     0x7ffe23979d8a - <alloc[eace62e2d56f260]::sync::Arc<rustc_session[16fbb01393245908]::cstore::CrateSource>>::drop_slow
  63:     0x7ffe238811ea - RINvNtNtCsiGEjBpC2ZP2_18rustc_query_system5query8plumbing17try_execute_queryINtCsjjmM8TuMoF7_16rustc_query_impl13DynamicConfigINtNtB4_6caches11SingleCacheINtNtNtCs55DwxXtzdwY_12rustc_middle5query5erase6ErasedAhj0_EEKb0_KB3s_KB3s_ENtNtB1f_8plumbing9QueryCtx
  64:     0x7ffe23980413 - rustc_query_impl[e0f175676c7ebdd7]::query_system
  65:     0x7ffe203aeef5 - std[447c3cd9e98ab315]::sys::backtrace::__rust_begin_short_backtrace::<<std[447c3cd9e98ab315]::thread::Builder>::spawn_unchecked_<ctrlc[d724601dd3fb70d4]::set_handler_inner<rustc_driver_impl[e5fceb87a81e35f5]::install_ctrlc_handler::{closure#0}>::{closure#0}, ()>::{closure#1}::{closure#0}::{closure#0}, ()>
  66:     0x7ffe203a9165 - std[447c3cd9e98ab315]::sys::backtrace::__rust_begin_short_backtrace::<<std[447c3cd9e98ab315]::thread::Builder>::spawn_unchecked_<ctrlc[d724601dd3fb70d4]::set_handler_inner<rustc_driver_impl[e5fceb87a81e35f5]::install_ctrlc_handler::{closure#0}>::{closure#0}, ()>::{closure#1}::{closure#0}::{closure#0}, ()>
  67:     0x7ffe203a438f - RINvNtNtCs5SxPwUNJkn9_3std3sys9backtrace28___rust_begin_short_backtraceNCNCINvNtCs9fVJ9cGiVK7_15rustc_interface4util26run_in_thread_with_globalsNCINvB1e_31run_in_thread_pool_with_globalsNCINvNtB1g_9interface12run_compileruNCNvCsjKdFQ38TYNZ_17rustc_driver_i
  68:     0x7ffe203b325d - std[447c3cd9e98ab315]::sys::backtrace::__rust_begin_short_backtrace::<<std[447c3cd9e98ab315]::thread::Builder>::spawn_unchecked_<ctrlc[d724601dd3fb70d4]::set_handler_inner<rustc_driver_impl[e5fceb87a81e35f5]::install_ctrlc_handler::{closure#0}>::{closure#0}, ()>::{closure#1}::{closure#0}::{closure#0}, ()>
  69:     0x7ffe23e04c6d - alloc::boxed::impl$28::call_once
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\alloc\src\boxed.rs:1966
  70:     0x7ffe23e04c6d - alloc::boxed::impl$28::call_once
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\alloc\src\boxed.rs:1966
  71:     0x7ffe23e04c6d - std::sys::pal::windows::thread::impl$0::new::thread_start
                               at /rustc/45f256d9d7cffb66185c0bf1b8a864cba79db90c/library\std\src\sys\pal\windows\thread.rs:56
  72:     0x7ffee8147374 - BaseThreadInitThunk
  73:     0x7ffeea0bcc91 - RtlUserThreadStart

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 `D:\rust_test\gpt_generate_mutators\rustc-ice-2025-05-28T13_29_59-8096.txt` to your bug report

query stack during panic:
#0 [eval_to_allocation_raw] const-evaluating + checking `<impl at .\test.rs:10:1: 10:80>::{constant#0}`
#1 [eval_to_valtree] evaluating type-level constant
... and 3 other queries... use `env RUST_BACKTRACE=1` to see the full query stack
error: aborting due to 1 previous error; 2 warnings emitted

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the reduced example with the reported rustc 1.89.0-nightly version and inspect compiler/rustc_const_eval/src/interpret/call.rs:293:9. Trace the const evaluation and type-checking path shown in the backtrace. Done means the example no longer causes an internal compiler panic and instead produces a handled compiler result.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.