Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE due to invalid unsizing &B -> [u8] #101596

Closed
saethlin opened this issue Sep 8, 2022 · 4 comments · Fixed by #108790
Closed

ICE due to invalid unsizing &B -> [u8] #101596

saethlin opened this issue Sep 8, 2022 · 4 comments · Fixed by #108790
Labels
A-const-prop Area: Constant propagation C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@saethlin
Copy link
Member

saethlin commented Sep 8, 2022

Code

https://crates.io/crates/mwatch-sdk-core version 0.1.0
The actual bug appears to be in stm32l432xx-hal but I can't seem to build that on its own. It just needs certain combinations of features.

Meta

rustc --version --verbose:

cargo 1.65.0-nightly (646e9a0b9 2022-09-02)
release: 1.65.0-nightly
commit-hash: 646e9a0b9ea8354cc409d05f10e8dc752c5de78e
commit-date: 2022-09-02
host: x86_64-unknown-linux-gnu
libgit2: 1.5.0 (sys:0.15.0 vendored)
libcurl: 7.83.1-DEV (sys:0.4.55+curl-7.83.1 vendored ssl:OpenSSL/1.1.1q)
os: Arch Linux Rolling Release [64-bit]

Error output

   Compiling stm32l432xx-hal v0.2.7
error: internal compiler error: /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/compiler/rustc_const_eval/src/interpret/cast.rs:324:17: invalid unsizing &B -> [u8]
   --> /home/ben/.cargo/registry/src/github.com-1ecc6299db9ec823/stm32l432xx-hal-0.2.7/src/serial.rs:243:45
    |
243 |                           let buffer: &[u8] = &buffer[0];
    |                                               ^^^^^^^^^^
...
315 | / hal! {
316 | |     USART1: (usart1, APB2, usart1en, usart1rst, pclk2, tx: (c4s, dma1::C4), rx: (c5s, dma1::C5)),
317 | |     USART2: (usart2, APB1R1, usart2en, usart2rst, pclk1, tx: (c7s, dma1::C7), rx: (c6s, dma1::C6)),
318 | | }
    | |_- in this macro invocation
    |
    = note: this error: internal compiler error originates in the macro `hal` (in Nightly builds, run with -Z macro-backtrace for more info)

thread 'rustc' panicked at 'Box<dyn Any>', /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/compiler/rustc_errors/src/lib.rs:1398:9
Backtrace

stack backtrace:
   0:     0x7fbdd3390210 - std::backtrace_rs::backtrace::libunwind::trace::hddd5e6b1b5e0cf84
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   1:     0x7fbdd3390210 - std::backtrace_rs::backtrace::trace_unsynchronized::h1e30619f2b1dfc7e
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7fbdd3390210 - std::sys_common::backtrace::_print_fmt::h1c57dbed6b9e39aa
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x7fbdd3390210 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h81e97128ef1d32f9
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x7fbdd33eb02e - core::fmt::write::h05bb200d128bd301
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/core/src/fmt/mod.rs:1202:17
   5:     0x7fbdd3380cd5 - std::io::Write::write_fmt::hc8d8769ac02ad98c
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/io/mod.rs:1679:15
   6:     0x7fbdd3392e63 - std::sys_common::backtrace::_print::h7f10095fdc95f046
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x7fbdd3392e63 - std::sys_common::backtrace::print::hff7966088cd7ef66
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x7fbdd3392e63 - std::panicking::default_hook::{{closure}}::h5cfa206e6d48c088
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/panicking.rs:295:22
   9:     0x7fbdd3392b4f - std::panicking::default_hook::h75a6d8252dff2ced
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/panicking.rs:314:9
  10:     0x7fbdd1dec9d1 - rustc_driver[4dbe72ff95e91a37]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0x7fbdd339369d - std::panicking::rust_panic_with_hook::h119231c709fbe31a
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/panicking.rs:702:17
  12:     0x7fbdd2051101 - std[229541c32b9def22]::panicking::begin_panic::<rustc_errors[5d6420c66e5c3514]::ExplicitBug>::{closure#0}
  13:     0x7fbdd204c266 - std[229541c32b9def22]::sys_common::backtrace::__rust_end_short_backtrace::<std[229541c32b9def22]::panicking::begin_panic<rustc_errors[5d6420c66e5c3514]::ExplicitBug>::{closure#0}, !>
  14:     0x7fbdd204c1e6 - std[229541c32b9def22]::panicking::begin_panic::<rustc_errors[5d6420c66e5c3514]::ExplicitBug>
  15:     0x7fbdd2096426 - std[229541c32b9def22]::panic::panic_any::<rustc_errors[5d6420c66e5c3514]::ExplicitBug>
  16:     0x7fbdd2093351 - <rustc_errors[5d6420c66e5c3514]::HandlerInner>::span_bug::<rustc_span[ddb8e6977b977c82]::span_encoding::Span, &alloc[aa703239628d5152]::string::String>
  17:     0x7fbdd20930c0 - <rustc_errors[5d6420c66e5c3514]::Handler>::span_bug::<rustc_span[ddb8e6977b977c82]::span_encoding::Span, &alloc[aa703239628d5152]::string::String>
  18:     0x7fbdd20c03b8 - rustc_middle[758666f836ad6aa6]::ty::context::tls::with_context_opt::<rustc_middle[758666f836ad6aa6]::ty::context::tls::with_opt<rustc_middle[758666f836ad6aa6]::util::bug::opt_span_bug_fmt<rustc_span[ddb8e6977b977c82]::span_encoding::Span>::{closure#0}, ()>::{closure#0}, ()>
  19:     0x7fbdd20c0186 - rustc_middle[758666f836ad6aa6]::util::bug::opt_span_bug_fmt::<rustc_span[ddb8e6977b977c82]::span_encoding::Span>
  20:     0x7fbdd20c0144 - rustc_middle[758666f836ad6aa6]::util::bug::span_bug_fmt::<rustc_span[ddb8e6977b977c82]::span_encoding::Span>
  21:     0x7fbdd14299c4 - <rustc_const_eval[28d056de1464251a]::interpret::eval_context::InterpCx<rustc_mir_transform[c5d627961322feb1]::const_prop::ConstPropMachine>>::unsize_into_ptr
  22:     0x7fbdd140fc24 - <rustc_const_eval[28d056de1464251a]::interpret::eval_context::InterpCx<rustc_mir_transform[c5d627961322feb1]::const_prop::ConstPropMachine>>::eval_rvalue_into_place
  23:     0x7fbdd1459947 - <rustc_mir_transform[c5d627961322feb1]::const_prop_lint::ConstPropagator as rustc_middle[758666f836ad6aa6]::mir::visit::Visitor>::visit_body
  24:     0x7fbdd144e71b - <rustc_mir_transform[c5d627961322feb1]::const_prop_lint::ConstProp as rustc_mir_transform[c5d627961322feb1]::pass_manager::MirLint>::run_lint
  25:     0x7fbdd088ab0a - rustc_mir_transform[c5d627961322feb1]::pass_manager::run_passes_no_validate
  26:     0x7fbdd0883d94 - rustc_mir_transform[c5d627961322feb1]::run_analysis_to_runtime_passes
  27:     0x7fbdd0882da1 - rustc_mir_transform[c5d627961322feb1]::mir_drops_elaborated_and_const_checked
  28:     0x7fbdd1442dea - rustc_query_system[8ebe6a0948a4385f]::query::plumbing::try_execute_query::<rustc_query_impl[6916c8c26a692c23]::plumbing::QueryCtxt, rustc_query_system[8ebe6a0948a4385f]::query::caches::DefaultCache<rustc_middle[758666f836ad6aa6]::ty::WithOptConstParam<rustc_span[ddb8e6977b977c82]::def_id::LocalDefId>, &rustc_data_structures[8a62cfd2b2cae70a]::steal::Steal<rustc_middle[758666f836ad6aa6]::mir::Body>>>
  29:     0x7fbdd1d2a94c - <rustc_query_impl[6916c8c26a692c23]::Queries as rustc_middle[758666f836ad6aa6]::ty::query::QueryEngine>::mir_drops_elaborated_and_const_checked
  30:     0x7fbdd08e975b - rustc_mir_transform[c5d627961322feb1]::optimized_mir
  31:     0x7fbdd0e2ce89 - rustc_query_system[8ebe6a0948a4385f]::query::plumbing::try_execute_query::<rustc_query_impl[6916c8c26a692c23]::plumbing::QueryCtxt, rustc_query_system[8ebe6a0948a4385f]::query::caches::DefaultCache<rustc_span[ddb8e6977b977c82]::def_id::DefId, &rustc_middle[758666f836ad6aa6]::mir::Body>>
  32:     0x7fbdd1d2ad71 - <rustc_query_impl[6916c8c26a692c23]::Queries as rustc_middle[758666f836ad6aa6]::ty::query::QueryEngine>::optimized_mir
  33:     0x7fbdd10b0e31 - <rustc_metadata[2c12d96414b174f7]::rmeta::encoder::EncodeContext>::encode_crate_root
  34:     0x7fbdd0c1a9d2 - rustc_metadata[2c12d96414b174f7]::rmeta::encoder::encode_metadata_impl
  35:     0x7fbdd0bf818e - rustc_data_structures[8a62cfd2b2cae70a]::sync::join::<rustc_metadata[2c12d96414b174f7]::rmeta::encoder::encode_metadata::{closure#0}, rustc_metadata[2c12d96414b174f7]::rmeta::encoder::encode_metadata::{closure#1}, (), ()>
  36:     0x7fbdd0bf8079 - rustc_metadata[2c12d96414b174f7]::rmeta::encoder::encode_metadata
  37:     0x7fbdd0bf718d - rustc_metadata[2c12d96414b174f7]::fs::encode_and_write_metadata
  38:     0x7fbdd0bee862 - <rustc_interface[14c34b33c6f785f8]::passes::QueryContext>::enter::<<rustc_interface[14c34b33c6f785f8]::queries::Queries>::ongoing_codegen::{closure#0}::{closure#0}, core[178bf54443111ecd]::result::Result<alloc[aa703239628d5152]::boxed::Box<dyn core[178bf54443111ecd]::any::Any>, rustc_errors[5d6420c66e5c3514]::ErrorGuaranteed>>
  39:     0x7fbdd0baef03 - <rustc_interface[14c34b33c6f785f8]::queries::Queries>::ongoing_codegen
  40:     0x7fbdd0bad33d - rustc_interface[14c34b33c6f785f8]::interface::create_compiler_and_run::<core[178bf54443111ecd]::result::Result<(), rustc_errors[5d6420c66e5c3514]::ErrorGuaranteed>, rustc_driver[4dbe72ff95e91a37]::run_compiler::{closure#1}>
  41:     0x7fbdd0babc51 - <scoped_tls[c74ddbab68ad7cb1]::ScopedKey<rustc_span[ddb8e6977b977c82]::SessionGlobals>>::set::<rustc_interface[14c34b33c6f785f8]::interface::run_compiler<core[178bf54443111ecd]::result::Result<(), rustc_errors[5d6420c66e5c3514]::ErrorGuaranteed>, rustc_driver[4dbe72ff95e91a37]::run_compiler::{closure#1}>::{closure#0}, core[178bf54443111ecd]::result::Result<(), rustc_errors[5d6420c66e5c3514]::ErrorGuaranteed>>
  42:     0x7fbdd0bab93f - std[229541c32b9def22]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[14c34b33c6f785f8]::util::run_in_thread_pool_with_globals<rustc_interface[14c34b33c6f785f8]::interface::run_compiler<core[178bf54443111ecd]::result::Result<(), rustc_errors[5d6420c66e5c3514]::ErrorGuaranteed>, rustc_driver[4dbe72ff95e91a37]::run_compiler::{closure#1}>::{closure#0}, core[178bf54443111ecd]::result::Result<(), rustc_errors[5d6420c66e5c3514]::ErrorGuaranteed>>::{closure#0}, core[178bf54443111ecd]::result::Result<(), rustc_errors[5d6420c66e5c3514]::ErrorGuaranteed>>
  43:     0x7fbdd1c613b9 - <<std[229541c32b9def22]::thread::Builder>::spawn_unchecked_<rustc_interface[14c34b33c6f785f8]::util::run_in_thread_pool_with_globals<rustc_interface[14c34b33c6f785f8]::interface::run_compiler<core[178bf54443111ecd]::result::Result<(), rustc_errors[5d6420c66e5c3514]::ErrorGuaranteed>, rustc_driver[4dbe72ff95e91a37]::run_compiler::{closure#1}>::{closure#0}, core[178bf54443111ecd]::result::Result<(), rustc_errors[5d6420c66e5c3514]::ErrorGuaranteed>>::{closure#0}, core[178bf54443111ecd]::result::Result<(), rustc_errors[5d6420c66e5c3514]::ErrorGuaranteed>>::{closure#1} as core[178bf54443111ecd]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  44:     0x7fbdd339d4f3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h36c6bf5e47e96783
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/alloc/src/boxed.rs:1940:9
  45:     0x7fbdd339d4f3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h145bc1ef077d35d5
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/alloc/src/boxed.rs:1940:9
  46:     0x7fbdd339d4f3 - std::sys::unix::thread::Thread::new::thread_start::h9922d7fa7807ef1d
                               at /rustc/c2804e6ec2c29a5c7368600ea173b890e2655c3d/library/std/src/sys/unix/thread.rs:108:17
  47:     0x7fbdcf37a78d - <unknown>
  48:     0x7fbdcf3fb8e4 - clone
  49:                0x0 - <unknown>

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.65.0-nightly (c2804e6ec 2022-09-07) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type lib -C embed-bitcode=no -C debuginfo=2 -C linker=clang -C link-arg=-fuse-ld=mold

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [mir_drops_elaborated_and_const_checked] elaborating drops for `serial::<impl at /home/ben/.cargo/registry/src/github.com-1ecc6299db9ec823/stm32l432xx-hal-0.2.7/src/serial.rs:233:13: 233:29>::circ_read`
#1 [optimized_mir] optimizing MIR for `serial::<impl at /home/ben/.cargo/registry/src/github.com-1ecc6299db9ec823/stm32l432xx-hal-0.2.7/src/serial.rs:233:13: 233:29>::circ_read`
end of query stack

@saethlin saethlin added C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Sep 8, 2022
@compiler-errors
Copy link
Member

searched nightlies: from nightly-2022-06-01 to nightly-2022-09-08
regressed nightly: nightly-2022-08-30
searched commit range: ce36e88...bc4b39c
regressed commit: bc4b39c

bisected with cargo-bisect-rustc v0.6.3

Host triple: x86_64-unknown-linux-gnu
Reproduce with:

cargo bisect-rustc --start 2022-06-01 --end 2022-09-08 

@compiler-errors
Copy link
Member

No idea what change from #101152 could have caused this -- maybe #100239?

@saethlin
Copy link
Member Author

saethlin commented Sep 9, 2022

Looks like it. I did a git revert 3ea5456366170f2b39bd77070c00c632537ec591 -m 1 and now I have a rustc that doesn't ICE on the above crate.

@compiler-errors
Copy link
Member

maybe useful to create a const-prop label for issues like this, given the bisection.

@matthiaskrgr matthiaskrgr added the A-const-prop Area: Constant propagation label Mar 5, 2023
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue Mar 6, 2023
Do not ICE when interpreting a cast between non-monomorphic types

Fixes rust-lang#101596
@bors bors closed this as completed in 3ae047b Mar 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-const-prop Area: Constant propagation C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants