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: More than one activation introduced at the same location #49662

Closed
Robbepop opened this issue Apr 4, 2018 · 1 comment
Closed

ICE: More than one activation introduced at the same location #49662

Robbepop opened this issue Apr 4, 2018 · 1 comment

Comments

@Robbepop
Copy link
Contributor

Robbepop commented Apr 4, 2018

The Rust compiler told me to file an issue here.

This seems to be a NLL or Borrow-Checker regression as this works on nightly-2018-04-03.

What happened: cargo test --verbose of my project with the new contents of:

enum ExprErrorKind {
	ExtractHiOverflow { hi: usize, expr: Extract },
	// some other variants here
}

impl fmt::Display for ExprError {
	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
		use self::ExprErrorKind::*;
		match &self.kind {
			ExtractHiOverflow { .. } => write!(f, "dayum"),
			// some other cases here
		}
	}
}

Link to Extract struct used: click me!

Rust compiler output points to librustc_mir/dataflow/impls/borrows.rs:216:21

thread 'rustc' panicked at 'More than one activation introduced at the same location.', librustc_mir/dataflow/impls/borrows.rs:216:21
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::print
             at libstd/sys_common/backtrace.rs:71
             at libstd/sys_common/backtrace.rs:59
   2: std::panicking::default_hook::{{closure}}
             at libstd/panicking.rs:207
   3: std::panicking::default_hook
             at libstd/panicking.rs:223
   4: core::ops::function::Fn::call
   5: std::panicking::rust_panic_with_hook
             at libstd/panicking.rs:403
   6: std::panicking::begin_panic
   7: <rustc_mir::dataflow::impls::borrows::Borrows::new::GatherBorrows<'a, 'gcx, 'tcx> as rustc::mir::visit::Visitor<'tcx>>::visit_assign
   8: rustc_mir::dataflow::impls::borrows::Borrows::new
   9: rustc_mir::borrow_check::do_mir_borrowck
  10: <std::thread::local::LocalKey<T>>::with
  11: rustc::ty::context::GlobalCtxt::enter_local
  12: rustc_mir::borrow_check::mir_borrowck
  13: rustc::ty::maps::<impl rustc::ty::maps::queries::mir_borrowck<'tcx>>::compute_result
  14: rustc::dep_graph::graph::DepGraph::with_task_impl
  15: rustc_errors::Handler::track_diagnostics
  16: rustc::ty::maps::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::cycle_check
  17: rustc::ty::maps::<impl rustc::ty::maps::queries::mir_borrowck<'tcx>>::force
  18: rustc::ty::maps::<impl rustc::ty::maps::queries::mir_borrowck<'tcx>>::try_get
  19: rustc::ty::maps::TyCtxtAt::mir_borrowck
  20: rustc::ty::maps::<impl rustc::ty::context::TyCtxt<'a, 'tcx, 'lcx>>::mir_borrowck
  21: rustc_driver::driver::phase_3_run_analysis_passes::{{closure}}::{{closure}}
  22: <std::thread::local::LocalKey<T>>::with
  23: <std::thread::local::LocalKey<T>>::with
  24: rustc::ty::context::TyCtxt::create_and_enter
  25: rustc_driver::driver::compile_input
  26: rustc_driver::run_compiler_impl
  27: syntax::with_globals

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.27.0-nightly (637ac17c5 2018-04-03) running on x86_64-unknown-linux-gnu
note: compiler flags: -C debuginfo=2 -C incremental
note: some of the compiler flags provided by cargo are hidden
error: Could not compile `stevia`.

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

Full RUST_BACKTRACE

   0:     0x7f3d1b99781b - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::haf21fb2d1a534f52
                               at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1:     0x7f3d1b965950 - std::sys_common::backtrace::print::h222ac106928ee2b8
                               at libstd/sys_common/backtrace.rs:71
                               at libstd/sys_common/backtrace.rs:59
   2:     0x7f3d1b98b25d - std::panicking::default_hook::{{closure}}::ha0ec7d04c7618490
                               at libstd/panicking.rs:207
   3:     0x7f3d1b98afbb - std::panicking::default_hook::h94862576a4900944
                               at libstd/panicking.rs:223
   4:     0x7f3d17fbd46d - core::ops::function::Fn::call::h7f5866913c0a5607
   5:     0x7f3d1b98b7a9 - std::panicking::rust_panic_with_hook::ha4fb1372609c4048
                               at libstd/panicking.rs:403
   6:     0x7f3d18b514a5 - std::panicking::begin_panic::h2b7788e9181b7095
   7:     0x7f3d18c7cd76 - <rustc_mir::dataflow::impls::borrows::Borrows::new::GatherBorrows<'a, 'gcx, 'tcx> as rustc::mir::visit::Visitor<'tcx>>::visit_assign::h35f9347a7832f8c4
   8:     0x7f3d18c7b650 - rustc_mir::dataflow::impls::borrows::Borrows::new::h9c0408c0400a81c9
   9:     0x7f3d18b2c7d1 - rustc_mir::borrow_check::do_mir_borrowck::h47e6140075bc43eb
  10:     0x7f3d18ab60c8 - <std::thread::local::LocalKey<T>>::with::h6f6a4179110e7243
  11:     0x7f3d18b90298 - rustc::ty::context::GlobalCtxt::enter_local::h6a5455630fef40da
  12:     0x7f3d18b2b6bc - rustc_mir::borrow_check::mir_borrowck::hebec48d216acf899
  13:     0x7f3d17ed643f - rustc::ty::maps::<impl rustc::ty::maps::queries::mir_borrowck<'tcx>>::compute_result::he167f10bbbb61ef0
  14:     0x7f3d17b5d500 - rustc::dep_graph::graph::DepGraph::with_task_impl::h26e8e7cd35f6e0c6
  15:     0x7f3d17bc48dc - rustc_errors::Handler::track_diagnostics::h0169b067a940efbb
  16:     0x7f3d17e248a7 - rustc::ty::maps::plumbing::<impl rustc::ty::context::TyCtxt<'a, 'gcx, 'tcx>>::cycle_check::h5f78a4f3ed5ba6ff
  17:     0x7f3d17ed64d6 - rustc::ty::maps::<impl rustc::ty::maps::queries::mir_borrowck<'tcx>>::force::h7c21a818484f92e3
  18:     0x7f3d17ed6d70 - rustc::ty::maps::<impl rustc::ty::maps::queries::mir_borrowck<'tcx>>::try_get::h7511b02b472da79f
  19:     0x7f3d17e8504e - rustc::ty::maps::TyCtxtAt::mir_borrowck::h5cc03182edce72e1
  20:     0x7f3d17e817f8 - rustc::ty::maps::<impl rustc::ty::context::TyCtxt<'a, 'tcx, 'lcx>>::mir_borrowck::h7fad85c586aefb83
  21:     0x7f3d1bd298e3 - rustc_driver::driver::phase_3_run_analysis_passes::{{closure}}::{{closure}}::hc73ec1e4941c1f93
  22:     0x7f3d1bd9d65a - <std::thread::local::LocalKey<T>>::with::h4190da1571fbd5ee
  23:     0x7f3d1bda1256 - <std::thread::local::LocalKey<T>>::with::h8b90a925ea17281a
  24:     0x7f3d1be150ae - rustc::ty::context::TyCtxt::create_and_enter::hf44c69229c58e5c3
  25:     0x7f3d1bd0f217 - rustc_driver::driver::compile_input::h01406b737f8d9fb7
  26:     0x7f3d1bdc236f - rustc_driver::run_compiler_impl::h72592b1443483e40
  27:     0x7f3d1bd0c3c8 - syntax::with_globals::h861641f6eadc73c4
  28:     0x7f3d1bd2a4dd - std::sys_common::backtrace::__rust_begin_short_backtrace::hce542848eb39a647
  29:     0x7f3d1b9a5e7e - __rust_maybe_catch_panic
                               at libpanic_unwind/lib.rs:102
  30:     0x7f3d1bd3630d - <F as alloc::boxed::FnBox<A>>::call_box::h9ee6f2e4318cb3c5
  31:     0x7f3d1b99cf07 - std::sys_common::thread::start_thread::h4e87150995e528f2
                               at /checkout/src/liballoc/boxed.rs:794
                               at libstd/sys_common/thread.rs:24
  32:     0x7f3d1b96bf78 - std::sys::unix::thread::Thread::new::thread_start::h77e7f544c30e5001
                               at libstd/sys/unix/thread.rs:90
  33:     0x7f3d15d0e08b - start_thread
  34:     0x7f3d1b64ce7e - __GI___clone
  35:                0x0 - <unknown>

Caused by:

Caused by: (normalized paths)
  process didn't exit successfully: `rustc --crate-name stevia src/lib.rs --emit=dep-info,link -C debuginfo=2 --test -C metadata=881e46fe75c53b3a -C extra-filename=-881e46fe75c53b3a --out-dir src/stevia/target/debug/deps -C incremental=src/stevia/target/debug/incremental -L dependency=/src/stevia/target/debug/deps --extern vec_map=src/stevia/target/debug/deps/libvec_map-9f866549548d61ab.rlib --extern string_interner=src/stevia/target/debug/deps/libstring_interner-5cb7f2653f042239.rlib --extern smallvec=src/stevia/target/debug/deps/libsmallvec-2ac8459e26212a86.rlib --extern num=src/stevia/target/debug/deps/libnum-d6ba17589bd7fa8a.rlib --extern log=src/stevia/target/debug/deps/liblog-ffd9680ce992ac22.rlib --extern apint=src/stevia/target/debug/deps/libapint-c1a44822f4da5864.rlib --extern itertools=src/stevia/target/debug/deps/libitertools-55ed19e3ad349b48.rlib --extern unreachable=src/stevia/target/debug/deps/libunreachable-55873e15e2bf903b.rlib --extern either=src/stevia/target/debug/deps/libeither-b909279f6a7cb3fe.rlib --extern lazy_static=src/stevia/target/debug/deps/liblazy_static-7f08ac2d8dec98b9.rlib` (exit code: 101)

I can provide more information about the source code if necesary. :)

@pietroalbini
Copy link
Member

Duplicate of #49635

@pietroalbini pietroalbini marked this as a duplicate of #49635 Apr 5, 2018
bors added a commit that referenced this issue Apr 7, 2018
…tsakis

two-phase borrows: support multiple activations in one statement

The need for this has arisen since the introduction of two-phase borrows on
method autorefs in #49348. r'ing @pnkfelix to keep things off Niko's plate so he can make this redundant, and @pnkfelix is familiar with the code.

Fixes #49635
Fixes #49662

r? @pnkfelix
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants