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

rustc internal compiler error: librustc/infer/mod.rs:699 #37725

Closed
dnsl48 opened this issue Nov 11, 2016 · 2 comments
Closed

rustc internal compiler error: librustc/infer/mod.rs:699 #37725

dnsl48 opened this issue Nov 11, 2016 · 2 comments
Labels
I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@dnsl48
Copy link

dnsl48 commented Nov 11, 2016

Compiler panicks instead of showing an appropriate error message in case boundaries are not satisfied.

I tried this code:
https://gist.github.com/dnsl48/d3a4a380a24e1f25ff220540cebd9806#file-source-rs

pub struct Word;


pub struct Pointer<'a> {
    val: &'a Word
}



impl<'a> Pointer<'a> {
    pub fn into<T> (self) -> Option<T>
        where &'a Word: Into<Result<T, &'a Word>>
    {
        let result: Result<T, _> = self.val.into ();
        result.ok ()
    }
}



pub trait FromPointer<'a>: Sized {
    fn from_pointer (Pointer<'a>) -> Option<Self>;
}


impl<'a> FromPointer<'a> for u8 where &'a Word: Into<Result<u8, &'a Word>> {
    fn from_pointer (pointer: Pointer<'a>) -> Option<Self> { pointer.into::<u8> () }
}


fn main() { }

In the result compiler panicked with the following message:
https://gist.github.com/dnsl48/d3a4a380a24e1f25ff220540cebd9806#file-error

error: internal compiler error: ../src/librustc/infer/mod.rs:699: Encountered errors `[FulfillmentError(Obligation(predicate=Binder(TraitPredicate(<std::result::Result<u8, &Word> as std::convert::From<&Word>>)),depth=1),Unimplemented)]` resolving bounds after type-checking

note: the compiler unexpectedly panicked. this is a bug.

Meta

$ rustc --version --verbose
rustc 1.13.0 (2c6933acc 2016-11-07)
binary: rustc
commit-hash: 2c6933acc05c61e041be764cb1331f6281993f3f
commit-date: 2016-11-07
host: x86_64-unknown-linux-gnu
release: 1.13.0

Backtrace:

thread 'rustc' panicked at 'Box<Any>', ../src/librustc_errors/lib.rs:602
stack backtrace:
   1:     0x7ff032d0985f - std::sys::backtrace::tracing::imp::write::h6f1d53a70916b90d
   2:     0x7ff032d18dbd - std::panicking::default_hook::{{closure}}::h137e876f7d3b5850
   3:     0x7ff032d1622e - std::panicking::default_hook::h0ac3811ec7cee78c
   4:     0x7ff032d16918 - std::panicking::rust_panic_with_hook::hc303199e04562edf
   5:     0x7ff031878378 - std::panicking::begin_panic::hf3c77cb5fd5814c4
   6:     0x7ff03196ddf5 - rustc::session::opt_span_bug_fmt::{{closure}}::hf0e25c590c479ec5
   7:     0x7ff03189685a - rustc::session::span_bug_fmt::h42d4c0a219d5e4ec
   8:     0x7ff0319740e2 - rustc_trans::common::fulfill_obligation::{{closure}}::{{closure}}::hb19019dff3d27900
   9:     0x7ff031908802 - rustc_trans::common::fulfill_obligation::hc5c403d8dc435d27
  10:     0x7ff031902718 - rustc_trans::collector::do_static_dispatch::h70f77266775460b2
  11:     0x7ff031901b49 - <rustc_trans::collector::MirNeighborCollector<'a, 'tcx> as rustc::mir::visit::Visitor<'tcx>>::visit_operand::hcb81ecfa21b561eb
  12:     0x7ff031902459 - <rustc_trans::collector::MirNeighborCollector<'a, 'tcx> as rustc::mir::visit::Visitor<'tcx>>::visit_terminator_kind::h3f9e14a5cd0a0cbd
  13:     0x7ff031891995 - rustc::mir::visit::Visitor::visit_mir::h06603f079eadd52e
  14:     0x7ff0318ffb32 - rustc_trans::collector::collect_items_rec::h58706c6ceb59a24d
  15:     0x7ff031900692 - rustc_trans::collector::collect_items_rec::h58706c6ceb59a24d
  16:     0x7ff0319713b2 - rustc_trans::base::collect_and_partition_translation_items::{{closure}}::h3a209f998241a340
  17:     0x7ff0318e6518 - rustc_trans::base::collect_and_partition_translation_items::h26e28c343e8a4a22
  18:     0x7ff0318e0c4c - rustc_trans::base::trans_crate::h7b6c2eb43ae0c1da
  19:     0x7ff03309aa0d - rustc_driver::driver::phase_4_translate_to_llvm::h0646ffc4a1716d29
  20:     0x7ff0330d5e2a - rustc_driver::driver::compile_input::{{closure}}::h5a81b1e8a8f3f531
  21:     0x7ff0330c16a3 - rustc_driver::driver::phase_3_run_analysis_passes::{{closure}}::h4091eeab6f271a29
  22:     0x7ff0330983ad - rustc_driver::driver::phase_3_run_analysis_passes::hff1c31d493acfd09
  23:     0x7ff033084a39 - rustc_driver::driver::compile_input::hef221f9f618e92f5
  24:     0x7ff0330af206 - rustc_driver::run_compiler::h7dddd4089f8330b4
  25:     0x7ff032feb2c3 - std::panicking::try::do_call::h1e3ece12e3f812df
  26:     0x7ff032d20cb6 - __rust_maybe_catch_panic
  27:     0x7ff0330094f9 - <F as alloc::boxed::FnBox<A>>::call_box::h05b222e46803eb30
  28:     0x7ff032d14c80 - std::sys::thread::Thread::new::thread_start::h759e10bc4abc7e72
  29:     0x7ff02bc89453 - start_thread
  30:     0x7ff0329e57de - __GI___clone
31: 0x0 - <unknown>
@TimNN TimNN added the I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ label Nov 11, 2016
@arielb1
Copy link
Contributor

arielb1 commented Nov 12, 2016

Minimal repr:

pub fn from_pointer() where for<'s> &'s mut u8: Clone {
    let v = &mut 0;
    v.clone();
}

fn main() { }

@cyplo
Copy link
Contributor

cyplo commented Feb 14, 2017

Still panics on stable 1.15.1

arielb1 added a commit to arielb1/rust that referenced this issue Jun 21, 2017
bors added a commit that referenced this issue Jun 28, 2017
avoid translating roots with predicates that do not hold

Finally I got around to doing this.

Fixes #37725.

r? @nikomatsakis
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Projects
None yet
Development

No branches or pull requests

4 participants