Skip to content

Upgrading nightly introduces compiler panic at visit_opaque_types #58817

@xrl

Description

@xrl

I did a rustup update and the new nightly started failing to compile.

I tried this code:

I don't have a good way of minimal reproduction on my medium-size codebase. But I did figure out another rustup nightly that would stop seeing the error.

I expected to see this happen: rustup default nightly; rustup update; cargo build should have kept working

Instead, this happened:

/Users/xavierlange/.cargo/bin/cargo run --color=always -- postgres://postgres@localhost/sci_rx_production http://localhost:5984 --table=request_tracker
   Compiling dracula v0.1.0 (/Users/xavierlange/code/rust/dracula)
thread 'rustc' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:345:21
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::sys_common::backtrace::_print
   2: std::panicking::default_hook::{{closure}}
   3: std::panicking::default_hook
   4: rustc::util::common::panic_hook
   5: std::panicking::rust_panic_with_hook
   6: std::panicking::continue_panic_fmt
   7: rust_begin_unwind
   8: core::panicking::panic_fmt
   9: core::panicking::panic
  10: rustc_typeck::check::writeback::WritebackCx::visit_opaque_types
  11: rustc_typeck::check::writeback::<impl rustc_typeck::check::FnCtxt<'a, 'gcx, 'tcx>>::resolve_type_vars_in_body
  12: rustc::ty::context::GlobalCtxt::enter_local
  13: rustc_typeck::check::typeck_tables_of
  14: rustc::ty::query::__query_compute::typeck_tables_of
  15: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors<'tcx> for rustc::ty::query::queries::typeck_tables_of<'tcx>>::compute
  16: rustc::dep_graph::graph::DepGraph::with_task_impl
  17: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::get_query
  18: rustc_typeck::collect::type_of
  19: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors<'tcx> for rustc::ty::query::queries::type_of<'tcx>>::compute
  20: rustc::dep_graph::graph::DepGraph::with_task_impl
  21: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::get_query
  22: rustc::ty::util::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_expand_impl_trait_type::OpaqueTypeExpander::expand_opaque_ty
  23: rustc::ty::util::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::try_expand_impl_trait_type
  24: rustc_typeck::check::check_item_type
  25: rustc::hir::map::Map::visit_item_likes_in_module
  26: rustc_typeck::check::check_mod_item_types
  27: rustc::ty::query::__query_compute::check_mod_item_types
  28: rustc::ty::query::<impl rustc::ty::query::config::QueryAccessors<'tcx> for rustc::ty::query::queries::check_mod_item_types<'tcx>>::compute
  29: rustc::dep_graph::graph::DepGraph::with_task_impl
  30: rustc::ty::query::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::get_query
  31: rustc::session::Session::track_errors
  32: rustc::util::common::time
  33: rustc_typeck::check_crate
  34: <std::thread::local::LocalKey<T>>::with
  35: rustc::ty::context::TyCtxt::create_and_enter
  36: rustc_driver::driver::compile_input
  37: rustc_driver::run_compiler_with_pool
  38: <scoped_tls::ScopedKey<T>>::set
  39: rustc_driver::run_compiler
  40: rustc_driver::monitor::{{closure}}
  41: __rust_maybe_catch_panic
  42: <F as alloc::boxed::FnBox<A>>::call_box
  43: std::sys::unix::thread::Thread::new::thread_start
  44: _pthread_body
  45: _pthread_start
query stack during panic:
#0 [typeck_tables_of] processing `tasks::request_tracker::request_tracker`
#1 [type_of] processing `tasks::request_tracker::request_tracker::{{impl-Trait}}`
#2 [check_mod_item_types] checking item types in module `tasks::request_tracker`
end of query stack

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.34.0-nightly (7e001e5c6 2019-02-27) running on x86_64-apple-darwin

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

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

error: Could not compile `dracula`.

To learn more, run the command again with --verbose.

Process finished with exit code 101

maybe my cargo file will help? nothing fancy going on there:

[package]
name = "dracula"
version = "0.1.0"
authors = ["Xavier Lange <xrlange@gmail.com>"]
edition = "2018"

[dependencies]
parquet = { git = "https://github.com/tureus/parquet-rs.git", branch = "parquet_derive-refactor_field_info" }
parquet_derive = { git = "https://github.com/tureus/parquet-rs.git", branch = "parquet_derive-refactor_field_info" }
reqwest = "0.9"
serde = { version = "1.0", features = [ ] }
serde_derive = "1.0"
serde_json = "1.0"
docopt = "1.0"
diesel = { version = "1.0.0", features = ["postgres", "32-column-tables", "numeric", "chrono"] }
bigdecimal = "0.0.14" # gotta match the diesel version, try `cargo tree`
chrono = { version = "0.4", features = ["serde"] }
uuid = "0.7"
hashbrown = { version = "0.1", features = ["serde"] }
lazy_static = "1"
pretty-bytes = "0.2"
rusoto_core = "0.36.0"
rusoto_s3 = "0.36.0"
futures = "0.1"
url = "1.7"
# Needed for Postgres.
openssl = "*"
openssl-probe = "0.1.2"

[profile.release]
#lto = true
#debug = false
#codegen-units = 1
#panic = "abort"

[[bin]]
name = "dracula"

I can fix this by downgrading: rustup default nightly-2019-02-19 and then cargo build works again. The error starts happening on rustup default nightly-2019-02-21.

Meta

rustc --version --verbose:

$ rustc --version --verbose
rustc 1.34.0-nightly (f66e4697a 2019-02-20)
binary: rustc
commit-hash: f66e4697ae286985ddefc53c3a047614568458bb
commit-date: 2019-02-20
host: x86_64-apple-darwin
release: 1.34.0-nightly
LLVM version: 8.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-impl-traitArea: `impl Trait`. Universally / existentially quantified anonymous types with static dispatch.C-bugCategory: This is a bug.E-needs-mcveCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable ExampleF-impl_trait_in_bindings`#![feature(impl_trait_in_bindings)]`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.requires-nightlyThis issue requires a nightly compiler in some way. When possible, use a F-* label instead.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions