Skip to content

ICE: invalid scalar pair layout #98176

@RalfJung

Description

@RalfJung

This test in Miri recently started ICEing:

error: internal compiler error: /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_const_eval/src/interpret/place.rs:771:68: write_immediate_to_mplace: invalid ScalarPair layout: TyAndLayout {
                                    ty: *mut alloc::collections::btree::node::LeafNode<Foo, ()>,
                                    layout: Layout {
                                        fields: Primitive,
                                        variants: Single {
                                            index: 0,
                                        },
                                        abi: Scalar(
                                            Initialized {
                                                value: Pointer,
                                                valid_range: 0..=18446744073709551615,
                                            },
                                        ),
                                        largest_niche: None,
                                        align: AbiAndPrefAlign {
                                            abi: Align(8 bytes),
                                            pref: Align(8 bytes),
                                        },
                                        size: Size(8 bytes),
                                    },
                                }
  --> /home/r/.rustup/toolchains/miri/lib/rustlib/src/rust/library/alloc/src/collections/btree/node.rs:84:28
   |
84 |             LeafNode::init(leaf.as_mut_ptr());
   |                            ^^^^^^^^^^^^^^^^^

So we have a ScalarPair value with Scalar layout. Clearly something went wrong somewhere earlier when that value was constructed.

Backtrace
thread 'rustc' panicked at 'Box<dyn Any>', /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_errors/src/lib.rs:1331:9
stack backtrace:
   0:     0x7f5e230ae4cd - std::backtrace_rs::backtrace::libunwind::trace::ha65f46174cdb360a
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7f5e230ae4cd - std::backtrace_rs::backtrace::trace_unsynchronized::hfbfbd995eed88907
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f5e230ae4cd - std::sys_common::backtrace::_print_fmt::hb9a4b91d9836896b
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x7f5e230ae4cd - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h74b81077de211a85
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x7f5e2310a30c - core::fmt::write::h79f47bb3504917f6
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/core/src/fmt/mod.rs:1196:17
   5:     0x7f5e2309fa91 - std::io::Write::write_fmt::h3937ab33a0b333dc
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/io/mod.rs:1654:15
   6:     0x7f5e230b11a5 - std::sys_common::backtrace::_print::h93abfd2adb3fdfb0
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x7f5e230b11a5 - std::sys_common::backtrace::print::h35a3573fe2a0b616
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x7f5e230b11a5 - std::panicking::default_hook::{{closure}}::h0e88dc5c1d6b72c1
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/panicking.rs:295:22
   9:     0x7f5e230b0ec6 - std::panicking::default_hook::h472eb815610d1ad9
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/panicking.rs:314:9
  10:     0x7f5e23888d81 - rustc_driver[f30206aada3619d2]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0x7f5e230b187a - std::panicking::rust_panic_with_hook::h65d3a31645b7d9c0
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/panicking.rs:702:17
  12:     0x55940784c023 - std::panicking::begin_panic::{{closure}}::h3cd7d2520ba0a39c
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/panicking.rs:617:9
  13:     0x55940784bff6 - std::sys_common::backtrace::__rust_end_short_backtrace::hf2f19a7d201a3078
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/sys_common/backtrace.rs:138:18
  14:     0x5594076b6a96 - std::panicking::begin_panic::h6814c3cf587ca3fb
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/panicking.rs:616:12
  15:     0x559407819b66 - std::panic::panic_any::hfff2880ea7eb7866
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/library/std/src/panic.rs:61:5
  16:     0x559407819013 - rustc_errors::HandlerInner::span_bug::h08b5b6a6c06108aa
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_errors/src/lib.rs:1331:9
  17:     0x559407819b0a - rustc_errors::Handler::span_bug::h43e80d1caefd13a6
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_errors/src/lib.rs:912:9
  18:     0x559407845549 - rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}::hc07de1ff7ee9cfd9
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_middle/src/util/bug.rs:34:40
  19:     0x559407845549 - rustc_middle::ty::context::tls::with_opt::{{closure}}::hd7fb4337a1bf88f4
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_middle/src/ty/context.rs:1900:40
  20:     0x559407845549 - rustc_middle::ty::context::tls::with_context_opt::h8ef810eb8003f5f6
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_middle/src/ty/context.rs:1852:22
  21:     0x559407845549 - rustc_middle::ty::context::tls::with_opt::h93bb0b3d4802b0e9
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_middle/src/ty/context.rs:1900:9
  22:     0x5594078455a9 - rustc_middle::util::bug::opt_span_bug_fmt::hc158fe01d3cd1e01
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_middle/src/util/bug.rs:31:5
  23:     0x5594076b6a57 - rustc_middle::util::bug::span_bug_fmt::h7b911efb8d56e467
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_middle/src/util/bug.rs:22:5
  24:     0x559407781814 - rustc_const_eval::interpret::place::<impl rustc_const_eval::interpret::eval_context::InterpCx<M>>::write_immediate_to_mplace_no_validate::h0638e32f5165e0c1
  25:     0x5594077809cb - rustc_const_eval::interpret::place::<impl rustc_const_eval::interpret::eval_context::InterpCx<M>>::write_immediate_no_validate::h69bc9b8a733970d8
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_const_eval/src/interpret/place.rs:733:9
  26:     0x559407780422 - rustc_const_eval::interpret::place::<impl rustc_const_eval::interpret::eval_context::InterpCx<M>>::copy_op_no_validate::h3950ffa7c8a7eabe
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_const_eval/src/interpret/place.rs:872:24
  27:     0x55940777ea1d - rustc_const_eval::interpret::place::<impl rustc_const_eval::interpret::eval_context::InterpCx<M>>::copy_op::hbb10dc29e60e83fa
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_const_eval/src/interpret/place.rs:836:9
  28:     0x55940777ea1d - rustc_const_eval::interpret::place::<impl rustc_const_eval::interpret::eval_context::InterpCx<M>>::copy_op_transmute::h2e5a425a97c34a82
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_const_eval/src/interpret/place.rs:903:20
  29:     0x55940776c770 - rustc_const_eval::interpret::eval_context::InterpCx<M>::pop_stack_frame::h88260ac54a8018a0
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_const_eval/src/interpret/eval_context.rs:814:13
  30:     0x559407775bdb - rustc_const_eval::interpret::terminator::<impl rustc_const_eval::interpret::eval_context::InterpCx<M>>::eval_terminator::h662a1237dfdb504c
  31:     0x559407775bdb - rustc_const_eval::interpret::step::<impl rustc_const_eval::interpret::eval_context::InterpCx<M>>::terminator::hf0cbf184e1be5a2d
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_const_eval/src/interpret/step.rs:305:9
  32:     0x559407747db7 - rustc_const_eval::interpret::step::<impl rustc_const_eval::interpret::eval_context::InterpCx<M>>::step::h2611461c9f6f7522
                               at /rustc/6ec3993ef4a4eb72bc20477fe9a4d92acd53f2c6/compiler/rustc_const_eval/src/interpret/step.rs:71:9
  33:     0x559407747db7 - miri::eval::eval_entry::{{closure}}::h9cce92f32328283b
                               at /home/r/src/rust/miri.2/src/eval.rs:338:29
  34:     0x559407747db7 - miri::eval::eval_entry::hc2a5923a148b7ccd
                               at /home/r/src/rust/miri.2/src/eval.rs:332:38

Good commit: 1f34da9
ICE: 6ec3993

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-miriArea: The miri tool

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions