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: "bad closure kind" with -Zchalk #80229

Closed
matthiaskrgr opened this issue Dec 20, 2020 · 2 comments
Closed

ICE: "bad closure kind" with -Zchalk #80229

matthiaskrgr opened this issue Dec 20, 2020 · 2 comments
Labels
A-closures Area: closures (`|args| { .. }`) A-traits Area: Trait system 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) ❄️ requires-nightly This issue requires a nightly compiler in some way. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@matthiaskrgr
Copy link
Member

Code

fn foo<F, G>(_: G, _: Box<F>)
    where
        F: Fn(),
        G: Fn(Box<F>),
{
}

fn main() {
    foo(|f| (*f)(), Box::new(|| {}));
}

Meta

rustc --version --verbose:

rustc 1.50.0-nightly (1f5bc176b 2020-12-19)
binary: rustc
commit-hash: 1f5bc176b0e54a8e464704adcd7e571700207fe9
commit-date: 2020-12-19
host: x86_64-unknown-linux-gnu
release: 1.50.0-nightly

Error output

error: internal compiler error: compiler/rustc_traits/src/chalk/db.rs:576:18: bad closure kind

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.50.0-nightly (1f5bc176b 2020-12-19) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z chalk=yes

query stack during panic:
#0 [evaluate_goal] evaluating trait selection obligation `environment: [], goal: [closure@./68025.rs:11:30: 11:35]: std::ops::Fn<()>`
#1 [typeck] type-checking `main`
end of query stack
error: aborting due to previous error

Backtrace

error: internal compiler error: compiler/rustc_traits/src/chalk/db.rs:576:18: bad closure kind

thread 'rustc' panicked at 'Box<Any>', compiler/rustc_errors/src/lib.rs:958:9
stack backtrace:
   0:     0x7f906b15f6c7 - std::backtrace_rs::backtrace::libunwind::trace::h746c3e9529d524bc
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
   1:     0x7f906b15f6c7 - std::backtrace_rs::backtrace::trace_unsynchronized::h84373278bfb39e0c
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f906b15f6c7 - std::sys_common::backtrace::_print_fmt::h517324efde750597
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/sys_common/backtrace.rs:67:5
   3:     0x7f906b15f6c7 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hf594ab77fac89284
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/sys_common/backtrace.rs:46:22
   4:     0x7f906b1d028c - core::fmt::write::h3868db8542c90941
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/core/src/fmt/mod.rs:1078:17
   5:     0x7f906b151592 - std::io::Write::write_fmt::h3f6656f045fa877f
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/io/mod.rs:1519:15
   6:     0x7f906b1633b5 - std::sys_common::backtrace::_print::hda7655c057c24dcc
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/sys_common/backtrace.rs:49:5
   7:     0x7f906b1633b5 - std::sys_common::backtrace::print::h546a6c8431d46287
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/sys_common/backtrace.rs:36:9
   8:     0x7f906b1633b5 - std::panicking::default_hook::{{closure}}::h006dd083853faf51
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/panicking.rs:208:50
   9:     0x7f906b162f0a - std::panicking::default_hook::hf0f9afb1017317fc
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/panicking.rs:225:9
  10:     0x7f906ba03ea8 - rustc_driver::report_ice::h956234bae73e460f
  11:     0x7f906b163cb6 - std::panicking::rust_panic_with_hook::hb7a19826c029b1d6
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/panicking.rs:595:17
  12:     0x7f906ebeb2ad - std::panicking::begin_panic::{{closure}}::he3ac55d11a883a10
  13:     0x7f906ebeb166 - std::sys_common::backtrace::__rust_end_short_backtrace::h4402bc3ed558879b
  14:     0x7f906ebeb24f - std::panicking::begin_panic::hd2137c659c375844
  15:     0x7f906ec26b2c - rustc_errors::HandlerInner::bug::hbfb11e3c8ba1475f
  16:     0x7f906ec25240 - rustc_errors::Handler::bug::ha00f48e1291906a1
  17:     0x7f906e4e31a4 - rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}::h08c1bd52850a380c
  18:     0x7f906e4dd1cb - rustc_middle::ty::context::tls::with_opt::{{closure}}::h82c056b7e0ea907f
  19:     0x7f906e4dd172 - rustc_middle::ty::context::tls::with_opt::h001ea91e9a6c9bc0
  20:     0x7f906e4e30c3 - rustc_middle::util::bug::opt_span_bug_fmt::h033dd7c3ae8939b2
  21:     0x7f906e4e3035 - rustc_middle::util::bug::bug_fmt::hededfcfaf49f2715
  22:     0x7f906c220bfa - <rustc_traits::chalk::db::RustIrDatabase as chalk_solve::RustIrDatabase<rustc_middle::traits::chalk::RustInterner>>::closure_kind::he2dc82cdbdcdf8bf
  23:     0x7f906c2222b3 - chalk_solve::clauses::builtin_traits::fn_family::add_fn_trait_program_clauses::h28ca827544f4864c
  24:     0x7f906c1e6e37 - chalk_solve::clauses::builder::ClauseBuilder<I>::push_binders::hdfbf0f07f0d86844
  25:     0x7f906c19a80c - chalk_solve::clauses::builtin_traits::add_builtin_program_clauses::h4c0d9a30db59f66a
  26:     0x7f906c11f10b - chalk_solve::clauses::program_clauses_for_goal::h615fb6542c32cb7b
  27:     0x7f906c15e4a0 - chalk_engine::logic::<impl chalk_engine::forest::Forest<I>>::get_or_create_table_for_ucanonical_goal::h05999f9311e9d45e
  28:     0x7f906c15db2f - chalk_engine::logic::<impl chalk_engine::forest::Forest<I>>::get_or_create_table_for_subgoal::h8e2d78e08efe86b8
  29:     0x7f906c136a77 - chalk_engine::logic::SolveState<I>::ensure_root_answer::hff151791e705e93d
  30:     0x7f906c15d0e4 - chalk_engine::logic::<impl chalk_engine::forest::Forest<I>>::root_answer::h80a720555ce8796f
  31:     0x7f906c1563b0 - <chalk_engine::forest::ForestSolver<I> as chalk_engine::context::AnswerStream<I>>::next_answer::hd07061f74fea59d4
  32:     0x7f906c1007d1 - <chalk_engine::slg::SlgContextOps<I> as chalk_engine::slg::aggregate::AggregateOps<I>>::make_solution::hd330c485590054aa
  33:     0x7f906c210516 - rustc_traits::chalk::evaluate_goal::h3515e9f316a1d24d
  34:     0x7f906df3408d - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::evaluate_goal>::compute::hffab509853e7ade9
  35:     0x7f906df28119 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task::he2591b096e0705ae
  36:     0x7f906e0d4a06 - rustc_data_structures::stack::ensure_sufficient_stack::ha9d3a74bc64064d5
  37:     0x7f906e02011b - rustc_query_system::query::plumbing::get_query_impl::h17d1ab4c0e23dbd7
  38:     0x7f906df3e11c - <rustc_trait_selection::traits::chalk_fulfill::FulfillmentContext as rustc_infer::traits::engine::TraitEngine>::select_where_possible::h63cd36b5725dbb7f
  39:     0x7f906c4db5c2 - rustc_typeck::check::fn_ctxt::checks::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_argument_types::h5a3e6ce214e904ff
  40:     0x7f906c4b89e5 - rustc_typeck::check::callee::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::confirm_builtin_call::hac16eb2ffb22a3da
  41:     0x7f906c4b6e37 - rustc_typeck::check::callee::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_call::h6b43d4bf49a1c6d1
  42:     0x7f906c4c7d56 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_kind::h952c9183bf0a6926
  43:     0x7f906c4c70c0 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation::hdb6305cef7e5d5d1
  44:     0x7f906c4dea8e - rustc_typeck::check::fn_ctxt::checks::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_stmt::h6d70c98c4c310604
  45:     0x7f906c4df12b - rustc_typeck::check::fn_ctxt::checks::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_block_with_expected::h57ae167f297cad77
  46:     0x7f906c4c7d31 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_kind::h952c9183bf0a6926
  47:     0x7f906c4c70c0 - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_expr_with_expectation::hdb6305cef7e5d5d1
  48:     0x7f906c4cf4da - rustc_typeck::check::expr::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::check_return_expr::h7e36ea2b790911a7
  49:     0x7f906c53d429 - rustc_typeck::check::check::check_fn::h56362012704dbdf9
  50:     0x7f906c73afc4 - rustc_infer::infer::InferCtxtBuilder::enter::h0f11bf20abd1f91e
  51:     0x7f906c7927d8 - rustc_typeck::check::typeck::he1f651e041999a8d
  52:     0x7f906c6ab1ae - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::typeck>::compute::h236ed4f2969075ba
  53:     0x7f906c66e34b - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task::h1d0f714dc6d529cb
  54:     0x7f906c5c793b - rustc_data_structures::stack::ensure_sufficient_stack::h82018a71e7fa9f0d
  55:     0x7f906c7b3f1a - rustc_query_system::query::plumbing::get_query_impl::h18f331b7ec70e4b4
  56:     0x7f906c81f5ed - rustc_query_system::query::plumbing::ensure_query_impl::ha852f7223b1ec7d9
  57:     0x7f906c796e26 - rustc_typeck::check::typeck_item_bodies::ha4b16632095938e0
  58:     0x7f906c645dce - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::typeck_item_bodies>::compute::h9342c3449d07cf76
  59:     0x7f906c677f54 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task::h6c2c72f45fddec21
  60:     0x7f906c5c94e6 - rustc_data_structures::stack::ensure_sufficient_stack::ha65e6ee31ff2fa0c
  61:     0x7f906c7b93a4 - rustc_query_system::query::plumbing::get_query_impl::h1b9b207a49d17777
  62:     0x7f906c6d1c21 - rustc_typeck::check_crate::h0ef907d13e9924da
  63:     0x7f906bc7f892 - rustc_interface::passes::analysis::h1277a6a22a164c98
  64:     0x7f906ba5f19b - rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::analysis>::compute::he772285573dcf530
  65:     0x7f906ba4758d - rustc_middle::ty::query::plumbing::<impl rustc_query_system::query::QueryContext for rustc_middle::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}::{{closure}}::haf660f8b5fc0a8b6
  66:     0x7f906b9df3d1 - rustc_query_system::query::plumbing::get_query_impl::h9637293c1f2da416
  67:     0x7f906ba6430f - rustc_interface::passes::QueryContext::enter::h33139460b088ed05
  68:     0x7f906ba71d95 - rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter::h58cc75bad344bc3b
  69:     0x7f906ba2d597 - rustc_span::with_source_map::hb087a1c2bc75d8e9
  70:     0x7f906ba72f8b - rustc_interface::interface::create_compiler_and_run::ha492945fb183c01e
  71:     0x7f906ba41530 - scoped_tls::ScopedKey<T>::set::hf41307147817b997
  72:     0x7f906ba527c7 - std::sys_common::backtrace::__rust_begin_short_backtrace::h645f3b510f7fe2fd
  73:     0x7f906b9c77ea - core::ops::function::FnOnce::call_once{{vtable.shim}}::h19b1a0a715ec4eae
  74:     0x7f906b1737ba - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hea1090dbdcecbf5a
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/alloc/src/boxed.rs:1328:9
  75:     0x7f906b1737ba - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h8d5723d3912bd325
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/alloc/src/boxed.rs:1328:9
  76:     0x7f906b1737ba - std::sys::unix::thread::Thread::new::thread_start::hc17a425ca2995724
                               at /rustc/1f5bc176b0e54a8e464704adcd7e571700207fe9/library/std/src/sys/unix/thread.rs:71:17
  77:     0x7f906b0643e9 - start_thread
  78:     0x7f906af81293 - __GI___clone
  79:                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.50.0-nightly (1f5bc176b 2020-12-19) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z chalk=yes

query stack during panic:
#0 [evaluate_goal] evaluating trait selection obligation `environment: [], goal: [closure@./68025.rs:11:30: 11:35]: std::ops::Fn<()>`
#1 [typeck] type-checking `main`
#2 [typeck_item_bodies] type-checking all item bodies
#3 [analysis] running analysis passes on this crate
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 Dec 20, 2020
fanninpm added a commit to fanninpm/glacier that referenced this issue Dec 20, 2020
@camelid camelid added requires-nightly This issue requires a nightly compiler in some way. A-closures Area: closures (`|args| { .. }`) A-traits Area: Trait system labels Dec 20, 2020
@rust-lang-glacier-bot rust-lang-glacier-bot added the glacier ICE tracked in rust-lang/glacier. label Dec 21, 2020
@camelid
Copy link
Member

camelid commented Jan 13, 2021

Closed by request of @jackh726.

@camelid camelid closed this as completed Jan 13, 2021
@jackh726
Copy link
Member

Just want to leave some reasoning behind closing this: We discussed this in our wg-traits meeting today. We basically agree that right now the chalk-integration is so experimental that things not working is basically expected. Most of the test suite doesn't even pass with compare-mode=chalk. Once we get to a point that nearly all of the test suite passes with -Z chalk, it'll make more sense to keep chalk-related issues around, particularly under the case that it's something we expect to work with Chalk, but not with the rustc trait solver. If it's a test case that doesn't seem to be covered by the test suite as is, I would expect it's better to just add it as a regular test. But that's sometimes hard to know.

(I'm going to post this to all these 4 closed issues)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-closures Area: closures (`|args| { .. }`) A-traits Area: Trait system 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) ❄️ requires-nightly This issue requires a nightly compiler in some way. 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