[ICE]: `layout_of: unexpected const: ?0c`
Open
Nobody has claimed this yet.
C-bug
F-transmutability
I-ICE
needs-triage
T-compiler
WG-trait-system-refactor
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
Code
// -Znext-solver=globally
#![feature(transmutability)]
use std::mem::TransmuteFrom;
fn array_like<T, E, const N: usize>()
where
[E; N]: TransmuteFrom<T>,
{
}
fn main() {
struct Struct;
array_like::<Struct, u8, ()>;
}
Meta
rustc --version --verbose:
rustc 1.95.0-nightly (c7f5f3e0d 2026-02-07)
binary: rustc
commit-hash: c7f5f3e0d5defe632d44743cbaed56272e2b67f0
commit-date: 2026-02-07
host: x86_64-unknown-linux-gnu
release: 1.95.0-nightly
LLVM version: 22.1.0
Error output
rustc a.rs -Znext-solver=globally
<output>
Backtrace
error[E0747]: type provided when a constant was expected
--> a.rs:11:30
|
11 | array_like::<Struct, u8, ()>;
| ^^
error: internal compiler error: /rustc-dev/c7f5f3e0d5defe632d44743cbaed56272e2b67f0/compiler/rustc_ty_utils/src/layout.rs:173:13: layout_of: unexpected const: ?0c
thread 'rustc' (3869519) panicked at /rustc-dev/c7f5f3e0d5defe632d44743cbaed56272e2b67f0/compiler/rustc_ty_utils/src/layout.rs:173:13:
Box<dyn Any>
stack backtrace:
0: 0x7f25161e5a6b - <<std[12e671b2ab06fb6e]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[81298f05583b4988]::fmt::Display>::fmt
1: 0x7f251680f048 - core[81298f05583b4988]::fmt::write
2: 0x7f25161fcd56 - <std[12e671b2ab06fb6e]::sys::stdio::unix::Stderr as std[12e671b2ab06fb6e]::io::Write>::write_fmt
3: 0x7f25161bba88 - std[12e671b2ab06fb6e]::panicking::default_hook::{closure#0}
4: 0x7f25161d8e63 - std[12e671b2ab06fb6e]::panicking::default_hook
5: 0x7f25151bc5f7 - std[12e671b2ab06fb6e]::panicking::update_hook::<alloc[acd192c11bf9e878]::boxed::Box<rustc_driver_impl[73ec0cfeb46ae4b6]::install_ice_hook::{closure#1}>>::{closure#0}
6: 0x7f25161d9142 - std[12e671b2ab06fb6e]::panicking::panic_with_hook
7: 0x7f25151f0a51 - std[12e671b2ab06fb6e]::panicking::begin_panic::<rustc_errors[1a3e1ed3e530bdbd]::ExplicitBug>::{closure#0}
8: 0x7f25151e94a6 - std[12e671b2ab06fb6e]::sys::backtrace::__rust_end_short_backtrace::<std[12e671b2ab06fb6e]::panicking::begin_panic<rustc_errors[1a3e1ed3e530bdbd]::ExplicitBug>::{closure#0}, !>
9: 0x7f25151e6bb8 - std[12e671b2ab06fb6e]::panicking::begin_panic::<rustc_errors[1a3e1ed3e530bdbd]::ExplicitBug>
10: 0x7f25151fc1d1 - <rustc_errors[1a3e1ed3e530bdbd]::diagnostic::BugAbort as rustc_errors[1a3e1ed3e530bdbd]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
11: 0x7f25157accc9 - rustc_middle[572c70537083e946]::util::bug::opt_span_bug_fmt::<rustc_span[8ab66f3eafd11b9d]::span_encoding::Span>::{closure#0}
12: 0x7f25157ace52 - rustc_middle[572c70537083e946]::ty::context::tls::with_opt::<rustc_middle[572c70537083e946]::util::bug::opt_span_bug_fmt<rustc_span[8ab66f3eafd11b9d]::span_encoding::Span>::{closure#0}, !>::{closure#0}
13: 0x7f251579dfab - rustc_middle[572c70537083e946]::ty::context::tls::with_context_opt::<rustc_middle[572c70537083e946]::ty::context::tls::with_opt<rustc_middle[572c70537083e946]::util::bug::opt_span_bug_fmt<rustc_span[8ab66f3eafd11b9d]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
14: 0x7f2512cf72d4 - rustc_middle[572c70537083e946]::util::bug::bug_fmt
15: 0x7f25184d8ef5 - rustc_ty_utils[35e41edb7db416b4]::layout::extract_const_value.cold
16: 0x7f25171bd8bf - rustc_ty_utils[35e41edb7db416b4]::layout::layout_of_uncached
17: 0x7f25171b4149 - rustc_ty_utils[35e41edb7db416b4]::layout::layout_of
18: 0x7f25171b40a7 - rustc_query_impl[25c8ab03434e8ec6]::query_impl::layout_of::compute_fn::__rust_begin_short_backtrace
19: 0x7f25171b3134 - rustc_query_system[5619a4a14f53d2]::query::plumbing::try_execute_query::<rustc_query_impl[25c8ab03434e8ec6]::SemiDynamicQueryDispatcher<rustc_query_system[5619a4a14f53d2]::query::caches::DefaultCache<rustc_middle[572c70537083e946]::ty::PseudoCanonicalInput<rustc_middle[572c70537083e946]::ty::Ty>, rustc_middle[572c70537083e946]::query::erase::ErasedData<[u8; 16usize]>>, {rustc_query_impl[25c8ab03434e8ec6]::QueryFlags { is_anon: false, is_depth_limit: true, is_feedable: false }}>, false>
20: 0x7f25171b2d74 - rustc_query_impl[25c8ab03434e8ec6]::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
21: 0x7f2516106e4f - rustc_transmute[c78959dded7601a6]::layout::rustc::layout_of
22: 0x7f2516104ed2 - <rustc_transmute[c78959dded7601a6]::layout::tree::Tree<rustc_transmute[c78959dded7601a6]::layout::rustc::Def, rustc_middle[572c70537083e946]::ty::region::Region, rustc_middle[572c70537083e946]::ty::Ty>>::from_ty
23: 0x7f25160fe904 - <rustc_transmute[c78959dded7601a6]::rustc::TransmuteTypeEnv>::is_transmutable
24: 0x7f2516031bd5 - <rustc_trait_selection[447f93b904961586]::solve::delegate::SolverDelegate as rustc_next_trait_solver[b3345a89d684dc63]::delegate::SolverDelegate>::is_transmutable
25: 0x7f2515510ea4 - <rustc_type_ir[41dc425a4a83a9d6]::predicate::TraitPredicate<rustc_middle[572c70537083e946]::ty::context::TyCtxt> as rustc_next_trait_solver[b3345a89d684dc63]::solve::assembly::GoalKind<rustc_trait_selection[447f93b904961586]::solve::delegate::SolverDelegate, rustc_middle[572c70537083e946]::ty::context::TyCtxt>>::consider_builtin_transmute_candidate
26: 0x7f2517720e2f - <rustc_next_trait_solver[b3345a89d684dc63]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[447f93b904961586]::solve::delegate::SolverDelegate, rustc_middle[572c70537083e946]::ty::context::TyCtxt>>::assemble_builtin_impl_candidates::<rustc_type_ir[41dc425a4a83a9d6]::predicate::TraitPredicate<rustc_middle[572c70537083e946]::ty::context::TyCtxt>>
27: 0x7f2517740c50 - <rustc_next_trait_solver[b3345a89d684dc63]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[447f93b904961586]::solve::delegate::SolverDelegate, rustc_middle[572c70537083e946]::ty::context::TyCtxt>>::assemble_and_evaluate_candidates::<rustc_type_ir[41dc425a4a83a9d6]::predicate::TraitPredicate<rustc_middle[572c70537083e946]::ty::context::TyCtxt>>
28: 0x7f2517758169 - <rustc_next_trait_solver[b3345a89d684dc63]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[447f93b904961586]::solve::delegate::SolverDelegate, rustc_middle[572c70537083e946]::ty::context::TyCtxt>>::compute_trait_goal
29: 0x7f2517753956 - <rustc_next_trait_solver[b3345a89d684dc63]::solve::search_graph::SearchGraphDelegate<rustc_trait_selection[447f93b904961586]::solve::delegate::SolverDelegate> as rustc_type_ir[41dc425a4a83a9d6]::search_graph::Delegate>::compute_goal::{closure#0}
30: 0x7f25177529cd - <rustc_type_ir[41dc425a4a83a9d6]::search_graph::SearchGraph<rustc_next_trait_solver[b3345a89d684dc63]::solve::search_graph::SearchGraphDelegate<rustc_trait_selection[447f93b904961586]::solve::delegate::SolverDelegate>, rustc_middle[572c70537083e946]::ty::context::TyCtxt>>::evaluate_goal::{closure#0}::{closure#2}
31: 0x7f25174824ab - <rustc_next_trait_solver[b3345a89d684dc63]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[447f93b904961586]::solve::delegate::SolverDelegate, rustc_middle[572c70537083e946]::ty::context::TyCtxt>>::evaluate_goal_raw
32: 0x7f2517302e33 - <rustc_trait_selection[447f93b904961586]::solve::fulfill::FulfillmentCtxt<rustc_trait_selection[447f93b904961586]::traits::FulfillmentError> as rustc_infer[db6aea443443cbd5]::traits::engine::TraitEngine<rustc_trait_selection[447f93b904961586]::traits::FulfillmentError>>::try_evaluate_obligations
33: 0x7f2516d16917 - <rustc_hir_typeck[f21717366f0acd5]::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
34: 0x7f2516d1b030 - <rustc_hir_typeck[f21717366f0acd5]::fn_ctxt::FnCtxt>::check_expr_block
35: 0x7f2516d15dc4 - <rustc_hir_typeck[f21717366f0acd5]::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
36: 0x7f2516d597fd - rustc_hir_typeck[f21717366f0acd5]::check::check_fn
37: 0x7f25174cb33e - rustc_hir_typeck[f21717366f0acd5]::typeck_with_inspect::{closure#0}
38: 0x7f25174c9d70 - rustc_query_impl[25c8ab03434e8ec6]::query_impl::typeck::compute_fn::__rust_begin_short_backtrace
39: 0x7f25174c0e76 - rustc_query_system[5619a4a14f53d2]::query::plumbing::try_execute_query::<rustc_query_impl[25c8ab03434e8ec6]::SemiDynamicQueryDispatcher<rustc_data_structures[8538babf9bd6a81d]::vec_cache::VecCache<rustc_span[8ab66f3eafd11b9d]::def_id::LocalDefId, rustc_middle[572c70537083e946]::query::erase::ErasedData<[u8; 8usize]>, rustc_query_system[5619a4a14f53d2]::dep_graph::graph::DepNodeIndex>, {rustc_query_impl[25c8ab03434e8ec6]::QueryFlags { is_anon: false, is_depth_limit: false, is_feedable: false }}>, false>
40: 0x7f25174c0a49 - rustc_query_impl[25c8ab03434e8ec6]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
41: 0x7f25174b86a0 - <rustc_middle[572c70537083e946]::ty::context::TyCtxt>::par_hir_body_owners::<rustc_hir_analysis[e2937b89f0871be1]::check_crate::{closure#2}>::{closure#0}
42: 0x7f25174b80c0 - rustc_hir_analysis[e2937b89f0871be1]::check_crate
43: 0x7f25174bc09b - rustc_interface[5e14f3d1b07b7995]::passes::analysis
44: 0x7f2517a6b448 - rustc_query_system[5619a4a14f53d2]::query::plumbing::try_execute_query::<rustc_query_impl[25c8ab03434e8ec6]::SemiDynamicQueryDispatcher<rustc_query_system[5619a4a14f53d2]::query::caches::SingleCache<rustc_middle[572c70537083e946]::query::erase::ErasedData<[u8; 0usize]>>, {rustc_query_impl[25c8ab03434e8ec6]::QueryFlags { is_anon: false, is_depth_limit: false, is_feedable: false }}>, false>
45: 0x7f2517a6b18a - rustc_query_impl[25c8ab03434e8ec6]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
46: 0x7f2517ba8ce7 - <rustc_interface[5e14f3d1b07b7995]::passes::create_and_enter_global_ctxt<core[81298f05583b4988]::option::Option<rustc_interface[5e14f3d1b07b7995]::queries::Linker>, rustc_driver_impl[73ec0cfeb46ae4b6]::run_compiler::{closure#0}::{closure#2}>::{closure#2} as core[81298f05583b4988]::ops::function::FnOnce<(&rustc_session[9ad62f87fcf6845b]::session::Session, rustc_middle[572c70537083e946]::ty::context::CurrentGcx, alloc[acd192c11bf9e878]::sync::Arc<rustc_data_structures[8538babf9bd6a81d]::jobserver::Proxy>, &std[12e671b2ab06fb6e]::sync::once_lock::OnceLock<rustc_middle[572c70537083e946]::ty::context::GlobalCtxt>, &rustc_data_structures[8538babf9bd6a81d]::sync::worker_local::WorkerLocal<rustc_middle[572c70537083e946]::arena::Arena>, &rustc_data_structures[8538babf9bd6a81d]::sync::worker_local::WorkerLocal<rustc_hir[6d1544d29c786899]::Arena>, rustc_driver_impl[73ec0cfeb46ae4b6]::run_compiler::{closure#0}::{closure#2})>>::call_once::{shim:vtable#0}
47: 0x7f25179fdfa8 - rustc_interface[5e14f3d1b07b7995]::interface::run_compiler::<(), rustc_driver_impl[73ec0cfeb46ae4b6]::run_compiler::{closure#0}>::{closure#1}
48: 0x7f2517a555fe - std[12e671b2ab06fb6e]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[5e14f3d1b07b7995]::util::run_in_thread_with_globals<rustc_interface[5e14f3d1b07b7995]::util::run_in_thread_pool_with_globals<rustc_interface[5e14f3d1b07b7995]::interface::run_compiler<(), rustc_driver_impl[73ec0cfeb46ae4b6]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
49: 0x7f2517a55b20 - <std[12e671b2ab06fb6e]::thread::lifecycle::spawn_unchecked<rustc_interface[5e14f3d1b07b7995]::util::run_in_thread_with_globals<rustc_interface[5e14f3d1b07b7995]::util::run_in_thread_pool_with_globals<rustc_interface[5e14f3d1b07b7995]::interface::run_compiler<(), rustc_driver_impl[73ec0cfeb46ae4b6]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[81298f05583b4988]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
50: 0x7f2517a569ac - <std[12e671b2ab06fb6e]::sys::thread::unix::Thread>::new::thread_start
51: 0x7f251129698b - <unknown>
52: 0x7f251131a9cc - <unknown>
53: 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: please make sure that you have updated to the latest nightly
note: please attach the file at `/tmp/im/4/rustc-ice-2026-02-08T11_41_06-3869501.txt` to your bug report
note: rustc 1.95.0-nightly (c7f5f3e0d 2026-02-07) running on x86_64-unknown-linux-gnu
note: compiler flags: -Z next-solver=globally
query stack during panic:
panicked at /rustc-dev/c7f5f3e0d5defe632d44743cbaed56272e2b67f0/compiler/rustc_type_ir/src/const_kind.rs:124:17:
thread panicked while processing panic. aborting.
[1] 3869501 IOT instruction rustc a.rs -Znext-solver=globally
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the issue with the provided a.rs example using rustc a.rs -Znext-solver=globally. Start at rustc_ty_utils/src/layout.rs:173 and follow the layout_of and rustc_transmute stack entries shown in the backtrace. Done means this example no longer triggers the internal compiler error.
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
- 45/100