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

problem compiling this code #105213

Closed
neyb opened this issue Dec 3, 2022 · 3 comments
Closed

problem compiling this code #105213

neyb opened this issue Dec 3, 2022 · 3 comments
Labels
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

@neyb
Copy link

neyb commented Dec 3, 2022

Code

trait MyIterTools {
    type Element;

    fn split<Splitter>(self, splitter: Splitter) -> SplitIterator<Self::Element, Self, Splitter>
    where
        Splitter: Fn(&Self::Item) -> bool,
        Self: Iterator<Item = Self::Element> + Sized;
}

impl<T> MyIterTools for dyn Iterator<Item = T> {
    type Element = T;

    fn split<Splitter>(self, splitter: Splitter) -> SplitIterator<Self::Element, Self, Splitter>
    where
        Splitter: Fn(&T) -> bool,
        Self: Iterator + Sized,
    {
        SplitIterator::new(self, splitter)
    }
}
pub struct SplitIterator<T, It, Splitter>
where
    It: Iterator<Item = T>,
    Splitter: Fn(&T) -> bool,
{
    inner: It,
    splitter: Splitter,
}

impl<T, It, Splitter> SplitIterator<T, It, Splitter>
where
    It: Iterator<Item = T>,
    Splitter: Fn(&T) -> bool,
{
    pub fn new(inner: It, splitter: Splitter) -> Self
    where
        It: Iterator<Item = T> + Sized,
        Splitter: Fn(&T) -> bool + Sized,
    {
        Self { inner, splitter }
    }
}

impl<T, It, Splitter> Iterator for SplitIterator<T, It, Splitter>
where
    It: Iterator<Item = T>,
    Splitter: Fn(&T) -> bool,
{
    type Item = Vec<T>;

    fn next(&mut self) -> Option<Self::Item> {
        let mut result = None;
        while let Some(item) = self.inner.next() {
            if !(self.splitter)(&item) {
                result.get_or_insert_with(Vec::new).push(item);
            } else {
                break;
            }
        }
        result
    }
}

Meta

rustc --version --verbose:

rustc 1.65.0 (897e37553 2022-11-02)
binary: rustc
commit-hash: 897e37553bba8b42751c67658967889d11ecd120
commit-date: 2022-11-02
host: x86_64-unknown-linux-gnu
release: 1.65.0
LLVM version: 15.0.0

Error output

bugged on  master [?] is 📦 v0.1.0 via 🦀 v1.65.0 
❯ cargo build
   Compiling bugged v0.1.0 (/home/alban/dev/perso/bugged)
thread 'rustc' panicked at 'cannot copy unsized immediates', /rustc/897e37553bba8b42751c67658967889d11ecd120/compiler/rustc_const_eval/src/interpret/place.rs:643:17
backtrace... (see further)

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 (897e37553 2022-11-02) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type lib -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]

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 `<impl at src/lib.rs:10:1: 10:47>::split`
#1 [optimized_mir] optimizing MIR for `<impl at src/lib.rs:10:1: 10:47>::split`
end of query stack
error: could not compile `bugged`
Backtrace

stack backtrace:
   0:     0x7fb580b1dd40 - std::backtrace_rs::backtrace::libunwind::trace::h32eb3e08e874dd27
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7fb580b1dd40 - std::backtrace_rs::backtrace::trace_unsynchronized::haa3f451d27bc11a5
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7fb580b1dd40 - std::sys_common::backtrace::_print_fmt::h5b94a01bb4289bb5
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x7fb580b1dd40 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hb070b7fa7e3175df
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x7fb580b78bfe - core::fmt::write::hd5207aebbb9a86e9
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/fmt/mod.rs:1202:17
   5:     0x7fb580b0e935 - std::io::Write::write_fmt::h3bd699bbd129ab8a
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/io/mod.rs:1679:15
   6:     0x7fb580b209f3 - std::sys_common::backtrace::_print::h7a21be552fdf58da
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x7fb580b209f3 - std::sys_common::backtrace::print::ha85c41fe4dd80b13
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x7fb580b209f3 - std::panicking::default_hook::{{closure}}::h04cca40023d0eeca
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:295:22
   9:     0x7fb580b206df - std::panicking::default_hook::haa3ca8c310ed5402
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:314:9
  10:     0x7fb57f59e2e1 - rustc_driver[cfb34b1539811fe8]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0x7fb580b2122d - std::panicking::rust_panic_with_hook::h7b190ce1a948faac
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:702:17
  12:     0x7fb580b21041 - std::panicking::begin_panic_handler::{{closure}}::hbafbfdc3e1b97f68
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:586:13
  13:     0x7fb580b1e1ec - std::sys_common::backtrace::__rust_end_short_backtrace::hda93e5fef243b4c0
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:138:18
  14:     0x7fb580b20da2 - rust_begin_unwind
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:584:5
  15:     0x7fb580b757d3 - core::panicking::panic_fmt::h8d17ca1073d9a733
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/panicking.rs:142:14
  16:     0x7fb57ebfba43 - <rustc_const_eval[591cdca0970fa8cd]::interpret::eval_context::InterpCx<rustc_mir_transform[de1f68ec5b9668bc]::const_prop::ConstPropMachine>>::eval_rvalue_into_place
  17:     0x7fb57e98b97a - <rustc_mir_transform[de1f68ec5b9668bc]::const_prop_lint::ConstPropagator as rustc_middle[a9ca1c3f9fd197cd]::mir::visit::Visitor>::visit_body
  18:     0x7fb57e983493 - <rustc_mir_transform[de1f68ec5b9668bc]::const_prop_lint::ConstProp as rustc_mir_transform[de1f68ec5b9668bc]::pass_manager::MirLint>::run_lint
  19:     0x7fb57e090385 - rustc_mir_transform[de1f68ec5b9668bc]::pass_manager::run_passes_no_validate
  20:     0x7fb57e08d614 - rustc_mir_transform[de1f68ec5b9668bc]::run_analysis_to_runtime_passes
  21:     0x7fb57e08c632 - rustc_mir_transform[de1f68ec5b9668bc]::mir_drops_elaborated_and_const_checked
  22:     0x7fb57eb15ec8 - <rustc_query_system[860ed7b39cdfb46b]::dep_graph::graph::DepGraph<rustc_middle[a9ca1c3f9fd197cd]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[a9ca1c3f9fd197cd]::ty::context::TyCtxt, rustc_middle[a9ca1c3f9fd197cd]::ty::WithOptConstParam<rustc_span[8f00505efff112e2]::def_id::LocalDefId>, &rustc_data_structures[62ce3989ce8140ee]::steal::Steal<rustc_middle[a9ca1c3f9fd197cd]::mir::Body>>
  23:     0x7fb57eb14d62 - rustc_query_system[860ed7b39cdfb46b]::query::plumbing::try_execute_query::<rustc_query_impl[d6191eea714bd250]::plumbing::QueryCtxt, rustc_query_system[860ed7b39cdfb46b]::query::caches::DefaultCache<rustc_middle[a9ca1c3f9fd197cd]::ty::WithOptConstParam<rustc_span[8f00505efff112e2]::def_id::LocalDefId>, &rustc_data_structures[62ce3989ce8140ee]::steal::Steal<rustc_middle[a9ca1c3f9fd197cd]::mir::Body>>>
  24:     0x7fb57f4d932e - <rustc_query_impl[d6191eea714bd250]::Queries as rustc_middle[a9ca1c3f9fd197cd]::ty::query::QueryEngine>::mir_drops_elaborated_and_const_checked
  25:     0x7fb57e0d424b - rustc_mir_transform[de1f68ec5b9668bc]::optimized_mir
  26:     0x7fb57e9ec277 - <rustc_query_system[860ed7b39cdfb46b]::dep_graph::graph::DepGraph<rustc_middle[a9ca1c3f9fd197cd]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[a9ca1c3f9fd197cd]::ty::context::TyCtxt, rustc_span[8f00505efff112e2]::def_id::DefId, &rustc_middle[a9ca1c3f9fd197cd]::mir::Body>
  27:     0x7fb57e9d7ec2 - rustc_query_system[860ed7b39cdfb46b]::query::plumbing::try_execute_query::<rustc_query_impl[d6191eea714bd250]::plumbing::QueryCtxt, rustc_query_system[860ed7b39cdfb46b]::query::caches::DefaultCache<rustc_span[8f00505efff112e2]::def_id::DefId, &rustc_middle[a9ca1c3f9fd197cd]::mir::Body>>
  28:     0x7fb57f4d971f - <rustc_query_impl[d6191eea714bd250]::Queries as rustc_middle[a9ca1c3f9fd197cd]::ty::query::QueryEngine>::optimized_mir
  29:     0x7fb57e92a022 - <rustc_metadata[d8be3da67d4a4339]::rmeta::encoder::EncodeContext>::encode_crate_root
  30:     0x7fb57e4bac42 - rustc_metadata[d8be3da67d4a4339]::rmeta::encoder::encode_metadata_impl
  31:     0x7fb57e49d64e - rustc_data_structures[62ce3989ce8140ee]::sync::join::<rustc_metadata[d8be3da67d4a4339]::rmeta::encoder::encode_metadata::{closure#0}, rustc_metadata[d8be3da67d4a4339]::rmeta::encoder::encode_metadata::{closure#1}, (), ()>
  32:     0x7fb57e49d539 - rustc_metadata[d8be3da67d4a4339]::rmeta::encoder::encode_metadata
  33:     0x7fb57e49c623 - rustc_metadata[d8be3da67d4a4339]::fs::encode_and_write_metadata
  34:     0x7fb57e490342 - <rustc_interface[3182dd864eff9d7d]::passes::QueryContext>::enter::<<rustc_interface[3182dd864eff9d7d]::queries::Queries>::ongoing_codegen::{closure#0}::{closure#0}, core[8c92e53db3fc2eaa]::result::Result<alloc[188ed69dc0d14b4b]::boxed::Box<dyn core[8c92e53db3fc2eaa]::any::Any>, rustc_errors[f77a66b68db622d5]::ErrorGuaranteed>>
  35:     0x7fb57e44fe73 - <rustc_interface[3182dd864eff9d7d]::queries::Queries>::ongoing_codegen
  36:     0x7fb57e44e2ca - rustc_interface[3182dd864eff9d7d]::interface::create_compiler_and_run::<core[8c92e53db3fc2eaa]::result::Result<(), rustc_errors[f77a66b68db622d5]::ErrorGuaranteed>, rustc_driver[cfb34b1539811fe8]::run_compiler::{closure#1}>
  37:     0x7fb57e44cac1 - <scoped_tls[e395fa6e23b19669]::ScopedKey<rustc_span[8f00505efff112e2]::SessionGlobals>>::set::<rustc_interface[3182dd864eff9d7d]::interface::run_compiler<core[8c92e53db3fc2eaa]::result::Result<(), rustc_errors[f77a66b68db622d5]::ErrorGuaranteed>, rustc_driver[cfb34b1539811fe8]::run_compiler::{closure#1}>::{closure#0}, core[8c92e53db3fc2eaa]::result::Result<(), rustc_errors[f77a66b68db622d5]::ErrorGuaranteed>>
  38:     0x7fb57e44c7af - std[71cb4861428b0c25]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[3182dd864eff9d7d]::util::run_in_thread_pool_with_globals<rustc_interface[3182dd864eff9d7d]::interface::run_compiler<core[8c92e53db3fc2eaa]::result::Result<(), rustc_errors[f77a66b68db622d5]::ErrorGuaranteed>, rustc_driver[cfb34b1539811fe8]::run_compiler::{closure#1}>::{closure#0}, core[8c92e53db3fc2eaa]::result::Result<(), rustc_errors[f77a66b68db622d5]::ErrorGuaranteed>>::{closure#0}, core[8c92e53db3fc2eaa]::result::Result<(), rustc_errors[f77a66b68db622d5]::ErrorGuaranteed>>
  39:     0x7fb57f401d70 - <<std[71cb4861428b0c25]::thread::Builder>::spawn_unchecked_<rustc_interface[3182dd864eff9d7d]::util::run_in_thread_pool_with_globals<rustc_interface[3182dd864eff9d7d]::interface::run_compiler<core[8c92e53db3fc2eaa]::result::Result<(), rustc_errors[f77a66b68db622d5]::ErrorGuaranteed>, rustc_driver[cfb34b1539811fe8]::run_compiler::{closure#1}>::{closure#0}, core[8c92e53db3fc2eaa]::result::Result<(), rustc_errors[f77a66b68db622d5]::ErrorGuaranteed>>::{closure#0}, core[8c92e53db3fc2eaa]::result::Result<(), rustc_errors[f77a66b68db622d5]::ErrorGuaranteed>>::{closure#1} as core[8c92e53db3fc2eaa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  40:     0x7fb580b2b003 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h49f797984e2121bf
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/alloc/src/boxed.rs:1940:9
  41:     0x7fb580b2b003 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hfa4f3d0ee6440e0b
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/alloc/src/boxed.rs:1940:9
  42:     0x7fb580b2b003 - std::sys::unix::thread::Thread::new::thread_start::h62ca48b42d48a8fc
                               at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys/unix/thread.rs:108:17
  43:     0x7fb57cc828fd - <unknown>
  44:     0x7fb57cd04a60 - <unknown>
  45:                0x0 - <unknown>

@neyb neyb 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 Dec 3, 2022
@neyb
Copy link
Author

neyb commented Dec 3, 2022

same bug on 1.67.0

@Noratrieb
Copy link
Member

Noratrieb commented Dec 3, 2022

I cannot reproduce your example on the playground beta and nightly, only on stable. This looks similar to #102553, which was fixed already.

@neyb
Copy link
Author

neyb commented Dec 15, 2022

ok I don't what i did but nightly is fine... closing. Sorry

@neyb neyb closed this as completed Dec 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
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

No branches or pull requests

2 participants