ICE with packed union: "alignment mismatch between ABI and layout" · Issue #104802 · rust-lang/rust (original) (raw)
Found with a modified fuzz-rustc
Code
#[repr(packed(1))] union U { x: u32, }
const B: U = U { x: 0 };
fn main() {}
Error output with debug assertions enabled
alignment mismatch between ABI and layout in TyAndLayout { ... }, compiler/rustc_ty_utils/src/layout_sanity_check.rs:77
Full output including backtrace
thread 'rustc' panicked at 'assertion failed: `(left == right)`
left: `Align(1 bytes)`,
right: `Align(4 bytes)`: alignment mismatch between ABI and layout in TyAndLayout {
ty: U,
layout: Layout {
size: Size(4 bytes),
align: AbiAndPrefAlign {
abi: Align(1 bytes),
pref: Align(1 bytes),
},
abi: Scalar(
Union {
value: Int(
I32,
false,
),
},
),
fields: Union(
1,
),
largest_niche: None,
variants: Single {
index: 0,
},
},
}', compiler/rustc_ty_utils/src/layout_sanity_check.rs:77:21
stack backtrace:
0: 0x10f448f21 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hcf5aac4d53eab431
1: 0x10f506818 - core::fmt::write::hed31846cddb4e13c
2: 0x10f4abec8 - std::io::Write::write_fmt::h01887004f97cedc7
3: 0x10f448d12 - std::sys_common::backtrace::print::h2141c6543b5865e5
4: 0x10f4ace45 - std::panicking::default_hook::{{closure}}::hfe93a58a10a72158
5: 0x10f4acc2e - std::panicking::default_hook::hafca10424d622dfb
6: 0x123176708 - rustc_driver[bfe6130b33d7dd9c]::DEFAULT_HOOK::{closure#0}::{closure#0}
7: 0x10f4ad636 - std::panicking::rust_panic_with_hook::hafe3bb82e805c420
8: 0x10f49a173 - std::panicking::begin_panic_handler::{{closure}}::h2797e20f8763cc3a
9: 0x10f49a0a8 - std::sys_common::backtrace::__rust_end_short_backtrace::hde7c42687ab67a11
10: 0x10f4acf18 - _rust_begin_unwind
11: 0x10f52b443 - core::panicking::panic_fmt::h7ec57a9a63e6db71
12: 0x10f51a125 - core::panicking::assert_failed_inner::hb961e0acdeb20af8
13: 0x12860ee6e - core[95bb6d661b676f4d]::panicking::assert_failed::<rustc_target[b76a068d308f1d4a]::abi::Align, rustc_target[b76a068d308f1d4a]::abi::Align>
14: 0x12594e82a - rustc_ty_utils[eaca7fb7b7a0869]::layout_sanity_check::sanity_check_layout
15: 0x1259669c0 - rustc_ty_utils[eaca7fb7b7a0869]::layout::layout_of
16: 0x127303ac1 - rustc_query_system[2c5b580ea3a12206]::query::plumbing::get_query::<rustc_query_impl[e5b327371ad57e64]::queries::layout_of, rustc_query_impl[e5b327371ad57e64]::plumbing::QueryCtxt>
17: 0x126e9bcc1 - <rustc_query_impl[e5b327371ad57e64]::Queries as rustc_middle[42f89e9b8d5efbfa]::ty::query::QueryEngine>::layout_of
18: 0x126b79f9e - rustc_const_eval[d19bca16da1661a0]::const_eval::eval_queries::eval_to_allocation_raw_provider
19: 0x1272d223a - rustc_query_system[2c5b580ea3a12206]::query::plumbing::get_query::<rustc_query_impl[e5b327371ad57e64]::queries::eval_to_allocation_raw, rustc_query_impl[e5b327371ad57e64]::plumbing::QueryCtxt>
20: 0x126e84f6c - <rustc_query_impl[e5b327371ad57e64]::Queries as rustc_middle[42f89e9b8d5efbfa]::ty::query::QueryEngine>::eval_to_allocation_raw
21: 0x126b77d1f - rustc_const_eval[d19bca16da1661a0]::const_eval::eval_queries::eval_to_const_value_raw_provider
22: 0x1272da487 - rustc_query_system[2c5b580ea3a12206]::query::plumbing::get_query::<rustc_query_impl[e5b327371ad57e64]::queries::eval_to_const_value_raw, rustc_query_impl[e5b327371ad57e64]::plumbing::QueryCtxt>
23: 0x126e8568c - <rustc_query_impl[e5b327371ad57e64]::Queries as rustc_middle[42f89e9b8d5efbfa]::ty::query::QueryEngine>::eval_to_const_value_raw
24: 0x126b778b7 - rustc_const_eval[d19bca16da1661a0]::const_eval::eval_queries::eval_to_const_value_raw_provider
25: 0x1272da487 - rustc_query_system[2c5b580ea3a12206]::query::plumbing::get_query::<rustc_query_impl[e5b327371ad57e64]::queries::eval_to_const_value_raw, rustc_query_impl[e5b327371ad57e64]::plumbing::QueryCtxt>
26: 0x126e8568c - <rustc_query_impl[e5b327371ad57e64]::Queries as rustc_middle[42f89e9b8d5efbfa]::ty::query::QueryEngine>::eval_to_const_value_raw
27: 0x1281462c9 - <rustc_middle[42f89e9b8d5efbfa]::ty::query::TyCtxtEnsure>::const_eval_poly
28: 0x127ac10f3 - <rustc_lint[8943d723f788f8fc]::BuiltinCombinedModuleLateLintPass as rustc_lint[8943d723f788f8fc]::passes::LateLintPass>::check_item
29: 0x127ad9f0c - <rustc_lint[8943d723f788f8fc]::late::LateContextAndPass<rustc_lint[8943d723f788f8fc]::BuiltinCombinedModuleLateLintPass> as rustc_hir[112137b1c6e29e52]::intravisit::Visitor>::visit_nested_item
30: 0x127b0ffbc - rustc_hir[112137b1c6e29e52]::intravisit::walk_mod::<rustc_lint[8943d723f788f8fc]::late::LateContextAndPass<rustc_lint[8943d723f788f8fc]::BuiltinCombinedModuleLateLintPass>>
31: 0x127adf103 - rustc_lint[8943d723f788f8fc]::late::late_lint_mod::<rustc_lint[8943d723f788f8fc]::BuiltinCombinedModuleLateLintPass>
32: 0x127abb610 - rustc_lint[8943d723f788f8fc]::lint_mod
33: 0x1271cff1e - rustc_query_system[2c5b580ea3a12206]::query::plumbing::try_execute_query::<rustc_query_impl[e5b327371ad57e64]::plumbing::QueryCtxt, rustc_query_system[2c5b580ea3a12206]::query::caches::DefaultCache<rustc_span[7d7aa17bf13bea16]::def_id::LocalDefId, ()>>
34: 0x127302a83 - rustc_query_system[2c5b580ea3a12206]::query::plumbing::get_query::<rustc_query_impl[e5b327371ad57e64]::queries::lint_mod, rustc_query_impl[e5b327371ad57e64]::plumbing::QueryCtxt>
35: 0x126e7932f - <rustc_query_impl[e5b327371ad57e64]::Queries as rustc_middle[42f89e9b8d5efbfa]::ty::query::QueryEngine>::lint_mod
36: 0x1232a4cbd - <core[95bb6d661b676f4d]::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures[6f5f4852afd2a743]::sync::par_for_each_in<&[rustc_hir[112137b1c6e29e52]::hir_id::OwnerId], <rustc_middle[42f89e9b8d5efbfa]::hir::map::Map>::par_for_each_module<rustc_lint[8943d723f788f8fc]::late::check_crate<rustc_lint[8943d723f788f8fc]::BuiltinCombinedLateLintPass, rustc_interface[fb7297f02cc960f4]::passes::analysis::{closure#5}::{closure#1}::{closure#2}::{closure#0}::{closure#0}>::{closure#1}::{closure#0}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}> as core[95bb6d661b676f4d]::ops::function::FnOnce<()>>::call_once
37: 0x123254040 - std[e4564114326e8c6]::panicking::try::<(), core[95bb6d661b676f4d]::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures[6f5f4852afd2a743]::sync::par_for_each_in<&[rustc_hir[112137b1c6e29e52]::hir_id::OwnerId], <rustc_middle[42f89e9b8d5efbfa]::hir::map::Map>::par_for_each_module<rustc_lint[8943d723f788f8fc]::late::check_crate<rustc_lint[8943d723f788f8fc]::BuiltinCombinedLateLintPass, rustc_interface[fb7297f02cc960f4]::passes::analysis::{closure#5}::{closure#1}::{closure#2}::{closure#0}::{closure#0}>::{closure#1}::{closure#0}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}>>
38: 0x123239183 - rustc_data_structures[6f5f4852afd2a743]::sync::par_for_each_in::<&[rustc_hir[112137b1c6e29e52]::hir_id::OwnerId], <rustc_middle[42f89e9b8d5efbfa]::hir::map::Map>::par_for_each_module<rustc_lint[8943d723f788f8fc]::late::check_crate<rustc_lint[8943d723f788f8fc]::BuiltinCombinedLateLintPass, rustc_interface[fb7297f02cc960f4]::passes::analysis::{closure#5}::{closure#1}::{closure#2}::{closure#0}::{closure#0}>::{closure#1}::{closure#0}::{closure#0}>::{closure#0}>
39: 0x1232453ea - <rustc_session[6f273c4587eb1b50]::session::Session>::time::<(), rustc_lint[8943d723f788f8fc]::late::check_crate<rustc_lint[8943d723f788f8fc]::BuiltinCombinedLateLintPass, rustc_interface[fb7297f02cc960f4]::passes::analysis::{closure#5}::{closure#1}::{closure#2}::{closure#0}::{closure#0}>::{closure#1}::{closure#0}>
40: 0x1232454cf - <rustc_session[6f273c4587eb1b50]::session::Session>::time::<(), rustc_interface[fb7297f02cc960f4]::passes::analysis::{closure#5}::{closure#1}::{closure#2}::{closure#0}>
41: 0x12325433c - std[e4564114326e8c6]::panicking::try::<(), core[95bb6d661b676f4d]::panic::unwind_safe::AssertUnwindSafe<rustc_interface[fb7297f02cc960f4]::passes::analysis::{closure#5}::{closure#1}::{closure#2}>>
42: 0x1232a5b50 - <core[95bb6d661b676f4d]::panic::unwind_safe::AssertUnwindSafe<rustc_interface[fb7297f02cc960f4]::passes::analysis::{closure#5}::{closure#1}> as core[95bb6d661b676f4d]::ops::function::FnOnce<()>>::call_once
43: 0x1232545f0 - std[e4564114326e8c6]::panicking::try::<(), core[95bb6d661b676f4d]::panic::unwind_safe::AssertUnwindSafe<rustc_interface[fb7297f02cc960f4]::passes::analysis::{closure#5}::{closure#1}>>
44: 0x123246d79 - <rustc_session[6f273c4587eb1b50]::session::Session>::time::<(), rustc_interface[fb7297f02cc960f4]::passes::analysis::{closure#5}>
45: 0x1232a131c - rustc_interface[fb7297f02cc960f4]::passes::analysis
46: 0x12721595f - rustc_query_system[2c5b580ea3a12206]::query::plumbing::try_execute_query::<rustc_query_impl[e5b327371ad57e64]::plumbing::QueryCtxt, rustc_query_system[2c5b580ea3a12206]::query::caches::DefaultCache<(), core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>>>
47: 0x127302589 - rustc_query_system[2c5b580ea3a12206]::query::plumbing::get_query::<rustc_query_impl[e5b327371ad57e64]::queries::analysis, rustc_query_impl[e5b327371ad57e64]::plumbing::QueryCtxt>
48: 0x126e5b3b7 - <rustc_query_impl[e5b327371ad57e64]::Queries as rustc_middle[42f89e9b8d5efbfa]::ty::query::QueryEngine>::analysis
49: 0x12316a1db - <rustc_interface[fb7297f02cc960f4]::passes::QueryContext>::enter::<rustc_driver[bfe6130b33d7dd9c]::run_compiler::{closure#1}::{closure#2}::{closure#3}, core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>>
50: 0x123164688 - <rustc_interface[fb7297f02cc960f4]::interface::Compiler>::enter::<rustc_driver[bfe6130b33d7dd9c]::run_compiler::{closure#1}::{closure#2}, core[95bb6d661b676f4d]::result::Result<core[95bb6d661b676f4d]::option::Option<rustc_interface[fb7297f02cc960f4]::queries::Linker>, rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>>
51: 0x1231622bb - rustc_span[7d7aa17bf13bea16]::with_source_map::<core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>, rustc_interface[fb7297f02cc960f4]::interface::run_compiler<core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>, rustc_driver[bfe6130b33d7dd9c]::run_compiler::{closure#1}>::{closure#0}::{closure#1}>
52: 0x123138acc - <scoped_tls[c451c38e2ed76225]::ScopedKey<rustc_span[7d7aa17bf13bea16]::SessionGlobals>>:📐:<rustc_interface[fb7297f02cc960f4]::interface::run_compiler<core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>, rustc_driver[bfe6130b33d7dd9c]::run_compiler::{closure#1}>::{closure#0}, core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>>
53: 0x12312f240 - std[e4564114326e8c6]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[fb7297f02cc960f4]::util::run_in_thread_pool_with_globals<rustc_interface[fb7297f02cc960f4]::interface::run_compiler<core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>, rustc_driver[bfe6130b33d7dd9c]::run_compiler::{closure#1}>::{closure#0}, core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>>
54: 0x123161d90 - std[e4564114326e8c6]::panicking::try::<core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>, core[95bb6d661b676f4d]::panic::unwind_safe::AssertUnwindSafe<<std[e4564114326e8c6]::thread::Builder>::spawn_unchecked_<rustc_interface[fb7297f02cc960f4]::util::run_in_thread_pool_with_globals<rustc_interface[fb7297f02cc960f4]::interface::run_compiler<core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>, rustc_driver[bfe6130b33d7dd9c]::run_compiler::{closure#1}>::{closure#0}, core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>>::{closure#1}::{closure#0}>>
55: 0x12315d141 - <<std[e4564114326e8c6]::thread::Builder>::spawn_unchecked_<rustc_interface[fb7297f02cc960f4]::util::run_in_thread_pool_with_globals<rustc_interface[fb7297f02cc960f4]::interface::run_compiler<core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>, rustc_driver[bfe6130b33d7dd9c]::run_compiler::{closure#1}>::{closure#0}, core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[95bb6d661b676f4d]::result::Result<(), rustc_errors[48ad5d4ad3523473]::ErrorGuaranteed>>::{closure#1} as core[95bb6d661b676f4d]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
56: 0x10f462b5b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hd10a5c38d6c64916
57: 0x10f44d19f - std::sys::unix::thread::Thread:🆕:thread_start::he793914283faf21a
58: 0x7ff816f934e1 - __pthread_start
error: internal compiler error: unexpected panic
note: 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: rustc 1.67.0-dev running on x86_64-apple-darwin
query stack during panic:
#0 [layout_of] computing layout of `U`
#1 [eval_to_allocation_raw] const-evaluating + checking `B`
#2 [eval_to_const_value_raw] simplifying constant for the type system `B`
#3 [eval_to_const_value_raw] simplifying constant for the type system `B`
#4 [lint_mod] linting top-level module
#5 [analysis] running analysis passes on this crate
end of query stack
warning: 2 warnings emitted
Version
Built stage1 from 604d521 on x86_64-apple-darwin
config.toml
Includes one of the default files in src/bootstrap/defaults
profile = "compiler" changelog-seen = 2
[llvm] download-ci-llvm = true # Download a pre-built LLVM? assertions = true # LLVM assertions on?
[rust] incremental = true # Build rustc with incremental compilation? debug-assertions = true overflow-checks = true
CC #99836 participants: @cuviper, @RalfJung @eddyb
@rustbot label +A-layout