Skip to content

ICE: write_immediate_to_mplace: invalid ScalarPair layout: TyAndLayout ..  #121424

Closed

Description

@matthiaskrgr

snippet:

#[repr(C)]

struct MySlice<T: Copy>(bool, T);
type MySliceBool = MySlice<[bool]>;

const MYSLICE_GOOD: &MySliceBool = &MySlice(true, [false]);

Version information

rustc 1.78.0-nightly (f8131a48a 2024-02-21)
binary: rustc
commit-hash: f8131a48a46ac3bc8a3d0fe0477055b132cffdc3
commit-date: 2024-02-21
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[E0601]: `main` function not found in crate `mvce`
 --> /tmp/icemaker_global_tempdir.4OTx4jnqpk6N/rustc_testrunner_tmpdir_reporting.Yb3kuq0TatKu/mvce.rs:6:60
  |
6 | const MYSLICE_GOOD: &MySliceBool = &MySlice(true, [false]);
  |                                                            ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.4OTx4jnqpk6N/rustc_testrunner_tmpdir_reporting.Yb3kuq0TatKu/mvce.rs`

error[E0277]: the trait bound `[bool]: Copy` is not satisfied
 --> /tmp/icemaker_global_tempdir.4OTx4jnqpk6N/rustc_testrunner_tmpdir_reporting.Yb3kuq0TatKu/mvce.rs:6:22
  |
6 | const MYSLICE_GOOD: &MySliceBool = &MySlice(true, [false]);
  |                      ^^^^^^^^^^^ the trait `Copy` is not implemented for `[bool]`
  |
  = help: the trait `Copy` is implemented for `[T; N]`
note: required by a bound in `MySlice`
 --> /tmp/icemaker_global_tempdir.4OTx4jnqpk6N/rustc_testrunner_tmpdir_reporting.Yb3kuq0TatKu/mvce.rs:3:19
  |
3 | struct MySlice<T: Copy>(bool, T);
  |                   ^^^^ required by this bound in `MySlice`

error: internal compiler error: compiler/rustc_const_eval/src/interpret/place.rs:704:21: write_immediate_to_mplace: invalid ScalarPair layout: TyAndLayout {
                                    ty: &MySlice<[bool]>,
                                    layout: Layout {
                                        size: Size(8 bytes),
                                        align: AbiAndPrefAlign {
                                            abi: Align(8 bytes),
                                            pref: Align(8 bytes),
                                        },
                                        abi: Scalar(
                                            Initialized {
                                                value: Pointer(
                                                    AddressSpace(
                                                        0,
                                                    ),
                                                ),
                                                valid_range: 1..=18446744073709551615,
                                            },
                                        ),
                                        fields: Primitive,
                                        largest_niche: Some(
                                            Niche {
                                                offset: Size(0 bytes),
                                                value: Pointer(
                                                    AddressSpace(
                                                        0,
                                                    ),
                                                ),
                                                valid_range: 1..=18446744073709551615,
                                            },
                                        ),
                                        variants: Single {
                                            index: 0,
                                        },
                                        max_repr_align: None,
                                        unadjusted_abi_align: Align(8 bytes),
                                    },
                                }
 --> /tmp/icemaker_global_tempdir.4OTx4jnqpk6N/rustc_testrunner_tmpdir_reporting.Yb3kuq0TatKu/mvce.rs:6:1
  |
6 | const MYSLICE_GOOD: &MySliceBool = &MySlice(true, [false]);
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

thread 'rustc' panicked at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/compiler/rustc_middle/src/util/bug.rs:34:50:
Box<dyn Any>
stack backtrace:
   0:     0x7f23895c2af6 - std::backtrace_rs::backtrace::libunwind::trace::hbec2edc838b433e2
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
   1:     0x7f23895c2af6 - std::backtrace_rs::backtrace::trace_unsynchronized::h88c30257ee0dd166
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f23895c2af6 - std::sys_common::backtrace::_print_fmt::h9176654d509e3088
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x7f23895c2af6 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h671feaee1776bf19
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f2389613a7c - core::fmt::rt::Argument::fmt::h59605c83ae32d935
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/core/src/fmt/rt.rs:142:9
   5:     0x7f2389613a7c - core::fmt::write::hf7af8dfcfd20db5b
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/core/src/fmt/mod.rs:1120:17
   6:     0x7f23895b74bf - std::io::Write::write_fmt::h92a5dbf489025e71
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/std/src/io/mod.rs:1846:15
   7:     0x7f23895c28a4 - std::sys_common::backtrace::_print::h00080302d23998ae
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7f23895c28a4 - std::sys_common::backtrace::print::h6b23124445400245
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7f23895c55eb - std::panicking::default_hook::{{closure}}::hd67b2f9d36675a28
  10:     0x7f23895c5339 - std::panicking::default_hook::h10a39ef11c714e42
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/std/src/panicking.rs:292:9
  11:     0x7f238627a94c - std[5a8e7f94216a9138]::panicking::update_hook::<alloc[e14ab1f516d287ab]::boxed::Box<rustc_driver_impl[e279e4f1fedd9109]::install_ice_hook::{closure#0}>>::{closure#0}
  12:     0x7f23895c5d50 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h37ba37dc48823c1d
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/alloc/src/boxed.rs:2030:9
  13:     0x7f23895c5d50 - std::panicking::rust_panic_with_hook::he3e3bc7c345bf54b
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/std/src/panicking.rs:786:13
  14:     0x7f23862a7524 - std[5a8e7f94216a9138]::panicking::begin_panic::<rustc_errors[34364e5c712fab73]::ExplicitBug>::{closure#0}
  15:     0x7f23862a4176 - std[5a8e7f94216a9138]::sys_common::backtrace::__rust_end_short_backtrace::<std[5a8e7f94216a9138]::panicking::begin_panic<rustc_errors[34364e5c712fab73]::ExplicitBug>::{closure#0}, !>
  16:     0x7f238629f936 - std[5a8e7f94216a9138]::panicking::begin_panic::<rustc_errors[34364e5c712fab73]::ExplicitBug>
  17:     0x7f2384c17631 - <rustc_errors[34364e5c712fab73]::diagnostic::BugAbort as rustc_errors[34364e5c712fab73]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  18:     0x7f2386201f60 - rustc_middle[446dd094ad85939e]::util::bug::opt_span_bug_fmt::<rustc_span[adb133ac03280fc1]::span_encoding::Span>::{closure#0}
  19:     0x7f238620217a - rustc_middle[446dd094ad85939e]::ty::context::tls::with_opt::<rustc_middle[446dd094ad85939e]::util::bug::opt_span_bug_fmt<rustc_span[adb133ac03280fc1]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  20:     0x7f23861f8e48 - rustc_middle[446dd094ad85939e]::ty::context::tls::with_context_opt::<rustc_middle[446dd094ad85939e]::ty::context::tls::with_opt<rustc_middle[446dd094ad85939e]::util::bug::opt_span_bug_fmt<rustc_span[adb133ac03280fc1]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  21:     0x7f2385850f54 - rustc_middle[446dd094ad85939e]::util::bug::span_bug_fmt::<rustc_span[adb133ac03280fc1]::span_encoding::Span>
  22:     0x7f23876e3e85 - <rustc_const_eval[b7e9a6566b8f5ff6]::interpret::eval_context::InterpCx<rustc_const_eval[b7e9a6566b8f5ff6]::const_eval::machine::CompileTimeInterpreter>>::write_immediate_no_validate::<rustc_const_eval[b7e9a6566b8f5ff6]::interpret::place::PlaceTy>
  23:     0x7f23879ff729 - <rustc_const_eval[b7e9a6566b8f5ff6]::interpret::eval_context::InterpCx<rustc_const_eval[b7e9a6566b8f5ff6]::const_eval::machine::CompileTimeInterpreter>>::pop_stack_frame
  24:     0x7f2388482b8e - rustc_const_eval[b7e9a6566b8f5ff6]::const_eval::eval_queries::eval_body_using_ecx::{closure#0}
  25:     0x7f2388476f23 - rustc_const_eval[b7e9a6566b8f5ff6]::const_eval::eval_queries::eval_in_interpreter
  26:     0x7f23879fa938 - rustc_const_eval[b7e9a6566b8f5ff6]::const_eval::eval_queries::eval_to_allocation_raw_provider
  27:     0x7f23879fa706 - rustc_query_impl[9d4c51777e2bb749]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[9d4c51777e2bb749]::query_impl::eval_to_allocation_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[446dd094ad85939e]::query::erase::Erased<[u8; 24usize]>>
  28:     0x7f238800ba51 - rustc_query_system[9b2ccfe41ae3bb1b]::query::plumbing::try_execute_query::<rustc_query_impl[9d4c51777e2bb749]::DynamicConfig<rustc_query_system[9b2ccfe41ae3bb1b]::query::caches::DefaultCache<rustc_middle[446dd094ad85939e]::ty::ParamEnvAnd<rustc_middle[446dd094ad85939e]::mir::interpret::GlobalId>, rustc_middle[446dd094ad85939e]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[9d4c51777e2bb749]::plumbing::QueryCtxt, false>
  29:     0x7f238800b62c - rustc_query_impl[9d4c51777e2bb749]::query_impl::eval_to_allocation_raw::get_query_non_incr::__rust_end_short_backtrace
  30:     0x7f23879fb60d - rustc_const_eval[b7e9a6566b8f5ff6]::const_eval::eval_queries::eval_to_const_value_raw_provider
  31:     0x7f23879fb40c - rustc_query_impl[9d4c51777e2bb749]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[9d4c51777e2bb749]::query_impl::eval_to_const_value_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[446dd094ad85939e]::query::erase::Erased<[u8; 24usize]>>
  32:     0x7f238800ba14 - rustc_query_system[9b2ccfe41ae3bb1b]::query::plumbing::try_execute_query::<rustc_query_impl[9d4c51777e2bb749]::DynamicConfig<rustc_query_system[9b2ccfe41ae3bb1b]::query::caches::DefaultCache<rustc_middle[446dd094ad85939e]::ty::ParamEnvAnd<rustc_middle[446dd094ad85939e]::mir::interpret::GlobalId>, rustc_middle[446dd094ad85939e]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[9d4c51777e2bb749]::plumbing::QueryCtxt, false>
  33:     0x7f238800b530 - rustc_query_impl[9d4c51777e2bb749]::query_impl::eval_to_const_value_raw::get_query_non_incr::__rust_end_short_backtrace
  34:     0x7f2387fafe6b - <rustc_middle[446dd094ad85939e]::query::plumbing::TyCtxtEnsure>::const_eval_poly
  35:     0x7f2387fadbd3 - rustc_hir_analysis[71d4294717f7f2b7]::check_crate
  36:     0x7f23880a2dd3 - rustc_interface[7ca501d7f8f3a34f]::passes::analysis
  37:     0x7f23880a2a29 - rustc_query_impl[9d4c51777e2bb749]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[9d4c51777e2bb749]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[446dd094ad85939e]::query::erase::Erased<[u8; 1usize]>>
  38:     0x7f238833d4a5 - rustc_query_system[9b2ccfe41ae3bb1b]::query::plumbing::try_execute_query::<rustc_query_impl[9d4c51777e2bb749]::DynamicConfig<rustc_query_system[9b2ccfe41ae3bb1b]::query::caches::SingleCache<rustc_middle[446dd094ad85939e]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[9d4c51777e2bb749]::plumbing::QueryCtxt, false>
  39:     0x7f238833d209 - rustc_query_impl[9d4c51777e2bb749]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  40:     0x7f238834c719 - rustc_interface[7ca501d7f8f3a34f]::interface::run_compiler::<core[85b4fd477ce5bb21]::result::Result<(), rustc_span[adb133ac03280fc1]::ErrorGuaranteed>, rustc_driver_impl[e279e4f1fedd9109]::run_compiler::{closure#0}>::{closure#0}
  41:     0x7f23885be705 - std[5a8e7f94216a9138]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[7ca501d7f8f3a34f]::util::run_in_thread_with_globals<rustc_interface[7ca501d7f8f3a34f]::util::run_in_thread_pool_with_globals<rustc_interface[7ca501d7f8f3a34f]::interface::run_compiler<core[85b4fd477ce5bb21]::result::Result<(), rustc_span[adb133ac03280fc1]::ErrorGuaranteed>, rustc_driver_impl[e279e4f1fedd9109]::run_compiler::{closure#0}>::{closure#0}, core[85b4fd477ce5bb21]::result::Result<(), rustc_span[adb133ac03280fc1]::ErrorGuaranteed>>::{closure#0}, core[85b4fd477ce5bb21]::result::Result<(), rustc_span[adb133ac03280fc1]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[85b4fd477ce5bb21]::result::Result<(), rustc_span[adb133ac03280fc1]::ErrorGuaranteed>>
  42:     0x7f23885be532 - <<std[5a8e7f94216a9138]::thread::Builder>::spawn_unchecked_<rustc_interface[7ca501d7f8f3a34f]::util::run_in_thread_with_globals<rustc_interface[7ca501d7f8f3a34f]::util::run_in_thread_pool_with_globals<rustc_interface[7ca501d7f8f3a34f]::interface::run_compiler<core[85b4fd477ce5bb21]::result::Result<(), rustc_span[adb133ac03280fc1]::ErrorGuaranteed>, rustc_driver_impl[e279e4f1fedd9109]::run_compiler::{closure#0}>::{closure#0}, core[85b4fd477ce5bb21]::result::Result<(), rustc_span[adb133ac03280fc1]::ErrorGuaranteed>>::{closure#0}, core[85b4fd477ce5bb21]::result::Result<(), rustc_span[adb133ac03280fc1]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[85b4fd477ce5bb21]::result::Result<(), rustc_span[adb133ac03280fc1]::ErrorGuaranteed>>::{closure#1} as core[85b4fd477ce5bb21]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  43:     0x7f23895cf725 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h1bff3efb61c3fa6b
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/alloc/src/boxed.rs:2016:9
  44:     0x7f23895cf725 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h83141cf549dced8a
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/alloc/src/boxed.rs:2016:9
  45:     0x7f23895cf725 - std::sys::pal::unix::thread::Thread::new::thread_start::hbe9287fdd7c325bc
                               at /rustc/f8131a48a46ac3bc8a3d0fe0477055b132cffdc3/library/std/src/sys/pal/unix/thread.rs:108:17
  46:     0x7f23832749eb - <unknown>
  47:     0x7f23832f87cc - <unknown>
  48:                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 (f8131a48a 2024-02-21) running on x86_64-unknown-linux-gnu

query stack during panic:
#0 [eval_to_allocation_raw] const-evaluating + checking `MYSLICE_GOOD`
#1 [eval_to_const_value_raw] simplifying constant for the type system `MYSLICE_GOOD`
#2 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 3 previous errors

Some errors have detailed explanations: E0277, E0601.
For more information about an error, try `rustc --explain E0277`.

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 Feb 22, 2024
  2. added
    needs-triageThis issue may need triage. Remove when done. See docs forge.rust-lang.org/release/issue-triaging
    on Feb 22, 2024
  3. changed the title [-]ICE: write_immediate_to_mplace: invalid ScalarPair layout: TyAndLayout .. `[/-] [+]ICE: `write_immediate_to_mplace: invalid ScalarPair layout: TyAndLayout .. `[/+] on Feb 22, 2024
  4. matthiaskrgr commented on Feb 22, 2024

    @matthiaskrgr
    MemberAuthor
  5. added
    A-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)
    S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issue
    and removed
    needs-triageThis issue may need triage. Remove when done. See docs forge.rust-lang.org/release/issue-triaging
    on Feb 26, 2024
  6. added
    E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.
    on Mar 8, 2024
  7. added a commit that references this issue on Mar 9, 2024
  8. added a commit that references this issue on Mar 9, 2024
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-const-evalArea: Constant evaluation, covers all const contexts (static, const fn, ...)C-bugCategory: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️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.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions