Skip to content

ICE: assertion failure: eps.array_windows() ... rustc_middle/src/ty/context.rs:2684:9 #102933

@matthiaskrgr

Description

@matthiaskrgr
Member

59324.rs

Code

trait BufMut {}
struct Bytes;
struct BytesMut;

pub trait Future {
    type Item;
}

pub trait Service {
    type Response;
    type Future: Future<Item = Self::Response>;
}

pub trait ThriftService<F>:
    Service<
        Response = FramingEncoded<F>,
        Future = Box<Future<Item = FramingEncodedFinal<F>>>,
    >
where
    F: Framing,
{
    fn get_service(
        &self,
    ) -> &Service<
        Response = Self::Response,
        Future = Self::Future,
    >;
}

pub trait BufMutExt: BufMut {
    type Final;
}

impl BufMutExt for BytesMut {
    type Final = Bytes;
}

pub type FramingEncoded<F> = <F as Framing>::EncBuf;
pub type FramingEncodedFinal<F> = <<F as Framing>::EncBuf as BufMutExt>::Final;

pub trait Framing {
    type EncBuf: BufMut;
}

pub struct SRHeaderTransport;
impl Framing for SRHeaderTransport {
    type EncBuf = BytesMut;
}

pub type BoxService<H> = Box<
    ThriftService<
            SRHeaderTransport,
            Response = Bytes,
            Future = Box<Future<Item = Bytes>>,
        >,
>;

fn with_factory<H>(self, factory: BoxService<H>) {}

fn main() {}

Meta

rustc --version --verbose:

rustc 1.66.0-nightly (db0597f56 2022-10-11)
binary: rustc
commit-hash: db0597f5619d5ed93feca28e61226d3581cc7867
commit-date: 2022-10-11
host: x86_64-unknown-linux-gnu
release: 1.66.0-nightly
LLVM version: 15.0.2

Error output

error: `self` parameter is only allowed in associated functions
  --> /home/matthias/vcs/github/glacier2/fixed/59324.rs:58:20
   |
58 | fn with_factory<H>(self, factory: BoxService<H>) {}
   |                    ^^^^ not semantically valid as function parameter
   |
   = note: associated functions are those in `impl` or `trait` definitions

warning: trait objects without an explicit `dyn` are deprecated
  --> /home/matthias/vcs/github/glacier2/fixed/59324.rs:17:22
   |
17 |         Future = Box<Future<Item = FramingEncodedFinal<F>>>,
   |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
   = note: `#[warn(bare_trait_objects)]` on by default
help: use `dyn`
   |
17 |         Future = Box<dyn Future<Item = FramingEncodedFinal<F>>>,
   |                      +++

warning: trait objects without an explicit `dyn` are deprecated
  --> /home/matthias/vcs/github/glacier2/fixed/59324.rs:51:5
   |
51 | /     ThriftService<
52 | |             SRHeaderTransport,
53 | |             Response = Bytes,
54 | |             Future = Box<Future<Item = Bytes>>,
55 | |         >,
   | |_________^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: use `dyn`
   |
51 ~     dyn ThriftService<
52 |             SRHeaderTransport,
53 |             Response = Bytes,
54 |             Future = Box<Future<Item = Bytes>>,
55 ~         >,
   |

warning: trait objects without an explicit `dyn` are deprecated
  --> /home/matthias/vcs/github/glacier2/fixed/59324.rs:54:26
   |
54 |             Future = Box<Future<Item = Bytes>>,
   |                          ^^^^^^^^^^^^^^^^^^^^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: use `dyn`
   |
54 |             Future = Box<dyn Future<Item = Bytes>>,
   |                          +++

warning: trait objects without an explicit `dyn` are deprecated
  --> /home/matthias/vcs/github/glacier2/fixed/59324.rs:24:11
   |
24 |       ) -> &Service<
   |  ___________^
25 | |         Response = Self::Response,
26 | |         Future = Self::Future,
27 | |     >;
   | |_____^
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
help: use `dyn`
   |
24 ~     ) -> &dyn Service<
25 |         Response = Self::Response,
26 |         Future = Self::Future,
27 ~     >;
   |

error[E0277]: the trait bound `<F as Framing>::EncBuf: BufMutExt` is not satisfied
  --> /home/matthias/vcs/github/glacier2/fixed/59324.rs:14:1
   |
14 | / pub trait ThriftService<F>:
15 | |     Service<
16 | |         Response = FramingEncoded<F>,
17 | |         Future = Box<Future<Item = FramingEncodedFinal<F>>>,
18 | |     >
   | |_____^ the trait `BufMutExt` is not implemented for `<F as Framing>::EncBuf`
   |
help: consider further restricting the associated type
   |
20 |     F: Framing, <F as Framing>::EncBuf: BufMutExt
   |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error[E0277]: the trait bound `<F as Framing>::EncBuf: BufMutExt` is not satisfied
  --> /home/matthias/vcs/github/glacier2/fixed/59324.rs:14:1
   |
14 | / pub trait ThriftService<F>:
15 | |     Service<
16 | |         Response = FramingEncoded<F>,
17 | |         Future = Box<Future<Item = FramingEncodedFinal<F>>>,
...  |
27 | |     >;
28 | | }
   | |_^ the trait `BufMutExt` is not implemented for `<F as Framing>::EncBuf`
   |
help: consider further restricting the associated type
   |
20 |     F: Framing, <F as Framing>::EncBuf: BufMutExt
   |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error[E0277]: the trait bound `BytesMut: BufMut` is not satisfied
  --> /home/matthias/vcs/github/glacier2/fixed/59324.rs:34:6
   |
34 | impl BufMutExt for BytesMut {
   |      ^^^^^^^^^ the trait `BufMut` is not implemented for `BytesMut`
   |
note: required by a bound in `BufMutExt`
  --> /home/matthias/vcs/github/glacier2/fixed/59324.rs:30:22
   |
30 | pub trait BufMutExt: BufMut {
   |                      ^^^^^^ required by this bound in `BufMutExt`

error[E0277]: the trait bound `<F as Framing>::EncBuf: BufMutExt` is not satisfied
  --> /home/matthias/vcs/github/glacier2/fixed/59324.rs:22:5
   |
22 | /     fn get_service(
23 | |         &self,
24 | |     ) -> &Service<
25 | |         Response = Self::Response,
26 | |         Future = Self::Future,
27 | |     >;
   | |______^ the trait `BufMutExt` is not implemented for `<F as Framing>::EncBuf`
   |
help: consider further restricting the associated type
   |
27 |     > where <F as Framing>::EncBuf: BufMutExt;
   |       +++++++++++++++++++++++++++++++++++++++
Backtrace

thread 'rustc' panicked at 'assertion failed: eps.array_windows().all(|[a, b]|\n        a.skip_binder().stable_cmp(self, &b.skip_binder()) !=\n            Ordering::Greater)', compiler/rustc_middle/src/ty/context.rs:2684:9
stack backtrace:
   0:     0x7fa29ff2f460 - std::backtrace_rs::backtrace::libunwind::trace::h845489be954216a1
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   1:     0x7fa29ff2f460 - std::backtrace_rs::backtrace::trace_unsynchronized::hc22c3fc36941637e
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7fa29ff2f460 - std::sys_common::backtrace::_print_fmt::h21566367032e35d4
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x7fa29ff2f460 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h72366b9f7489658b
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x7fa29ff8b42e - core::fmt::write::h1440c0152f5352ee
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/core/src/fmt/mod.rs:1209:17
   5:     0x7fa29ff1f545 - std::io::Write::write_fmt::h01a0c683f4011cbd
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/io/mod.rs:1680:15
   6:     0x7fa29ff32203 - std::sys_common::backtrace::_print::hb6b7d9350a1bf6ea
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x7fa29ff32203 - std::sys_common::backtrace::print::h5fef162fa4c4a90c
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x7fa29ff32203 - std::panicking::default_hook::{{closure}}::h91c8dfae313a0a3c
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/panicking.rs:267:22
   9:     0x7fa29ff31eda - std::panicking::default_hook::hd50d8a920cc08614
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/panicking.rs:286:9
  10:     0x7fa2a286aff1 - rustc_driver[7242de1449df662b]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0x7fa29ff32a3b - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h4f4e2f6011476f3f
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/alloc/src/boxed.rs:1952:9
  12:     0x7fa29ff32a3b - std::panicking::rust_panic_with_hook::h23e14c7d62d93ab4
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/panicking.rs:673:13
  13:     0x7fa29ff32851 - std::panicking::begin_panic_handler::{{closure}}::hfe0bce4b7c5df181
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/panicking.rs:558:13
  14:     0x7fa29ff2f90c - std::sys_common::backtrace::__rust_end_short_backtrace::h2e38c83ce0dfcc0c
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys_common/backtrace.rs:138:18
  15:     0x7fa29ff325b2 - rust_begin_unwind
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/panicking.rs:556:5
  16:     0x7fa29ff88003 - core::panicking::panic_fmt::h0c090a9cb6ea02e8
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/core/src/panicking.rs:142:14
  17:     0x7fa29ff87e4d - core::panicking::panic::h4ccf6771b2a2af6d
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/core/src/panicking.rs:48:5
  18:     0x7fa2a19ac74e - <rustc_middle[95e307ed1fbbba30]::ty::context::TyCtxt>::intern_poly_existential_predicates
  19:     0x7fa2a22dfe75 - <rustc_middle[95e307ed1fbbba30]::ty::sty::Binder<rustc_middle[95e307ed1fbbba30]::ty::sty::ExistentialPredicate> as rustc_type_ir[9e4a1c58889f4edf]::InternIteratorElement<rustc_middle[95e307ed1fbbba30]::ty::sty::Binder<rustc_middle[95e307ed1fbbba30]::ty::sty::ExistentialPredicate>, &rustc_middle[95e307ed1fbbba30]::ty::list::List<rustc_middle[95e307ed1fbbba30]::ty::sty::Binder<rustc_middle[95e307ed1fbbba30]::ty::sty::ExistentialPredicate>>>>::intern_with::<core[3ffd720ca1c42488]::iter::adapters::chain::Chain<core[3ffd720ca1c42488]::iter::sources::once::Once<rustc_middle[95e307ed1fbbba30]::ty::sty::Binder<rustc_middle[95e307ed1fbbba30]::ty::sty::ExistentialPredicate>>, core[3ffd720ca1c42488]::iter::adapters::filter_map::FilterMap<rustc_infer[ad47d2b440a203e4]::traits::util::Elaborator, rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_ty_for_trait::{closure#0}::{closure#1}>>, <rustc_middle[95e307ed1fbbba30]::ty::context::TyCtxt>::mk_poly_existential_predicates<core[3ffd720ca1c42488]::iter::adapters::chain::Chain<core[3ffd720ca1c42488]::iter::sources::once::Once<rustc_middle[95e307ed1fbbba30]::ty::sty::Binder<rustc_middle[95e307ed1fbbba30]::ty::sty::ExistentialPredicate>>, core[3ffd720ca1c42488]::iter::adapters::filter_map::FilterMap<rustc_infer[ad47d2b440a203e4]::traits::util::Elaborator, rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_ty_for_trait::{closure#0}::{closure#1}>>>::{closure#0}>
  20:     0x7fa2a236e815 - rustc_trait_selection[1972b1c7572a008]::traits::object_safety::virtual_call_violation_for_method
  21:     0x7fa2a24f94f8 - rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violation_for_method
  22:     0x7fa2a24f93a3 - <core[3ffd720ca1c42488]::iter::adapters::map::Map<core[3ffd720ca1c42488]::iter::adapters::map::Map<core[3ffd720ca1c42488]::slice::iter::Iter<(rustc_span[db13f476b7ea05ff]::symbol::Symbol, &rustc_middle[95e307ed1fbbba30]::ty::assoc::AssocItem)>, <rustc_data_structures[ea39d62d1b4f5af4]::sorted_map::index_map::SortedIndexMultiMap<u32, rustc_span[db13f476b7ea05ff]::symbol::Symbol, &rustc_middle[95e307ed1fbbba30]::ty::assoc::AssocItem>>::iter::{closure#0}>, <rustc_middle[95e307ed1fbbba30]::ty::assoc::AssocItems>::in_definition_order::{closure#0}> as core[3ffd720ca1c42488]::iter::traits::iterator::Iterator>::try_fold::<(), core[3ffd720ca1c42488]::iter::adapters::filter::filter_try_fold<&rustc_middle[95e307ed1fbbba30]::ty::assoc::AssocItem, (), core[3ffd720ca1c42488]::ops::control_flow::ControlFlow<rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation>, rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violations_for_trait::{closure#0}, core[3ffd720ca1c42488]::iter::adapters::filter_map::filter_map_try_fold<&rustc_middle[95e307ed1fbbba30]::ty::assoc::AssocItem, rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation, (), core[3ffd720ca1c42488]::ops::control_flow::ControlFlow<rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation>, rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violations_for_trait::{closure#1}, core[3ffd720ca1c42488]::iter::traits::iterator::Iterator::find::check<rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation, &mut rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violations_for_trait::{closure#2}>::{closure#0}>::{closure#0}>::{closure#0}, core[3ffd720ca1c42488]::ops::control_flow::ControlFlow<rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation>>
  23:     0x7fa2a24f9165 - <alloc[86689f62ac00be20]::vec::Vec<rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation> as alloc[86689f62ac00be20]::vec::spec_from_iter::SpecFromIter<rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation, core[3ffd720ca1c42488]::iter::adapters::filter::Filter<core[3ffd720ca1c42488]::iter::adapters::filter_map::FilterMap<core[3ffd720ca1c42488]::iter::adapters::filter::Filter<core[3ffd720ca1c42488]::iter::adapters::map::Map<core[3ffd720ca1c42488]::iter::adapters::map::Map<core[3ffd720ca1c42488]::slice::iter::Iter<(rustc_span[db13f476b7ea05ff]::symbol::Symbol, &rustc_middle[95e307ed1fbbba30]::ty::assoc::AssocItem)>, <rustc_data_structures[ea39d62d1b4f5af4]::sorted_map::index_map::SortedIndexMultiMap<u32, rustc_span[db13f476b7ea05ff]::symbol::Symbol, &rustc_middle[95e307ed1fbbba30]::ty::assoc::AssocItem>>::iter::{closure#0}>, <rustc_middle[95e307ed1fbbba30]::ty::assoc::AssocItems>::in_definition_order::{closure#0}>, rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violations_for_trait::{closure#0}>, rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violations_for_trait::{closure#1}>, rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violations_for_trait::{closure#2}>>>::from_iter
  24:     0x7fa2a24f8391 - <&mut rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violations::{closure#0} as core[3ffd720ca1c42488]::ops::function::FnOnce<(rustc_span[db13f476b7ea05ff]::def_id::DefId,)>>::call_once
  25:     0x7fa2a24f7fbe - <core[3ffd720ca1c42488]::iter::adapters::flatten::FlatMap<rustc_trait_selection[1972b1c7572a008]::traits::util::SupertraitDefIds, alloc[86689f62ac00be20]::vec::Vec<rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation>, rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violations::{closure#0}> as core[3ffd720ca1c42488]::iter::traits::iterator::Iterator>::next
  26:     0x7fa2a24f79fc - <smallvec[7c0c6c3d22c8eff2]::SmallVec<[rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation; 8usize]> as core[3ffd720ca1c42488]::iter::traits::collect::Extend<rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation>>::extend::<core[3ffd720ca1c42488]::iter::adapters::flatten::FlatMap<rustc_trait_selection[1972b1c7572a008]::traits::util::SupertraitDefIds, alloc[86689f62ac00be20]::vec::Vec<rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation>, rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violations::{closure#0}>>
  27:     0x7fa2a24f7781 - rustc_trait_selection[1972b1c7572a008]::traits::object_safety::object_safety_violations
  28:     0x7fa2a25e9910 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::try_execute_query::<rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt, rustc_query_system[1567c4f72cef5d5a]::query::caches::DefaultCache<rustc_span[db13f476b7ea05ff]::def_id::DefId, &[rustc_middle[95e307ed1fbbba30]::traits::ObjectSafetyViolation]>>
  29:     0x7fa2a25e9576 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::get_query::<rustc_query_impl[5acd0bb7c17f3c56]::queries::object_safety_violations, rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt>
  30:     0x7fa2a1597032 - <rustc_middle[95e307ed1fbbba30]::ty::context::TyCtxt>::is_object_safe
  31:     0x7fa2a1585ab4 - <rustc_trait_selection[1972b1c7572a008]::traits::fulfill::FulfillProcessor as rustc_data_structures[ea39d62d1b4f5af4]::obligation_forest::ObligationProcessor>::process_obligation
  32:     0x7fa2a157ea89 - <rustc_data_structures[ea39d62d1b4f5af4]::obligation_forest::ObligationForest<rustc_trait_selection[1972b1c7572a008]::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection[1972b1c7572a008]::traits::fulfill::FulfillProcessor>
  33:     0x7fa2a1c0f32f - <rustc_trait_selection[1972b1c7572a008]::traits::engine::ObligationCtxt>::select_all_or_error
  34:     0x7fa2a1a99dcf - rustc_hir_analysis[c205a317ae4aae01]::check::wfcheck::check_item_fn
  35:     0x7fa2a1a92b98 - rustc_hir_analysis[c205a317ae4aae01]::check::wfcheck::check_well_formed
  36:     0x7fa2a181b6ac - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::get_query::<rustc_query_impl[5acd0bb7c17f3c56]::queries::check_well_formed, rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt>
  37:     0x7fa2a22e68df - rustc_data_structures[ea39d62d1b4f5af4]::sync::par_for_each_in::<&[rustc_hir[81ae391e231f8c5f]::hir::ItemId], <rustc_middle[95e307ed1fbbba30]::hir::ModuleItems>::par_items<rustc_hir_analysis[c205a317ae4aae01]::check::wfcheck::check_mod_type_wf::{closure#0}>::{closure#0}>
  38:     0x7fa2a26b3151 - rustc_hir_analysis[c205a317ae4aae01]::check::wfcheck::check_mod_type_wf
  39:     0x7fa2a1e7fba5 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::try_execute_query::<rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt, rustc_query_system[1567c4f72cef5d5a]::query::caches::DefaultCache<rustc_span[db13f476b7ea05ff]::def_id::LocalDefId, ()>>
  40:     0x7fa2a228a8e9 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::get_query::<rustc_query_impl[5acd0bb7c17f3c56]::queries::check_mod_type_wf, rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt>
  41:     0x7fa2a2261a38 - rustc_data_structures[ea39d62d1b4f5af4]::sync::par_for_each_in::<&[rustc_hir[81ae391e231f8c5f]::hir_id::OwnerId], <rustc_middle[95e307ed1fbbba30]::hir::map::Map>::par_for_each_module<rustc_hir_analysis[c205a317ae4aae01]::check_crate::{closure#5}::{closure#0}::{closure#0}>::{closure#0}>
  42:     0x7fa2a2261843 - <rustc_session[33be129fa9a3b2db]::session::Session>::track_errors::<rustc_hir_analysis[c205a317ae4aae01]::check_crate::{closure#5}, ()>
  43:     0x7fa2a22605b0 - rustc_hir_analysis[c205a317ae4aae01]::check_crate
  44:     0x7fa2a2260137 - rustc_interface[b5c7f094b608ea39]::passes::analysis
  45:     0x7fa2a25f5da4 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::try_execute_query::<rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt, rustc_query_system[1567c4f72cef5d5a]::query::caches::DefaultCache<(), core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>>
  46:     0x7fa2a25f5ad7 - rustc_query_system[1567c4f72cef5d5a]::query::plumbing::get_query::<rustc_query_impl[5acd0bb7c17f3c56]::queries::analysis, rustc_query_impl[5acd0bb7c17f3c56]::plumbing::QueryCtxt>
  47:     0x7fa2a1452614 - <rustc_interface[b5c7f094b608ea39]::passes::QueryContext>::enter::<rustc_driver[7242de1449df662b]::run_compiler::{closure#1}::{closure#2}::{closure#3}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>
  48:     0x7fa2a144ea66 - <rustc_interface[b5c7f094b608ea39]::interface::Compiler>::enter::<rustc_driver[7242de1449df662b]::run_compiler::{closure#1}::{closure#2}, core[3ffd720ca1c42488]::result::Result<core[3ffd720ca1c42488]::option::Option<rustc_interface[b5c7f094b608ea39]::queries::Linker>, rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>
  49:     0x7fa2a1449a0c - rustc_span[db13f476b7ea05ff]::with_source_map::<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_interface[b5c7f094b608ea39]::interface::create_compiler_and_run<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_driver[7242de1449df662b]::run_compiler::{closure#1}>::{closure#1}>
  50:     0x7fa2a144940f - rustc_interface[b5c7f094b608ea39]::interface::create_compiler_and_run::<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_driver[7242de1449df662b]::run_compiler::{closure#1}>
  51:     0x7fa2a1448602 - <scoped_tls[f5e6faabecdf262b]::ScopedKey<rustc_span[db13f476b7ea05ff]::SessionGlobals>>::set::<rustc_interface[b5c7f094b608ea39]::interface::run_compiler<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_driver[7242de1449df662b]::run_compiler::{closure#1}>::{closure#0}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>
  52:     0x7fa2a1447adf - std[a6dc0af1ec52a2ce]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[b5c7f094b608ea39]::util::run_in_thread_pool_with_globals<rustc_interface[b5c7f094b608ea39]::interface::run_compiler<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_driver[7242de1449df662b]::run_compiler::{closure#1}>::{closure#0}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>::{closure#0}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>
  53:     0x7fa2a2687240 - <<std[a6dc0af1ec52a2ce]::thread::Builder>::spawn_unchecked_<rustc_interface[b5c7f094b608ea39]::util::run_in_thread_pool_with_globals<rustc_interface[b5c7f094b608ea39]::interface::run_compiler<core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>, rustc_driver[7242de1449df662b]::run_compiler::{closure#1}>::{closure#0}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>::{closure#0}, core[3ffd720ca1c42488]::result::Result<(), rustc_errors[9e9e85828f9a000d]::ErrorGuaranteed>>::{closure#1} as core[3ffd720ca1c42488]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  54:     0x7fa29ff3c643 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h2a8f9144a9e03d40
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/alloc/src/boxed.rs:1938:9
  55:     0x7fa29ff3c643 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h0460607c3f53db9e
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/alloc/src/boxed.rs:1938:9
  56:     0x7fa29ff3c643 - std::sys::unix::thread::Thread::new::thread_start::h5611122d9afa23bd
                               at /rustc/a6b7274a462829f8ef08a1ddcdcec7ac80dbf3e1/library/std/src/sys/unix/thread.rs:108:17
  57:     0x7fa29fc928fd - <unknown>
  58:     0x7fa29fd14a60 - <unknown>
  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.66.0-nightly (a6b7274a4 2022-10-10) running on x86_64-unknown-linux-gnu

query stack during panic:
#0 [object_safety_violations] determine object safety of trait `ThriftService`
#1 [check_well_formed] checking that `with_factory` is well-formed
#2 [check_mod_type_wf] checking that types are well-formed in top-level module
#3 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 5 previous errors; 4 warnings emitted

For more information about this error, try `rustc --explain E0277`.

Activity

added
I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
C-bugCategory: This is a bug.
on Oct 11, 2022
matthiaskrgr

matthiaskrgr commented on Oct 11, 2022

@matthiaskrgr
MemberAuthor

searched toolchains 81f3919 through a6b7274


Regression in 0265a3e

hmm

compiler-errors

compiler-errors commented on Oct 11, 2022

@compiler-errors
Member

@matthiaskrgr what's your system? do you have debug builds on? I can't seem to repro this on master.

edit: oops, first question i guess is x86_64-unknown-linux-gnu

matthiaskrgr

matthiaskrgr commented on Oct 11, 2022

@matthiaskrgr
MemberAuthor

no this is not with debug build on, its just the normal master toolchain installed via rustup-toolchain-install-master -f -n master -c rustc-dev llvm-tools rust-src clippy rust-analyzer rustfmt miri on x86

compiler-errors

compiler-errors commented on Oct 11, 2022

@compiler-errors
Member

Literally can't repro this locally. I'm pretty sure that I know the reason why (the object_ty_for_trait function, which is called from virtual_call_violation_for_method isn't actually returning a sorted list of elaborated predicates). This must be because we're calculating def path hash or something differently between the CI master build and a local build of master.

matthiaskrgr

matthiaskrgr commented on Oct 12, 2022

@matthiaskrgr
MemberAuthor

so you can't even repro with the official master artifacts? :| or just not with a local build?

compiler-errors

compiler-errors commented on Oct 12, 2022

@compiler-errors
Member

Sorry, I can repro with the master artifacts. But not with a local build of master, which makes testing the change that I want to make to fix this issue difficult.

compiler-errors

compiler-errors commented on Oct 12, 2022

@compiler-errors
Member

Actually, repro on stable whoops I mean nightly:

use std::future::Future;

pub trait Service {
    type Response;
    type Future: Future<Output = Self::Response>;
}

pub trait ThriftService: Service<Future = Box<dyn Future<Output = i32>>, Response = i32> {
    fn foo(&self) {}
}

pub trait ThriftService2: Service<Response = i32, Future = Box<dyn Future<Output = i32>>> {
    fn foo(&self) {}
}

fn main() {
    let x: &dyn ThriftService = todo!();
    let y: &dyn ThriftService2 = todo!();
}

This should be a UI test that is resilient to def path hashing changes.

added a commit that references this issue on Oct 13, 2022
42991e5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    Participants

    @matthiaskrgr@compiler-errors

    Issue actions

      ICE: assertion failure: eps.array_windows() ... rustc_middle/src/ty/context.rs:2684:9 · Issue #102933 · rust-lang/rust