Skip to content

thread 'rustc' panicked at 'to_const_int doesn't work on scalar pairs' #100878

New issue

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

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

Already on GitHub? # to your account

Closed
paolobarbolini opened this issue Aug 22, 2022 · 4 comments · Fixed by #102181
Closed

thread 'rustc' panicked at 'to_const_int doesn't work on scalar pairs' #100878

paolobarbolini opened this issue Aug 22, 2022 · 4 comments · Fixed by #102181
Labels
A-const-eval Area: Constant evaluation, covers all const contexts (static, const fn, ...) C-bug Category: This is a bug. E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. 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

@paolobarbolini
Copy link
Contributor

paolobarbolini commented Aug 22, 2022

Code

pub fn get_u16_from_unaligned_manual(data: [u8; 1]) -> u8 {
    data[0] << 8
}

Meta

rustc --version --verbose:

rustc 1.65.0-nightly (c0941dfb5 2022-08-21)
binary: rustc
commit-hash: c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01
commit-date: 2022-08-21
host: x86_64-unknown-linux-gnu
release: 1.65.0-nightly
LLVM version: 15.0.0

Error output

thread 'rustc' panicked at 'to_const_int doesn't work on scalar pairs: InterpErrorInfo(InterpErrorInfoInner { kind: using uninitialized data, but this operation requires initialized memory, backtrace: None })', /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/compiler/rustc_const_eval/src/interpret/operand.rs:272:36
Backtrace

thread 'rustc' panicked at 'to_const_int doesn't work on scalar pairs: InterpErrorInfo(InterpErrorInfoInner { kind: using uninitialized data, but this operation requires initialized memory, backtrace: None })', /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/compiler/rustc_const_eval/src/interpret/operand.rs:272:36
stack backtrace:
   0:     0x7f93067ea820 - std::backtrace_rs::backtrace::libunwind::trace::h4cfc0f9f3e5a75d1
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   1:     0x7f93067ea820 - std::backtrace_rs::backtrace::trace_unsynchronized::h65db0c7f3c27bd40
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f93067ea820 - std::sys_common::backtrace::_print_fmt::h7089d9085447b800
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x7f93067ea820 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h476cb2d77b0da91f
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x7f93068456ae - core::fmt::write::h53819b6276006088
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/core/src/fmt/mod.rs:1202:17
   5:     0x7f93067db4a5 - std::io::Write::write_fmt::h5b1829515868707a
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/io/mod.rs:1672:15
   6:     0x7f93067ed4d3 - std::sys_common::backtrace::_print::h6cb157a41b3c080b
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x7f93067ed4d3 - std::sys_common::backtrace::print::h117b78b6f131ece6
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x7f93067ed4d3 - std::panicking::default_hook::{{closure}}::hf55bb9d90900cb92
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/panicking.rs:295:22
   9:     0x7f93067ed1bf - std::panicking::default_hook::h095947f029f67011
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/panicking.rs:314:9
  10:     0x7f930902ca54 - <rustc_driver[1396542de658d9ef]::DEFAULT_HOOK::{closure#0}::{closure#0} as core[bafc4c672d35f3dc]::ops::function::FnOnce<(&core[bafc4c672d35f3dc]::panic::panic_info::PanicInfo,)>>::call_once::{shim:vtable#0}
  11:     0x7f93067edd0d - std::panicking::rust_panic_with_hook::h3df526ea3ef21ddb
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/panicking.rs:702:17
  12:     0x7f93067edb67 - std::panicking::begin_panic_handler::{{closure}}::h802dd6d61f5dd58f
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/panicking.rs:588:13
  13:     0x7f93067ead2c - std::sys_common::backtrace::__rust_end_short_backtrace::h4bc0ea0de74aba3e
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/sys_common/backtrace.rs:138:18
  14:     0x7f93067ed882 - rust_begin_unwind
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/panicking.rs:584:5
  15:     0x7f93068421c3 - core::panicking::panic_fmt::h7c2821ba6a6b7ecd
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/core/src/panicking.rs:142:14
  16:     0x7f9306842523 - core::result::unwrap_failed::hb47e1c05aa7baaf4
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/core/src/result.rs:1814:5
  17:     0x7f9308581fa1 - <rustc_const_eval[786c7168b6e05b59]::interpret::operand::ImmTy>::to_const_int
  18:     0x7f93085813fa - <rustc_mir_transform[da432d88db9d5ab0]::const_prop_lint::ConstPropagator>::check_binary_op
  19:     0x7f930857e630 - <rustc_mir_transform[da432d88db9d5ab0]::const_prop_lint::ConstPropagator as rustc_middle[7247278619f001fe]::mir::visit::Visitor>::visit_body
  20:     0x7f93085723eb - <rustc_mir_transform[da432d88db9d5ab0]::const_prop_lint::ConstProp as rustc_mir_transform[da432d88db9d5ab0]::pass_manager::MirLint>::run_lint
  21:     0x7f93079defba - rustc_mir_transform[da432d88db9d5ab0]::pass_manager::run_passes
  22:     0x7f9308464f3d - rustc_mir_transform[da432d88db9d5ab0]::mir_drops_elaborated_and_const_checked
  23:     0x7f930841390b - rustc_query_system[2ce65edb6101d899]::query::plumbing::try_execute_query::<rustc_query_impl[f8b192862a939dac]::plumbing::QueryCtxt, rustc_query_system[2ce65edb6101d899]::query::caches::DefaultCache<rustc_middle[7247278619f001fe]::ty::WithOptConstParam<rustc_span[5318bedef2ca73b1]::def_id::LocalDefId>, &rustc_data_structures[1c5fb92d75ec3bdb]::steal::Steal<rustc_middle[7247278619f001fe]::mir::Body>>>
  24:     0x7f9308f2aa6a - <rustc_query_impl[f8b192862a939dac]::Queries as rustc_middle[7247278619f001fe]::ty::query::QueryEngine>::mir_drops_elaborated_and_const_checked
  25:     0x7f93079de137 - rustc_mir_transform[da432d88db9d5ab0]::optimized_mir
  26:     0x7f93082dd84e - rustc_query_system[2ce65edb6101d899]::query::plumbing::try_execute_query::<rustc_query_impl[f8b192862a939dac]::plumbing::QueryCtxt, rustc_query_system[2ce65edb6101d899]::query::caches::DefaultCache<rustc_span[5318bedef2ca73b1]::def_id::DefId, &rustc_middle[7247278619f001fe]::mir::Body>>
  27:     0x7f9308f2ad2c - <rustc_query_impl[f8b192862a939dac]::Queries as rustc_middle[7247278619f001fe]::ty::query::QueryEngine>::optimized_mir
  28:     0x7f9307c3f466 - <rustc_middle[7247278619f001fe]::ty::context::TyCtxt>::instance_mir
  29:     0x7f9307c33efc - rustc_monomorphize[38662e978b7edc7]::collector::collect_neighbours
  30:     0x7f9307c31a43 - rustc_monomorphize[38662e978b7edc7]::collector::collect_items_rec
  31:     0x7f9308a15743 - rustc_data_structures[1c5fb92d75ec3bdb]::sync::par_for_each_in::<alloc[cc53910b1e83d5d2]::vec::Vec<rustc_middle[7247278619f001fe]::mir::mono::MonoItem>, rustc_monomorphize[38662e978b7edc7]::collector::collect_crate_mono_items::{closure#1}::{closure#0}>
  32:     0x7f9308a155ac - <rustc_session[8008e2f707931a7]::session::Session>::time::<(), rustc_monomorphize[38662e978b7edc7]::collector::collect_crate_mono_items::{closure#1}>
  33:     0x7f9308a15219 - rustc_monomorphize[38662e978b7edc7]::collector::collect_crate_mono_items
  34:     0x7f9308a14084 - rustc_monomorphize[38662e978b7edc7]::partitioning::collect_and_partition_mono_items
  35:     0x7f9308d8af15 - rustc_query_system[2ce65edb6101d899]::query::plumbing::try_execute_query::<rustc_query_impl[f8b192862a939dac]::plumbing::QueryCtxt, rustc_query_system[2ce65edb6101d899]::query::caches::DefaultCache<(), (&std[e6e0e56adfd51cea]::collections::hash::set::HashSet<rustc_span[5318bedef2ca73b1]::def_id::DefId, core[bafc4c672d35f3dc]::hash::BuildHasherDefault<rustc_hash[6fc7e82ecd57dc4c]::FxHasher>>, &[rustc_middle[7247278619f001fe]::mir::mono::CodegenUnit])>>
  36:     0x7f9308d8ac15 - rustc_query_system[2ce65edb6101d899]::query::plumbing::get_query::<rustc_query_impl[f8b192862a939dac]::queries::collect_and_partition_mono_items, rustc_query_impl[f8b192862a939dac]::plumbing::QueryCtxt>
  37:     0x7f9308d8ab62 - <rustc_query_impl[f8b192862a939dac]::Queries as rustc_middle[7247278619f001fe]::ty::query::QueryEngine>::collect_and_partition_mono_items
  38:     0x7f9308dcd25b - rustc_codegen_ssa[553be98f56f802e0]::back::symbol_export::exported_symbols_provider_local
  39:     0x7f9308c6d5f1 - rustc_query_system[2ce65edb6101d899]::query::plumbing::try_execute_query::<rustc_query_impl[f8b192862a939dac]::plumbing::QueryCtxt, rustc_query_system[2ce65edb6101d899]::query::caches::DefaultCache<rustc_span[5318bedef2ca73b1]::def_id::CrateNum, &[(rustc_middle[7247278619f001fe]::middle::exported_symbols::ExportedSymbol, rustc_middle[7247278619f001fe]::middle::exported_symbols::SymbolExportInfo)]>>
  40:     0x7f9308c6d29a - rustc_query_system[2ce65edb6101d899]::query::plumbing::get_query::<rustc_query_impl[f8b192862a939dac]::queries::exported_symbols, rustc_query_impl[f8b192862a939dac]::plumbing::QueryCtxt>
  41:     0x7f93087f4de2 - <rustc_metadata[83b8adabf00e95da]::rmeta::encoder::EncodeContext>::encode_crate_root
  42:     0x7f930876d623 - rustc_metadata[83b8adabf00e95da]::rmeta::encoder::encode_metadata_impl
  43:     0x7f93087625fe - rustc_data_structures[1c5fb92d75ec3bdb]::sync::join::<rustc_metadata[83b8adabf00e95da]::rmeta::encoder::encode_metadata::{closure#0}, rustc_metadata[83b8adabf00e95da]::rmeta::encoder::encode_metadata::{closure#1}, (), ()>
  44:     0x7f93087624d9 - rustc_metadata[83b8adabf00e95da]::rmeta::encoder::encode_metadata
  45:     0x7f9308761686 - rustc_metadata[83b8adabf00e95da]::fs::encode_and_write_metadata
  46:     0x7f930874515c - <rustc_interface[d358214f54393a52]::passes::QueryContext>::enter::<<rustc_interface[d358214f54393a52]::queries::Queries>::ongoing_codegen::{closure#0}::{closure#0}, core[bafc4c672d35f3dc]::result::Result<alloc[cc53910b1e83d5d2]::boxed::Box<dyn core[bafc4c672d35f3dc]::any::Any>, rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>>
  47:     0x7f930873c783 - <rustc_interface[d358214f54393a52]::queries::Queries>::ongoing_codegen
  48:     0x7f930873b821 - <rustc_interface[d358214f54393a52]::interface::Compiler>::enter::<rustc_driver[1396542de658d9ef]::run_compiler::{closure#1}::{closure#2}, core[bafc4c672d35f3dc]::result::Result<core[bafc4c672d35f3dc]::option::Option<rustc_interface[d358214f54393a52]::queries::Linker>, rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>>
  49:     0x7f93087372ec - rustc_span[5318bedef2ca73b1]::with_source_map::<core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>, rustc_interface[d358214f54393a52]::interface::create_compiler_and_run<core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>, rustc_driver[1396542de658d9ef]::run_compiler::{closure#1}>::{closure#1}>
  50:     0x7f9308736cd2 - rustc_interface[d358214f54393a52]::interface::create_compiler_and_run::<core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>, rustc_driver[1396542de658d9ef]::run_compiler::{closure#1}>
  51:     0x7f9308735871 - <scoped_tls[cc0aafcf1c0b5a7f]::ScopedKey<rustc_span[5318bedef2ca73b1]::SessionGlobals>>::set::<rustc_interface[d358214f54393a52]::interface::run_compiler<core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>, rustc_driver[1396542de658d9ef]::run_compiler::{closure#1}>::{closure#0}, core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>>
  52:     0x7f930873555f - std[e6e0e56adfd51cea]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[d358214f54393a52]::util::run_in_thread_pool_with_globals<rustc_interface[d358214f54393a52]::interface::run_compiler<core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>, rustc_driver[1396542de658d9ef]::run_compiler::{closure#1}>::{closure#0}, core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>>::{closure#0}, core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>>
  53:     0x7f9308e4d2e9 - <<std[e6e0e56adfd51cea]::thread::Builder>::spawn_unchecked_<rustc_interface[d358214f54393a52]::util::run_in_thread_pool_with_globals<rustc_interface[d358214f54393a52]::interface::run_compiler<core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>, rustc_driver[1396542de658d9ef]::run_compiler::{closure#1}>::{closure#0}, core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>>::{closure#0}, core[bafc4c672d35f3dc]::result::Result<(), rustc_errors[68a9913b99f4d6e1]::ErrorGuaranteed>>::{closure#1} as core[bafc4c672d35f3dc]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  54:     0x7f93067f78b3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h153a5b9c09be8d12
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/alloc/src/boxed.rs:1935:9
  55:     0x7f93067f78b3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h50171cd485c6ebe5
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/alloc/src/boxed.rs:1935:9
  56:     0x7f93067f78b3 - std::sys::unix::thread::Thread::new::thread_start::h1d58b0ea990239e8
                               at /rustc/c0941dfb5a7d07ef2d70cc54d319669d9d6f6c01/library/std/src/sys/unix/thread.rs:108:17
  57:     0x7f93066cf609 - start_thread
  58:     0x7f93065f2163 - clone
  59:                0x0 - <unknown>

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.65.0-nightly (c0941dfb5 2022-08-21) running on x86_64-unknown-linux-gnu

note: compiler flags: -C debuginfo=1 -C llvm-args=--x86-asm-syntax=intel --crate-type rlib

query stack during panic:
#0 [mir_drops_elaborated_and_const_checked] elaborating drops for `get_u16_from_unaligned_manual`
#1 [optimized_mir] optimizing MIR for `get_u16_from_unaligned_manual`
#2 [collect_and_partition_mono_items] collect_and_partition_mono_items
#3 [exported_symbols] exported_symbols
end of query stack


Bisection

searched nightlies: from nightly-2022-02-19 to nightly-2022-04-04
regressed nightly: nightly-2022-03-25
searched commit range: 9f4dc0b...63b8f01
regressed commit: 63b8f01

bisected with cargo-bisect-rustc v0.6.4

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

cargo bisect-rustc --start 1.60.0 --end 1.61.0 --prompt -- build 

Originally reported at https://t.me/rustlang_it/142123

@paolobarbolini paolobarbolini 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 Aug 22, 2022
@chenyukang
Copy link
Member

@rustbot claim

@matthiaskrgr
Copy link
Member

This seems to be fixed in latest nightly?

error: this arithmetic operation will overflow
 --> fixed/100878.rs:3:5
  |
3 |     data[0] << 8
  |     ^^^^^^^^^^^^ attempt to shift left by `8_i32`, which would overflow
  |
  = note: `#[deny(arithmetic_overflow)]` on by default

error: aborting due to previous error

@matthiaskrgr matthiaskrgr added the E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. label Aug 28, 2022
@chenyukang
Copy link
Member

Yes, it's fixed in nightly.

@chenyukang chenyukang removed their assignment Sep 18, 2022
@inquisitivecrystal
Copy link
Contributor

inquisitivecrystal commented Sep 23, 2022

As a note, the ICE was fixed by #100043 (confirmed by cargo-bisect-rustc).

@inquisitivecrystal inquisitivecrystal added the A-const-eval Area: Constant evaluation, covers all const contexts (static, const fn, ...) label Sep 23, 2022
inquisitivecrystal added a commit to inquisitivecrystal/rust that referenced this issue Sep 23, 2022
fee1-dead added a commit to fee1-dead-contrib/rust that referenced this issue Sep 26, 2022
…st, r=Mark-Simulacrum

Add regression test

This adds a regression test for issue rust-lang#100878.

Closes rust-lang#100878.
@bors bors closed this as completed in 0857dde Sep 26, 2022
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
A-const-eval Area: Constant evaluation, covers all const contexts (static, const fn, ...) C-bug Category: This is a bug. E-needs-test Call for participation: An issue has been fixed and does not reproduce, but no test has been added. 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.

4 participants