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: Encountered error .. selecting .. #81403

Closed
Tracked by #81567
matthiaskrgr opened this issue Jan 26, 2021 · 3 comments
Closed
Tracked by #81567

ICE: Encountered error .. selecting .. #81403

matthiaskrgr opened this issue Jan 26, 2021 · 3 comments
Labels
A-mir-opt Area: MIR optimizations C-bug Category: This is a bug. glacier ICE tracked in rust-lang/glacier. 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

@matthiaskrgr
Copy link
Member

matthiaskrgr commented Jan 26, 2021

Code

code reduced slightly from ./src/test/ui/issues/issue-44005.rs, crashes with --emit=mir -Zmir-opt-level=2

// build-pass
pub trait Foo<'a> {
    type Bar;
    fn foo(&'a self) -> Self::Bar;
}

impl<'a, 'b, T: 'a> Foo<'a> for &'b T {
    type Bar = &'a T;
    fn foo(&'a self) -> &'a T {
        self
    }
}

pub fn uncallable<T, F>(x: T, f: F)
    where T: for<'a> Foo<'a>,
          F: for<'a> Fn(<T as Foo<'a>>::Bar)
{
    f(x.foo());
}

pub fn broken<F: Fn(&i32)>(x: &i32, f: F) {
    uncallable(x, |y| f(y));
}

fn main() { }

Meta

The ICE triggers since f4eb5d9 / #68828 cc @oli-obk

Error output

error: internal compiler error: compiler/rustc_trait_selection/src/traits/codegen.rs:78:17: Encountered error `OutputTypeParameterMismatch(Binder(<[closure@./src/test/ui/issues/issue-44005.rs:22:19: 22:27] as std::ops::Fn<(<&i32 as Foo<'_>>::Bar,)>>), Binder(<[closure@./src/test/ui/issues/issue-44005.rs:22:19: 22:27] as std::ops::Fn<(&i32,)>>), Sorts(ExpectedFound { expected: &i32, found: <&i32 as Foo<'_>>::Bar }))` selecting `Binder(<[closure@./src/test/ui/issues/issue-44005.rs:22:19: 22:27] as std::ops::Fn<(&i32,)>>)` during codegen

thread 'rustc' panicked at 'Box<Any>', compiler/rustc_errors/src/lib.rs:958:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

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.51.0-nightly (f4eb5d9f7 2021-01-25) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z mir-opt-level=2

query stack during panic:
#0 [codegen_fulfill_obligation] checking if `std::ops::Fn` fulfills its obligations
#1 [resolve_instance] resolving instance `<[closure@./src/test/ui/issues/issue-44005.rs:22:19: 22:27] as std::ops::Fn<(&i32,)>>::call`
end of query stack
Backtrace

error: internal compiler error: compiler/rustc_trait_selection/src/traits/codegen.rs:78:17: Encountered error `OutputTypeParameterMismatch(Binder(<[closure@./src/test/ui/issues/issue-44005.rs:22:19: 22:27] as std::ops::Fn<(<&i32 as Foo<'_>>::Bar,)>>), Binder(<[closure@./src/test/ui/issues/issue-44005.rs:22:19: 22:27] as std::ops::Fn<(&i32,)>>), Sorts(ExpectedFound { expected: &i32, found: <&i32 as Foo<'_>>::Bar }))` selecting `Binder(<[closure@./src/test/ui/issues/issue-44005.rs:22:19: 22:27] as std::ops::Fn<(&i32,)>>)` during codegen

thread 'rustc' panicked at 'Box<Any>', compiler/rustc_errors/src/lib.rs:958:9
stack backtrace:
   0:     0x7f48e0002d07 - std::backtrace_rs::backtrace::libunwind::trace::h8bc78f7bc1f75bdb
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
   1:     0x7f48e0002d07 - std::backtrace_rs::backtrace::trace_unsynchronized::ha4c961c9576f95ba
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f48e0002d07 - std::sys_common::backtrace::_print_fmt::hc20cfdc233d6eb02
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/sys_common/backtrace.rs:67:5
   3:     0x7f48e0002d07 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h04bea14549780a0f
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/sys_common/backtrace.rs:46:22
   4:     0x7f48e0073cdc - core::fmt::write::h3868db8542c90941
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/core/src/fmt/mod.rs:1096:17
   5:     0x7f48dfff5532 - std::io::Write::write_fmt::h55dd75636eef6a5c
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/io/mod.rs:1568:15
   6:     0x7f48e0006be5 - std::sys_common::backtrace::_print::h6439e8525077c7da
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/sys_common/backtrace.rs:49:5
   7:     0x7f48e0006be5 - std::sys_common::backtrace::print::h02b685f728ce3931
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/sys_common/backtrace.rs:36:9
   8:     0x7f48e0006be5 - std::panicking::default_hook::{{closure}}::h7c29625065fafae1
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/panicking.rs:208:50
   9:     0x7f48e0006743 - std::panicking::default_hook::hba441710bb71f4d5
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/panicking.rs:225:9
  10:     0x7f48e084df3b - rustc_driver::report_ice::h37fd6cf635aca33e
  11:     0x7f48e00074e6 - std::panicking::rust_panic_with_hook::ha936eb00e51bc4d9
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/panicking.rs:595:17
  12:     0x7f48e207225e - std::panicking::begin_panic::{{closure}}::h8c774868ca681eb9
  13:     0x7f48e2072099 - std::sys_common::backtrace::__rust_end_short_backtrace::hc65b9c179e1c4891
  14:     0x7f48e20721d2 - std::panicking::begin_panic::h0d9e7df699875d27
  15:     0x7f48e208d5b1 - rustc_errors::HandlerInner::bug::hbaa090ab1ded7bb6
  16:     0x7f48e208d083 - rustc_errors::Handler::bug::h784002127398962f
  17:     0x7f48e1d857b5 - rustc_middle::ty::context::tls::with_opt::h22c3633dadd4a591
  18:     0x7f48e36ba5a0 - rustc_middle::util::bug::opt_span_bug_fmt::he0f6a69007322a94
  19:     0x7f48e1d85e26 - rustc_middle::util::bug::bug_fmt::hb9092427708f5234
  20:     0x7f48e297eabd - rustc_infer::infer::InferCtxtBuilder::enter::h244fc7bfda67e2d3
  21:     0x7f48e2a0b206 - rustc_trait_selection::traits::codegen::codegen_fulfill_obligation::he94cd8fab94e195d
  22:     0x7f48e2260038 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::codegen_fulfill_obligation>::compute::h4dab832d85128a3b
  23:     0x7f48e225e81a - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::hbc70e46e739fb507
  24:     0x7f48e22625a5 - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::hfc725b8296a51a08
  25:     0x7f48e2256e60 - rustc_query_system::query::plumbing::force_query_with_job::ha980a83bbce4343f
  26:     0x7f48e2253417 - rustc_query_system::query::plumbing::get_query_impl::hf4a15102bcd4bbe0
  27:     0x7f48e2260c81 - rustc_ty_utils::instance::inner_resolve_instance::h7c35324cb26f5f2a
  28:     0x7f48e2260831 - rustc_ty_utils::instance::resolve_instance::hcde62c1e83095b5b
  29:     0x7f48e2ab378e - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::resolve_instance>::compute::he2f0c24be3fe7cab
  30:     0x7f48e2b8e1bf - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h31a166c7ca06b4a4
  31:     0x7f48e2a8eb43 - rustc_data_structures::stack::ensure_sufficient_stack::h2264baa7673b60ef
  32:     0x7f48e2b4d28e - rustc_query_system::query::plumbing::force_query_with_job::h7fb4f9d4c1bfafc7
  33:     0x7f48e2b03a02 - rustc_query_system::query::plumbing::get_query_impl::h2623f9af89575489
  34:     0x7f48e2ab1ffb - rustc_middle::ty::instance::Instance::resolve_opt_const_arg::hace8d81490c861d6
  35:     0x7f48e2ab1ddd - rustc_middle::ty::instance::Instance::resolve::hc1e8f4ade9780b41
  36:     0x7f48e1392752 - rustc_mir::transform::inline::cycle::mir_callgraph_reachable::process::h0bc8efc50a85bf23
  37:     0x7f48e13922a4 - rustc_mir::transform::inline::cycle::mir_callgraph_reachable::hceef24990d777dd0
  38:     0x7f48e12115a7 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::mir_callgraph_reachable>::compute::h185585cbdefa5d9b
  39:     0x7f48e11c3ed7 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h73c4047fa2a751f9
  40:     0x7f48e11cc698 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task::hbdced1e949268442
  41:     0x7f48e128efc1 - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::hb1f4679913ee44de
  42:     0x7f48e1295931 - rustc_data_structures::stack::ensure_sufficient_stack::h76971ea186912ac0
  43:     0x7f48e13471ad - rustc_query_system::query::plumbing::force_query_with_job::h1fb64d7b9b8fc108
  44:     0x7f48e1336fd2 - rustc_query_system::query::plumbing::get_query_impl::h78c00b0dfc5f2681
  45:     0x7f48e126e207 - rustc_mir::transform::inline::Inliner::process_blocks::h1d054fe73ee069ec
  46:     0x7f48e3208255 - <rustc_mir::transform::inline::Inline as rustc_mir::transform::MirPass>::run_pass::hf79c6b5f2f1d48a2
  47:     0x7f48e26a693a - rustc_mir::transform::run_passes::haa427899468ed5ea
  48:     0x7f48e322e4ad - rustc_mir::transform::optimized_mir::h8f2ff3e1c2db80eb
  49:     0x7f48e10f2473 - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::optimized_mir>::compute::haaa1702990421c97
  50:     0x7f48e31d3c09 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h19c7a79d519afa82
  51:     0x7f48e320b9d0 - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::hae63b09be8b6045c
  52:     0x7f48e3264149 - rustc_query_system::query::plumbing::force_query_with_job::hd2b7966b4328f9ac
  53:     0x7f48e27224f1 - rustc_query_system::query::plumbing::get_query_impl::hfa017622789aa922
  54:     0x7f48e11208db - rustc_mir::util::pretty::write_mir_pretty::hd323b46d422db920
  55:     0x7f48e11dc410 - rustc_mir::transform::dump_mir::emit_mir::h7fa477060ef5ad64
  56:     0x7f48e2c6a6dc - rustc_interface::passes::QueryContext::enter::hbb078b864afb0af8
  57:     0x7f48e2c7c376 - rustc_interface::queries::Queries::ongoing_codegen::he488cc182a816eed
  58:     0x7f48e2c12e04 - rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter::h91b3a5be8f054df8
  59:     0x7f48e2c08964 - rustc_span::with_source_map::h05af58868046c383
  60:     0x7f48e2c13dca - rustc_interface::interface::create_compiler_and_run::hd6bcde8a021d388e
  61:     0x7f48e2c0963f - std::sys_common::backtrace::__rust_begin_short_backtrace::h079be7663f9274fd
  62:     0x7f48e2beeefa - core::ops::function::FnOnce::call_once{{vtable.shim}}::had52829d2d210307
  63:     0x7f48e00179aa - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h8ffdf8dc1f37e360
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/alloc/src/boxed.rs:1487:9
  64:     0x7f48e00179aa - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h74f6ec149ce6acc8
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/alloc/src/boxed.rs:1487:9
  65:     0x7f48e00179aa - std::sys::unix::thread::Thread::new::thread_start::h565bef3956c58d58
                               at /rustc/f4eb5d9f719cd3c849befc8914ad8ce0ddcf34ed/library/std/src/sys/unix/thread.rs:71:17
  66:     0x7f48dff083e9 - start_thread
  67:     0x7f48dfe25293 - __GI___clone
  68:                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.51.0-nightly (f4eb5d9f7 2021-01-25) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z mir-opt-level=2

query stack during panic:
#0 [codegen_fulfill_obligation] checking if `std::ops::Fn` fulfills its obligations
#1 [resolve_instance] resolving instance `<[closure@./src/test/ui/issues/issue-44005.rs:22:19: 22:27] as std::ops::Fn<(&i32,)>>::call`
#2 [mir_callgraph_reachable] computing if `uncallable::<&i32, [closure@./src/test/ui/issues/issue-44005.rs:22:19: 22:27]>` (transitively) calls `broken`
#3 [optimized_mir] optimizing MIR for `broken`
end of query stack
error: aborting due to previous error

@matthiaskrgr matthiaskrgr 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 Jan 26, 2021
@oli-obk oli-obk added the A-mir-opt Area: MIR optimizations label Jan 26, 2021
@oli-obk
Copy link
Contributor

oli-obk commented Jan 26, 2021

I don't think my PR introduced this bug, afaict it just exposed the bug, because now inlining actually happens somewhere it didn't happen before. So this is likely an inliner bug.

@estebank
Copy link
Contributor

Seems related to #80291

fanninpm added a commit to fanninpm/glacier that referenced this issue Jan 30, 2021
@rust-lang-glacier-bot rust-lang-glacier-bot added the glacier ICE tracked in rust-lang/glacier. label Jan 30, 2021
@jackh726
Copy link
Member

Fixed by #85499, closing since other tests cover this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-mir-opt Area: MIR optimizations C-bug Category: This is a bug. glacier ICE tracked in rust-lang/glacier. 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

5 participants