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 on rustc 1.41.0-nightly (ae1b871cc 2019-12-06) running on x86_64-pc-windows-msvc #67123

Closed
hatoo opened this issue Dec 7, 2019 · 4 comments · Fixed by #67149
Closed

ICE on rustc 1.41.0-nightly (ae1b871cc 2019-12-06) running on x86_64-pc-windows-msvc #67123

hatoo opened this issue Dec 7, 2019 · 4 comments · Fixed by #67149
Labels
A-borrow-checker Area: The borrow checker C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ regression-from-stable-to-nightly Performance or correctness regression from stable to nightly. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@hatoo
Copy link
Contributor

hatoo commented Dec 7, 2019

I encounter an ICE:

  • with rustc 1.41.0-nightly (ae1b871 2019-12-06) running on x86_64-pc-windows-msvc
  • when compiling
trait Foo: Sized + 'static {
    fn new() -> Self;

    fn foo() {
        let me = Self::new();

        || loop {
            me;
        };
    }
}

https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=a32267fea2cba804f7449ee0d2b3920e

The Stable compiler outputs

error[E0382]: use of moved value: me

But Nightly crashed.

$ cargo build
   Compiling generator-ice v0.1.0 (C:\Users\hato2\Desktop\generator-ice)
thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', /rustc/ae1b871cca56613b1af1a5121dd24ac810ff4b89\src\libcore\macros\mod.rs:15:40
stack backtrace:
   0: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
   1: core::fmt::write
   2: <std::io::IoSlice as core::fmt::Debug>::fmt
   3: std::panicking::take_hook
   4: std::panicking::take_hook
   5: rustc_driver::report_ice
   6: std::panicking::rust_panic_with_hook
   7: rust_begin_unwind
   8: core::panicking::panic_fmt
   9: core::panicking::panic
  10: <rustc_mir::interpret::machine::StackPopInfo as core::fmt::Debug>::fmt
  11: <rustc_mir::borrow_check::MirBorrowckCtxt as rustc_mir::dataflow::DataflowResultsConsumer>::visit_terminator_entry
  12: <rustc_mir::borrow_check::MirBorrowckCtxt as rustc_mir::dataflow::DataflowResultsConsumer>::visit_terminator_entry
  13: <rustc_mir::borrow_check::MirBorrowckCtxt as rustc_mir::dataflow::DataflowResultsConsumer>::visit_terminator_entry
  14: <rustc_mir::borrow_check::MirBorrowckCtxt as rustc_mir::dataflow::DataflowResultsConsumer>::visit_statement_entry
  15: <rustc_mir::borrow_check::diagnostics::conflict_errors::<impl rustc_mir::borrow_check::MirBorrowckCtxt>::classify_immutable_section::FakeReadCauseFinder as rustc::mir::visit::Visitor>::visit_statement
  16: <rustc_mir::build::matches::ArmHasGuard as core::fmt::Debug>::fmt
  17: <rustc_mir::borrow_check::diagnostics::conflict_errors::<impl rustc_mir::borrow_check::MirBorrowckCtxt>::classify_immutable_section::FakeReadCauseFinder as rustc::mir::visit::Visitor>::visit_statement
  18: <rustc_mir::build::ScopeId as core::fmt::Debug>::fmt
  19: <rustc_mir::build::matches::ArmHasGuard as core::fmt::Debug>::fmt
  20: <rustc_mir::borrow_check::nll::type_check::TypeVerifier as rustc::mir::visit::Visitor>::visit_body
  21: <rustc_mir::borrow_check::nll::type_check::TypeVerifier as rustc::mir::visit::Visitor>::visit_body
  22: rustc_mir::borrow_check::nll::facts::write_row
  23: rustc_mir::borrow_check::nll::region_infer::values::PlaceholderIndices::lookup_placeholder
  24: <rustc_mir::borrow_check::diagnostics::conflict_errors::<impl rustc_mir::borrow_check::MirBorrowckCtxt>::classify_immutable_section::FakeReadCauseFinder as rustc::mir::visit::Visitor>::visit_statement
  25: <rustc_mir::build::matches::ArmHasGuard as core::fmt::Debug>::fmt
  26: <rustc_mir::borrow_check::diagnostics::conflict_errors::<impl rustc_mir::borrow_check::MirBorrowckCtxt>::classify_immutable_section::FakeReadCauseFinder as rustc::mir::visit::Visitor>::visit_statement
  27: <env_logger::filter::inner::Filter as core::fmt::Debug>::fmt
  28: <rustc_interface::proc_macro_decls::Finder as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item
  29: <rustc_interface::proc_macro_decls::Finder as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item
  30: <rustc_interface::proc_macro_decls::Finder as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item
  31: <rustc_interface::proc_macro_decls::Finder as rustc::hir::itemlikevisit::ItemLikeVisitor>::visit_item
  32: rustc_interface::passes::QueryContext::print_stats
  33: <syntax_pos::symbol::SymbolStr as core::fmt::Display>::fmt
  34: rustc_driver::pretty::print_after_hir_lowering
  35: <rustc_driver::Compilation as core::fmt::Debug>::fmt
  36: rustc_driver::pretty::print_after_hir_lowering
  37: rustc_driver::pretty::print_after_hir_lowering
  38: <syntax_pos::symbol::SymbolStr as core::fmt::Display>::fmt
  39: <rustc_target::spec::Target as rustc_target::spec::HasTargetSpec>::target_spec
  40: <rustc_driver::Compilation as core::fmt::Debug>::fmt
  41: <rustc_target::spec::Target as rustc_target::spec::HasTargetSpec>::target_spec
  42: _rust_maybe_catch_panic
  43: rustc_driver::pretty::print_after_hir_lowering
  44: ZN244_$LT$std..error..$LT$impl$u20$core..convert..From$LT$alloc..string..String$GT$$u20$for$u20$alloc..boxed..Box$LT$dyn$u20$std..error..Error$u2b$core..marker..Send$u2b$core..marker..Sync$GT$$GT$..from..StringError$u20$as$u20$core..fmt..Display$GT$3fmt17
  45: std::sys::windows::thread::Thread::new
  46: BaseThreadInitThunk
  47: RtlUserThreadStart
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

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/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.41.0-nightly (ae1b871cc 2019-12-06) running on x86_64-pc-windows-msvc

note: compiler flags: -C debuginfo=2 -C incremental --crate-type lib

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [mir_borrowck] processing `Foo::foo::{{closure}}#0`
#1 [mir_borrowck] processing `Foo::foo`
#2 [analysis] running analysis passes on this crate
end of query stack
error: could not compile `generator-ice`.

To learn more, run the command again with --verbose.
@jonas-schievink jonas-schievink added A-borrow-checker Area: The borrow checker C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ I-nominated T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. regression-from-stable-to-nightly Performance or correctness regression from stable to nightly. labels Dec 7, 2019
@osa1
Copy link
Contributor

osa1 commented Dec 7, 2019

Confirmed on Linux too.

Backtrace
   0: backtrace::backtrace::libunwind::trace
             at /home/omer/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /home/omer/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:84
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:61
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1025
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1426
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:65
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:50
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:193
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:210
  10: <alloc::boxed::Box<F> as core::ops::function::Fn<A>>::call
             at /home/omer/rust/rust/src/liballoc/boxed.rs:983
  11: rustc_driver::report_ice
             at src/librustc_driver/lib.rs:1174
  12: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:475
  13: rust_begin_unwind
             at src/libstd/panicking.rs:375
  14: core::panicking::panic_fmt
             at src/libcore/panicking.rs:82
  15: core::panicking::panic
             at src/libcore/panicking.rs:49
  16: core::option::Option<T>::unwrap
             at /home/omer/rust/rust/src/libcore/macros/mod.rs:15
  17: rustc_mir::borrow_check::diagnostics::conflict_errors::<impl rustc_mir::borrow_check::MirBorrowckCtxt>::report_use_of_moved_or_uninitialized
             at src/librustc_mir/borrow_check/diagnostics/conflict_errors.rs:243
  18: rustc_mir::borrow_check::MirBorrowckCtxt::check_if_full_path_is_moved
             at src/librustc_mir/borrow_check/mod.rs:1597
  19: rustc_mir::borrow_check::MirBorrowckCtxt::check_if_path_or_subpath_is_moved
             at src/librustc_mir/borrow_check/mod.rs:1641
  20: rustc_mir::borrow_check::MirBorrowckCtxt::consume_operand
             at src/librustc_mir/borrow_check/mod.rs:0
  21: rustc_mir::borrow_check::MirBorrowckCtxt::consume_rvalue
             at src/librustc_mir/borrow_check/mod.rs:0
  22: <rustc_mir::borrow_check::MirBorrowckCtxt as rustc_mir::dataflow::DataflowResultsConsumer>::visit_statement_entry
             at src/librustc_mir/borrow_check/mod.rs:519
  23: rustc_mir::dataflow::DataflowResultsConsumer::process_basic_block
             at src/librustc_mir/dataflow/mod.rs:345
  24: rustc_mir::dataflow::DataflowResultsConsumer::analyze_results
             at src/librustc_mir/dataflow/mod.rs:333
  25: rustc_mir::borrow_check::do_mir_borrowck
             at src/librustc_mir/borrow_check/mod.rs:298
  26: rustc_mir::borrow_check::mir_borrowck::{{closure}}
             at src/librustc_mir/borrow_check/mod.rs:92
  27: rustc::infer::InferCtxtBuilder::enter::{{closure}}
             at /home/omer/rust/rust/src/librustc/infer/mod.rs:541
  28: rustc::ty::context::GlobalCtxt::enter_local::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1613
  29: rustc::ty::context::tls::enter_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1835
  30: rustc::ty::context::tls::set_tlv
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1768
  31: rustc::ty::context::tls::enter_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1834
  32: rustc::ty::context::GlobalCtxt::enter_local::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1612
  33: rustc::ty::context::tls::with_related_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1941
  34: rustc::ty::context::tls::with_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1924
  35: rustc::ty::context::tls::with_context_opt
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1913
  36: rustc::ty::context::tls::with_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1924
  37: rustc::ty::context::tls::with_related_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1937
  38: rustc::ty::context::GlobalCtxt::enter_local
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1604
  39: rustc::infer::InferCtxtBuilder::enter
             at /home/omer/rust/rust/src/librustc/infer/mod.rs:540
  40: rustc_mir::borrow_check::mir_borrowck
             at src/librustc_mir/borrow_check/mod.rs:89
  41: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::mir_borrowck>::compute::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:984
  42: rustc::ty::query::__query_compute::mir_borrowck
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:935
  43: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::mir_borrowck>::compute
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:976
  44: rustc::dep_graph::graph::DepGraph::with_task_impl
             at /home/omer/rust/rust/src/librustc/dep_graph/graph.rs:322
  45: rustc::dep_graph::graph::DepGraph::with_task
             at /home/omer/rust/rust/src/librustc/dep_graph/graph.rs:198
  46: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::force_query_with_job::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:548
  47: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:280
  48: rustc::ty::context::tls::enter_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1835
  49: rustc::ty::context::tls::set_tlv
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1768
  50: rustc::ty::context::tls::enter_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1834
  51: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::start_query::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:279
  52: rustc::ty::context::tls::with_related_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1941
  53: rustc::ty::context::tls::with_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1924
  54: rustc::ty::context::tls::with_context_opt
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1913
  55: rustc::ty::context::tls::with_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1924
  56: rustc::ty::context::tls::with_related_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1937
  57: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::start_query
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:268
  58: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::force_query_with_job::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:540
  59: rustc::ty::query::plumbing::with_diagnostics
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:213
  60: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::force_query_with_job
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:539
  61: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:376
  62: rustc::ty::query::TyCtxtAt::mir_borrowck
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:1061
  63: rustc::ty::query::<impl rustc::ty::context::TyCtxt>::mir_borrowck
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:1053
  64: rustc_mir::borrow_check::nll::type_check::TypeChecker::prove_closure_bounds
             at src/librustc_mir/borrow_check/nll/type_check/mod.rs:2644
  65: rustc_mir::borrow_check::nll::type_check::TypeChecker::prove_aggregate_predicates
             at src/librustc_mir/borrow_check/nll/type_check/mod.rs:2625
  66: rustc_mir::borrow_check::nll::type_check::TypeChecker::check_aggregate_rvalue
             at src/librustc_mir/borrow_check/nll/type_check/mod.rs:2422
  67: rustc_mir::borrow_check::nll::type_check::TypeChecker::check_rvalue
             at src/librustc_mir/borrow_check/nll/type_check/mod.rs:2005
  68: rustc_mir::borrow_check::nll::type_check::TypeChecker::check_stmt
             at src/librustc_mir/borrow_check/nll/type_check/mod.rs:1453
  69: rustc_mir::borrow_check::nll::type_check::TypeChecker::typeck_mir
             at src/librustc_mir/borrow_check/nll/type_check/mod.rs:2786
  70: rustc_mir::borrow_check::nll::type_check::type_check_internal
             at src/librustc_mir/borrow_check/nll/type_check/mod.rs:225
  71: rustc_mir::borrow_check::nll::type_check::type_check
             at src/librustc_mir/borrow_check/nll/type_check/mod.rs:162
  72: rustc_mir::borrow_check::nll::compute_regions
             at src/librustc_mir/borrow_check/nll/mod.rs:187
  73: rustc_mir::borrow_check::do_mir_borrowck
             at src/librustc_mir/borrow_check/mod.rs:203
  74: rustc_mir::borrow_check::mir_borrowck::{{closure}}
             at src/librustc_mir/borrow_check/mod.rs:92
  75: rustc::infer::InferCtxtBuilder::enter::{{closure}}
             at /home/omer/rust/rust/src/librustc/infer/mod.rs:541
  76: rustc::ty::context::GlobalCtxt::enter_local::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1613
  77: rustc::ty::context::tls::enter_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1835
  78: rustc::ty::context::tls::set_tlv
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1768
  79: rustc::ty::context::tls::enter_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1834
  80: rustc::ty::context::GlobalCtxt::enter_local::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1612
  81: rustc::ty::context::tls::with_related_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1941
  82: rustc::ty::context::tls::with_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1924
  83: rustc::ty::context::tls::with_context_opt
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1913
  84: rustc::ty::context::tls::with_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1924
  85: rustc::ty::context::tls::with_related_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1937
  86: rustc::ty::context::GlobalCtxt::enter_local
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1604
  87: rustc::infer::InferCtxtBuilder::enter
             at /home/omer/rust/rust/src/librustc/infer/mod.rs:540
  88: rustc_mir::borrow_check::mir_borrowck
             at src/librustc_mir/borrow_check/mod.rs:89
  89: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::mir_borrowck>::compute::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:984
  90: rustc::ty::query::__query_compute::mir_borrowck
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:935
  91: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::mir_borrowck>::compute
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:976
  92: rustc::dep_graph::graph::DepGraph::with_task_impl
             at /home/omer/rust/rust/src/librustc/dep_graph/graph.rs:322
  93: rustc::dep_graph::graph::DepGraph::with_task
             at /home/omer/rust/rust/src/librustc/dep_graph/graph.rs:198
  94: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::force_query_with_job::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:548
  95: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:280
  96: rustc::ty::context::tls::enter_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1835
  97: rustc::ty::context::tls::set_tlv
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1768
  98: rustc::ty::context::tls::enter_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1834
  99: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::start_query::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:279
 100: rustc::ty::context::tls::with_related_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1941
 101: rustc::ty::context::tls::with_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1924
 102: rustc::ty::context::tls::with_context_opt
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1913
 103: rustc::ty::context::tls::with_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1924
 104: rustc::ty::context::tls::with_related_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1937
 105: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::start_query
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:268
 106: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::force_query_with_job::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:540
 107: rustc::ty::query::plumbing::with_diagnostics
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:213
 108: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::force_query_with_job
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:539
 109: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:376
 110: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::ensure_query
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:597
 111: rustc::ty::query::TyCtxtEnsure::mir_borrowck
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:1012
 112: rustc_interface::passes::analysis::{{closure}}::{{closure}}
             at src/librustc_interface/passes.rs:855
 113: rustc::ty::<impl rustc::ty::context::TyCtxt>::par_body_owners::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/mod.rs:2752
 114: core::iter::traits::iterator::Iterator::for_each::call::{{closure}}
             at /home/omer/rust/rust/src/libcore/iter/traits/iterator.rs:629
 115: core::iter::traits::iterator::Iterator::fold::ok::{{closure}}
             at /home/omer/rust/rust/src/libcore/iter/traits/iterator.rs:1829
 116: core::iter::traits::iterator::Iterator::try_fold
             at /home/omer/rust/rust/src/libcore/iter/traits/iterator.rs:1710
 117: core::iter::traits::iterator::Iterator::fold
             at /home/omer/rust/rust/src/libcore/iter/traits/iterator.rs:1832
 118: core::iter::traits::iterator::Iterator::for_each
             at /home/omer/rust/rust/src/libcore/iter/traits/iterator.rs:632
 119: rustc::ty::<impl rustc::ty::context::TyCtxt>::par_body_owners
             at /home/omer/rust/rust/src/librustc/ty/mod.rs:2751
 120: rustc_interface::passes::analysis::{{closure}}
             at src/librustc_interface/passes.rs:855
 121: rustc::util::common::time_ext
             at /home/omer/rust/rust/src/librustc/util/common.rs:51
 122: rustc::util::common::time
             at /home/omer/rust/rust/src/librustc/util/common.rs:45
 123: rustc_interface::passes::analysis
             at src/librustc_interface/passes.rs:854
 124: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors for rustc::ty::query::queries::analysis>::compute::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:984
 125: rustc::ty::query::__query_compute::analysis
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:935
 126: rustc::dep_graph::graph::DepGraph::with_task_impl
             at /home/omer/rust/rust/src/librustc/dep_graph/graph.rs:322
 127: rustc::dep_graph::graph::DepGraph::with_eval_always_task
             at /home/omer/rust/rust/src/librustc/dep_graph/graph.rs:374
 128: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::force_query_with_job::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:542
 129: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::start_query::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:280
 130: rustc::ty::context::tls::enter_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1835
 131: rustc::ty::context::tls::set_tlv
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1768
 132: rustc::ty::context::tls::enter_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1834
 133: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::start_query::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:279
 134: rustc::ty::context::tls::with_related_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1941
 135: rustc::ty::context::tls::with_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1924
 136: rustc::ty::context::tls::with_context_opt
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1913
 137: rustc::ty::context::tls::with_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1924
 138: rustc::ty::context::tls::with_related_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1937
 139: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::start_query
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:268
 140: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::force_query_with_job::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:540
 141: rustc::ty::query::plumbing::with_diagnostics
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:213
 142: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::force_query_with_job
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:539
 143: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt>::get_query
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:376
 144: rustc::ty::query::TyCtxtAt::analysis
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:1061
 145: rustc::ty::query::<impl rustc::ty::context::TyCtxt>::analysis
             at /home/omer/rust/rust/src/librustc/ty/query/plumbing.rs:1053
 146: rustc_driver::run_compiler::{{closure}}::{{closure}}::{{closure}}
             at src/librustc_driver/lib.rs:395
 147: rustc_interface::passes::QueryContext::enter::{{closure}}
             at /home/omer/rust/rust/src/librustc_interface/passes.rs:730
 148: rustc::ty::context::tls::enter_global::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1867
 149: rustc::ty::context::tls::enter_context::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1835
 150: rustc::ty::context::tls::set_tlv
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1768
 151: rustc::ty::context::tls::enter_context
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1834
 152: rustc::ty::context::tls::enter_global
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1866
 153: rustc_interface::passes::QueryContext::enter
             at /home/omer/rust/rust/src/librustc_interface/passes.rs:730
 154: rustc_driver::run_compiler::{{closure}}::{{closure}}
             at src/librustc_driver/lib.rs:395
 155: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
             at /home/omer/rust/rust/src/librustc_interface/queries.rs:333
 156: rustc_driver::run_compiler::{{closure}}
             at src/librustc_driver/lib.rs:297
 157: rustc_interface::interface::run_compiler_in_existing_thread_pool
             at /home/omer/rust/rust/src/librustc_interface/interface.rs:179
 158: rustc_interface::interface::run_compiler::{{closure}}
             at /home/omer/rust/rust/src/librustc_interface/interface.rs:188
 159: rustc_interface::util::spawn_thread_pool::{{closure}}::{{closure}}::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc_interface/util.rs:163
 160: rustc::ty::context::tls::with_thread_locals::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1823
 161: std::thread::local::LocalKey<T>::try_with
             at /home/omer/rust/rust/src/libstd/thread/local.rs:262
 162: std::thread::local::LocalKey<T>::with
             at /home/omer/rust/rust/src/libstd/thread/local.rs:239
 163: rustc::ty::context::tls::with_thread_locals::{{closure}}
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1815
 164: std::thread::local::LocalKey<T>::try_with
             at /home/omer/rust/rust/src/libstd/thread/local.rs:262
 165: std::thread::local::LocalKey<T>::with
             at /home/omer/rust/rust/src/libstd/thread/local.rs:239
 166: rustc::ty::context::tls::with_thread_locals
             at /home/omer/rust/rust/src/librustc/ty/context.rs:1807
 167: rustc_interface::util::spawn_thread_pool::{{closure}}::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc_interface/util.rs:163
 168: scoped_tls::ScopedKey<T>::set
             at /home/omer/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:137
 169: rustc_interface::util::spawn_thread_pool::{{closure}}::{{closure}}
             at /home/omer/rust/rust/src/librustc_interface/util.rs:159
 170: scoped_tls::ScopedKey<T>::set
             at /home/omer/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:137
 171: syntax::with_globals::{{closure}}
             at /home/omer/rust/rust/src/libsyntax/lib.rs:64
 172: scoped_tls::ScopedKey<T>::set
             at /home/omer/.cargo/registry/src/git.luolix.top-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:137
 173: syntax::with_globals
             at /home/omer/rust/rust/src/libsyntax/lib.rs:63
 174: rustc_interface::util::spawn_thread_pool::{{closure}}
             at /home/omer/rust/rust/src/librustc_interface/util.rs:158
 175: rustc_interface::util::scoped_thread::{{closure}}
             at /home/omer/rust/rust/src/librustc_interface/util.rs:135

@Centril
Copy link
Contributor

Centril commented Dec 7, 2019

Reduced slightly:

trait Foo: Sized {
    fn new() -> Self;

    fn foo() {
        let me = Self::new();

        || loop {
            me;
        };
    }
}

@Centril
Copy link
Contributor

Centril commented Dec 7, 2019

cc @matthewjasper

@matthewjasper
Copy link
Contributor

Really reduced:

fn foo<T>(t: T) {
    || { t; t; };
}

This comes from this unwrap:

let generics = tcx.hir().get_generics(self.mir_def_id).unwrap();

The DefId used should be tcx.closure_base_def_id(self.mir_def_id)

bors added a commit that referenced this issue Dec 10, 2019
Rollup of 11 pull requests

Successful merges:

 - #66892 (Format libcore with rustfmt (including tests and benches))
 - #67106 (resolve: Resolve visibilities on fields with non-builtin attributes)
 - #67113 (Print the visibility in `print_variant`.)
 - #67115 (Simplify `check_decl_no_pat`.)
 - #67119 (libstd miri tests: avoid warnings)
 - #67125 (Added ExactSizeIterator bound to return types)
 - #67138 (Simplify `Layout::extend_packed`)
 - #67145 (fix miri step debug printing)
 - #67149 (Do not ICE #67123)
 - #67155 (Move `Layout`s instead of binding by reference)
 - #67169 (inline some common methods on OsStr)

Failed merges:

r? @ghost
@bors bors closed this as completed in c2702e3 Dec 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-borrow-checker Area: The borrow checker C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ regression-from-stable-to-nightly Performance or correctness regression from stable to nightly. 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.

5 participants