rust-lang / rust-lang/rust

rustc crashing when using calculated default value

Open
#118,952 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Code
#![allow(non_camel_case_types)]
#![feature(generic_const_exprs)]
#![feature(specialization)]

const DEFAULT_SMALL_VEC_INLINE_CAPACITY: usize = std::mem::size_of::<usize>() * 8;

pub const fn tiny_vec_cap<T>() -> usize {
	return (DEFAULT_SMALL_VEC_INLINE_CAPACITY - 1) / std::mem::size_of::<T>()
}

pub struct TinyVec<T, const N: usize = {tiny_vec_cap::<T>()}>
	where [
		();
		(N * std::mem::size_of::<T>())
		- std::mem::size_of::<std::ptr::NonNull<T>>()
		- std::mem::size_of::<isize>()
	]: ,
{
	data: isize //TinyVecData<T, N>,
}

pub fn main() {
	let t = TinyVec::<u8>::new();
}
Meta

rustc --version --verbose:

rustc 1.74.1-nightly (a28077b28 2023-12-04) (built from a source tarball)
binary: rustc
commit-hash: a28077b28a02b92985b3a3faecf92813155f1ea1
commit-date: 2023-12-04
host: x86_64-unknown-linux-gnu
release: 1.74.1-nightly
LLVM version: 17.0.4
Error output
<output>
Backtrace

thread 'rustc' panicked at /home/spock/prog/rustup/rustc-1.74.1-src/compiler/rustc_errors/src/lib.rs:1651:9:
Box<dyn Any>
stack backtrace:
   0:     0x7f82b1d9fc25 - std::backtrace::Backtrace::create::h2db78dee7af9fe5a
   1:     0x7f82b1d9fb60 - std::backtrace::Backtrace::force_capture::heb762e8f8269c2cf
   2:     0x7f82b2a2a47e - std[bdfad7d95fc3ce0d]::panicking::update_hook::<alloc[c67d041b9bf1b3b1]::boxed::Box<rustc_driver_impl[10f2b04f264bf4c0]::install_ice_hook::{closure#0}>>::{closure#0}
   3:     0x7f82b1ddfcad - std::panicking::rust_panic_with_hook::h4f534fdcbf3ca2ab
   4:     0x7f82b845eb96 - std[bdfad7d95fc3ce0d]::panicking::begin_panic::<rustc_errors[f611e1cb4186356a]::ExplicitBug>::{closure#0}
   5:     0x7f82b845e8b6 - std[bdfad7d95fc3ce0d]::sys_common::backtrace::__rust_end_short_backtrace::<std[bdfad7d95fc3ce0d]::panicking::begin_panic<rustc_errors[f611e1cb4186356a]::ExplicitBug>::{closure#0}, !>
   6:     0x7f82b28e63d6 - std[bdfad7d95fc3ce0d]::panicking::begin_panic::<rustc_errors[f611e1cb4186356a]::ExplicitBug>
   7:     0x7f82b83ee8d7 - <rustc_errors[f611e1cb4186356a]::HandlerInner>::bug::<alloc[c67d041b9bf1b3b1]::string::String>
   8:     0x7f82b83ee6b9 - <rustc_errors[f611e1cb4186356a]::Handler>::bug::<alloc[c67d041b9bf1b3b1]::string::String>
   9:     0x7f82b83c43a7 - rustc_middle[44eb6a75cf518d6b]::util::bug::opt_span_bug_fmt::<rustc_span[4535af8233016efb]::span_encoding::Span>::{closure#0}
  10:     0x7f82b83c043c - rustc_middle[44eb6a75cf518d6b]::ty::context::tls::with_opt::<rustc_middle[44eb6a75cf518d6b]::util::bug::opt_span_bug_fmt<rustc_span[4535af8233016efb]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  11:     0x7f82b83c00f8 - rustc_middle[44eb6a75cf518d6b]::ty::context::tls::with_context_opt::<rustc_middle[44eb6a75cf518d6b]::ty::context::tls::with_opt<rustc_middle[44eb6a75cf518d6b]::util::bug::opt_span_bug_fmt<rustc_span[4535af8233016efb]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  12:     0x7f82b28df7a2 - rustc_middle[44eb6a75cf518d6b]::util::bug::bug_fmt
  13:     0x7f82b28e02de - <rustc_middle[44eb6a75cf518d6b]::ty::generic_args::ArgFolder>::const_param_out_of_range
  14:     0x7f82b842c07a - <rustc_middle[44eb6a75cf518d6b]::ty::generic_args::ArgFolder as rustc_type_ir[593b847924ce7199]::fold::TypeFolder<rustc_middle[44eb6a75cf518d6b]::ty::context::TyCtxt>>::fold_const
  15:     0x7f82b84a2173 - <&rustc_middle[44eb6a75cf518d6b]::ty::list::List<rustc_middle[44eb6a75cf518d6b]::ty::generic_args::GenericArg> as rustc_type_ir[593b847924ce7199]::fold::TypeFoldable<rustc_middle[44eb6a75cf518d6b]::ty::context::TyCtxt>>::try_fold_with::<rustc_middle[44eb6a75cf518d6b]::ty::generic_args::ArgFolder>
  16:     0x7f82b84a74f7 - <rustc_middle[44eb6a75cf518d6b]::ty::consts::Const as rustc_type_ir[593b847924ce7199]::fold::TypeSuperFoldable<rustc_middle[44eb6a75cf518d6b]::ty::context::TyCtxt>>::try_super_fold_with::<rustc_middle[44eb6a75cf518d6b]::ty::generic_args::ArgFolder>
  17:     0x7f82b8374348 - <rustc_middle[44eb6a75cf518d6b]::ty::Ty as rustc_type_ir[593b847924ce7199]::fold::TypeSuperFoldable<rustc_middle[44eb6a75cf518d6b]::ty::context::TyCtxt>>::try_super_fold_with::<rustc_middle[44eb6a75cf518d6b]::ty::generic_args::ArgFolder>
  18:     0x7f82b8382c81 - <rustc_middle[44eb6a75cf518d6b]::ty::ClauseKind as rustc_type_ir[593b847924ce7199]::fold::TypeFoldable<rustc_middle[44eb6a75cf518d6b]::ty::context::TyCtxt>>::try_fold_with::<rustc_middle[44eb6a75cf518d6b]::ty::generic_args::ArgFolder>
  19:     0x7f82b8383b86 - <rustc_middle[44eb6a75cf518d6b]::ty::PredicateKind as rustc_type_ir[593b847924ce7199]::fold::TypeFoldable<rustc_middle[44eb6a75cf518d6b]::ty::context::TyCtxt>>::try_fold_with::<rustc_middle[44eb6a75cf518d6b]::ty::generic_args::ArgFolder>
  20:     0x7f82b838d214 - <core[f6e056eb5cd9dbcb]::iter::adapters::map::Map<core[f6e056eb5cd9dbcb]::slice::iter::Iter<(rustc_middle[44eb6a75cf518d6b]::ty::Clause, rustc_span[4535af8233016efb]::span_encoding::Span)>, <rustc_middle[44eb6a75cf518d6b]::ty::generics::GenericPredicates>::instantiate_into::{closure#0}> as core[f6e056eb5cd9dbcb]::iter::traits::iterator::Iterator>::fold::<(), core[f6e056eb5cd9dbcb]::iter::traits::iterator::Iterator::for_each::call<rustc_middle[44eb6a75cf518d6b]::ty::Clause, <alloc[c67d041b9bf1b3b1]::vec::Vec<rustc_middle[44eb6a75cf518d6b]::ty::Clause>>::extend_trusted<core[f6e056eb5cd9dbcb]::iter::adapters::map::Map<core[f6e056eb5cd9dbcb]::slice::iter::Iter<(rustc_middle[44eb6a75cf518d6b]::ty::Clause, rustc_span[4535af8233016efb]::span_encoding::Span)>, <rustc_middle[44eb6a75cf518d6b]::ty::generics::GenericPredicates>::instantiate_into::{closure#0}>>::{closure#0}>::{closure#0}>
  21:     0x7f82b83ce85b - <rustc_middle[44eb6a75cf518d6b]::ty::generics::GenericPredicates>::instantiate_into
  22:     0x7f82b83c17c7 - <rustc_middle[44eb6a75cf518d6b]::ty::generics::GenericPredicates>::instantiate
  23:     0x7f82b80cf3ad - <rustc_trait_selection[3acff8e3b121b18f]::traits::wf::WfPredicates>::nominal_obligations
  24:     0x7f82b80cddb3 - <rustc_trait_selection[3acff8e3b121b18f]::traits::wf::WfPredicates>::compute
  25:     0x7f82b80ca65e - rustc_trait_selection[3acff8e3b121b18f]::traits::wf::obligations
  26:     0x7f82b8073eea - <rustc_trait_selection[3acff8e3b121b18f]::traits::fulfill::FulfillProcessor as rustc_data_structures[787a2ef21f270cd3]::obligation_forest::ObligationProcessor>::process_obligation
  27:     0x7f82b80625d8 - <rustc_data_structures[787a2ef21f270cd3]::obligation_forest::ObligationForest<rustc_trait_selection[3acff8e3b121b18f]::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection[3acff8e3b121b18f]::traits::fulfill::FulfillProcessor>
  28:     0x7f82b8071e56 - <rustc_trait_selection[3acff8e3b121b18f]::traits::fulfill::FulfillmentContext as rustc_infer[1566c839cb6cf411]::traits::engine::TraitEngine>::select_where_possible
  29:     0x7f82b80c7848 - <rustc_infer[1566c839cb6cf411]::infer::at::At as rustc_trait_selection[3acff8e3b121b18f]::traits::project::NormalizeExt>::deeply_normalize::<rustc_middle[44eb6a75cf518d6b]::ty::Ty>
  30:     0x7f82b7ff7d97 - <rustc_trait_selection[3acff8e3b121b18f]::traits::engine::ObligationCtxt>::assumed_wf_types
  31:     0x7f82b7ff7a9d - <rustc_trait_selection[3acff8e3b121b18f]::traits::engine::ObligationCtxt>::assumed_wf_types_and_report_errors
  32:     0x7f82b65eb056 - rustc_hir_analysis[e1e2c29a20eed8d7]::check::wfcheck::check_item_fn
  33:     0x7f82b65e6859 - rustc_hir_analysis[e1e2c29a20eed8d7]::check::wfcheck::check_well_formed
  34:     0x7f82b73c216c - rustc_query_impl[574f24497ced2294]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[574f24497ced2294]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[44eb6a75cf518d6b]::query::erase::Erased<[u8; 0usize]>>
  35:     0x7f82b74f518c - <rustc_query_impl[574f24497ced2294]::query_impl::check_well_formed::dynamic_query::{closure#2} as core[f6e056eb5cd9dbcb]::ops::function::FnOnce<(rustc_middle[44eb6a75cf518d6b]::ty::context::TyCtxt, rustc_hir[bdde3aae30964e4]::hir_id::OwnerId)>>::call_once
  36:     0x7f82b761a515 - rustc_query_system[1741f7a965137d1c]::query::plumbing::try_execute_query::<rustc_query_impl[574f24497ced2294]::DynamicConfig<rustc_query_system[1741f7a965137d1c]::query::caches::VecCache<rustc_hir[bdde3aae30964e4]::hir_id::OwnerId, rustc_middle[44eb6a75cf518d6b]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[574f24497ced2294]::plumbing::QueryCtxt, false>
  37:     0x7f82b741a10d - rustc_query_impl[574f24497ced2294]::query_impl::check_well_formed::get_query_non_incr::__rust_end_short_backtrace
  38:     0x7f82b66e2578 - std[bdfad7d95fc3ce0d]::panicking::try::<(), core[f6e056eb5cd9dbcb]::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures[787a2ef21f270cd3]::sync::parallel::disabled::par_for_each_in<&[rustc_hir[bdde3aae30964e4]::hir::ImplItemId], <rustc_middle[44eb6a75cf518d6b]::hir::ModuleItems>::par_impl_items<rustc_hir_analysis[e1e2c29a20eed8d7]::check::wfcheck::check_mod_type_wf::{closure#1}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  39:     0x7f82b6703c99 - <rustc_data_structures[787a2ef21f270cd3]::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures[787a2ef21f270cd3]::sync::parallel::disabled::par_for_each_in<&[rustc_hir[bdde3aae30964e4]::hir::ItemId], <rustc_middle[44eb6a75cf518d6b]::hir::ModuleItems>::par_items<rustc_hir_analysis[e1e2c29a20eed8d7]::check::wfcheck::check_mod_type_wf::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>
  40:     0x7f82b65ed57e - rustc_hir_analysis[e1e2c29a20eed8d7]::check::wfcheck::check_mod_type_wf
  41:     0x7f82b73c215c - rustc_query_impl[574f24497ced2294]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[574f24497ced2294]::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[44eb6a75cf518d6b]::query::erase::Erased<[u8; 0usize]>>
  42:     0x7f82b74f50fc - <rustc_query_impl[574f24497ced2294]::query_impl::check_mod_type_wf::dynamic_query::{closure#2} as core[f6e056eb5cd9dbcb]::ops::function::FnOnce<(rustc_middle[44eb6a75cf518d6b]::ty::context::TyCtxt, rustc_span[4535af8233016efb]::def_id::LocalModDefId)>>::call_once
  43:     0x7f82b75e4d45 - rustc_query_system[1741f7a965137d1c]::query::plumbing::try_execute_query::<rustc_query_impl[574f24497ced2294]::DynamicConfig<rustc_query_system[1741f7a965137d1c]::query::caches::DefaultCache<rustc_span[4535af8233016efb]::def_id::LocalModDefId, rustc_middle[44eb6a75cf518d6b]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[574f24497ced2294]::plumbing::QueryCtxt, false>
  44:     0x7f82b740826d - rustc_query_impl[574f24497ced2294]::query_impl::check_mod_type_wf::get_query_non_incr::__rust_end_short_backtrace
  45:     0x7f82b6703d7c - <rustc_data_structures[787a2ef21f270cd3]::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures[787a2ef21f270cd3]::sync::parallel::disabled::par_for_each_in<&[rustc_hir[bdde3aae30964e4]::hir_id::OwnerId], <rustc_middle[44eb6a75cf518d6b]::hir::map::Map>::par_for_each_module<rustc_hir_analysis[e1e2c29a20eed8d7]::check_crate::{closure#5}::{closure#0}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>
  46:     0x7f82b6673fde - rustc_hir_analysis[e1e2c29a20eed8d7]::check_crate
  47:     0x7f82b2bdfa00 - rustc_interface[ddf32e056eafbd1a]::passes::analysis
  48:     0x7f82b73c491a - rustc_query_impl[574f24497ced2294]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[574f24497ced2294]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[44eb6a75cf518d6b]::query::erase::Erased<[u8; 1usize]>>
  49:     0x7f82b7599cb8 - <rustc_query_impl[574f24497ced2294]::query_impl::analysis::dynamic_query::{closure#2} as core[f6e056eb5cd9dbcb]::ops::function::FnOnce<(rustc_middle[44eb6a75cf518d6b]::ty::context::TyCtxt, ())>>::call_once
  50:     0x7f82b75bcfdb - rustc_query_system[1741f7a965137d1c]::query::plumbing::try_execute_query::<rustc_query_impl[574f24497ced2294]::DynamicConfig<rustc_query_system[1741f7a965137d1c]::query::caches::SingleCache<rustc_middle[44eb6a75cf518d6b]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[574f24497ced2294]::plumbing::QueryCtxt, false>
  51:     0x7f82b73f68f3 - rustc_query_impl[574f24497ced2294]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  52:     0x7f82b2a39362 - <rustc_middle[44eb6a75cf518d6b]::ty::context::GlobalCtxt>::enter::<rustc_driver_impl[10f2b04f264bf4c0]::run_compiler::{closure#1}::{closure#2}::{closure#6}, core[f6e056eb5cd9dbcb]::result::Result<(), rustc_span[4535af8233016efb]::ErrorGuaranteed>>
  53:     0x7f82b2a49811 - rustc_span[4535af8233016efb]::set_source_map::<core[f6e056eb5cd9dbcb]::result::Result<(), rustc_span[4535af8233016efb]::ErrorGuaranteed>, rustc_interface[ddf32e056eafbd1a]::interface::run_compiler<core[f6e056eb5cd9dbcb]::result::Result<(), rustc_span[4535af8233016efb]::ErrorGuaranteed>, rustc_driver_impl[10f2b04f264bf4c0]::run_compiler::{closure#1}>::{closure#0}::{closure#0}>
  54:     0x7f82b2a29433 - std[bdfad7d95fc3ce0d]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[ddf32e056eafbd1a]::util::run_in_thread_with_globals<rustc_interface[ddf32e056eafbd1a]::interface::run_compiler<core[f6e056eb5cd9dbcb]::result::Result<(), rustc_span[4535af8233016efb]::ErrorGuaranteed>, rustc_driver_impl[10f2b04f264bf4c0]::run_compiler::{closure#1}>::{closure#0}, core[f6e056eb5cd9dbcb]::result::Result<(), rustc_span[4535af8233016efb]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[f6e056eb5cd9dbcb]::result::Result<(), rustc_span[4535af8233016efb]::ErrorGuaranteed>>
  55:     0x7f82b2a2a83b - <<std[bdfad7d95fc3ce0d]::thread::Builder>::spawn_unchecked_<rustc_interface[ddf32e056eafbd1a]::util::run_in_thread_with_globals<rustc_interface[ddf32e056eafbd1a]::interface::run_compiler<core[f6e056eb5cd9dbcb]::result::Result<(), rustc_span[4535af8233016efb]::ErrorGuaranteed>, rustc_driver_impl[10f2b04f264bf4c0]::run_compiler::{closure#1}>::{closure#0}, core[f6e056eb5cd9dbcb]::result::Result<(), rustc_span[4535af8233016efb]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[f6e056eb5cd9dbcb]::result::Result<(), rustc_span[4535af8233016efb]::ErrorGuaranteed>>::{closure#1} as core[f6e056eb5cd9dbcb]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  56:     0x7f82b1d912b5 - std::sys::unix::thread::Thread::new::thread_start::hd48d5955fb04426d
  57:     0x7f82b1ad7609 - start_thread
                               at /build/glibc-wuryBv/glibc-2.31/nptl/pthread_create.c:477:8
  58:     0x7f82b1c17353 - clone
                               at /build/glibc-wuryBv/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
  59:                0x0 - <unknown>


rustc version: 1.74.1-nightly (a28077b28 2023-12-04) (built from a source tarball)
platform: x86_64-unknown-linux-gnu

query stack during panic:
#0 [check_well_formed] checking that `test_new` is well-formed
#1 [check_mod_type_wf] checking that types are well-formed in top-level module
#2 [analysis] running analysis passes on this crate
end of query stack

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 compiling the provided reduced example with a current nightly and compare the backtrace through rustc_middle::ty::generic_args::ArgFolder::const_param_out_of_range and rustc_hir_analysis::check::wfcheck. The work is complete when this input no longer causes an internal compiler error and a regression test covers the reported behavior.

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.