Change:
I'm getting the following ICE when compiling my project against the latest OSX nightly .
Could you run again with (= ) and post the backtrace here?
oh, of course!
I'm getting this too, on Linux x64: () Rustc's version (installed from thestinger's Arch repos:
Same here: $ RUSTBACKTRACE=1 cargo build Compiling protobuf v0.0.1 () Compiling rust-crypto v0.1.0 () Compiling nix v0.0.1 () error: internal compiler error: unexpected panic note: the compiler unexpectedly panicked. this is a bug. note: we would appreciate a bug report: note: run with for a backtrace task 'rustc' panicked at 'assertion failed: start <= end', /home/rustbuild/src/rust-buildbot/slave/nightly- stack backtrace: 1: 0x7fb85e59daf0 - rt::backtrace::imp::write::h78410bf389422bb4Afq 2: 0x7fb85e5a0bf0 - failure::onfail::h3d7a049ab1da182dXAq 3: 0x7fb862adfe30 - unwind::beginunwindinner::ha5ca26286b78bd8fdSd 4: 0x7fb862adf950 - unwind::beginunwindfmt::h9ff359c82ebbcec0FPd 5: 0x7fb862adf910 - rustbeginunwind 6: 0x7fb862b2b1a0 - panicking::panicfmt::h6d1e7e05d89e9577h7j 7: 0x7fb862b26a50 - panicking::panic::h9595095b841fe7bal4j 8: 0x7fb8635f2050 - middle::typeck::check::vtable::checkobjectsafety::h909babbc174b8351CBN 9: 0x7fb86365f600 - middle::typeck::check::FnCtxt<'a, 'tcx::registerunsizeobligations::h7602815ae022d228GhX 10: 0x7fb86365f570 - middle::typeck::check::FnCtxt<'a, 'tcx::registerautorefobligations::h0590f015c52acbc0EgX 11: 0x7fb86365f570 - middle::typeck::check::FnCtxt<'a, 'tcx::registerautorefobligations::h0590f015c52acbc0EgX 12: 0x7fb86363aa80 - middle::typeck::check::FnCtxt<'a, 'tcx::writeadjustment::h1396e48fc524a05dIdX 13: 0x7fb86362b520 - middle::typeck::check::FnCtxt<'a, 'tcx::mkassignty::ha58af6f758d897bdxvX 14: 0x7fb86362b210 - middle::typeck::check::demand::coerce::h48183cae82ca7869RPR 15: 0x7fb86368e000 - middle::typeck::check::checkexprcoercabletotype::closure. 16: 0x7fb863684970 - middle::typeck::check::checkexprwithunifier::h9021eb76dad51ef5dJY 17: 0x7fb863682dd0 - middle::typeck::check::checkargumenttypes::h1928dcb07649510889X 18: 0x7fb863684970 - middle::typeck::check::checkexprwithunifier::h9021eb76dad51ef5dJY 19: 0x7fb8636501a0 - middle::typeck::check::checkblockwithexpected::hbcf547bf91ace5705P0 20: 0x7fb86364b770 - middle::typeck::check::checkfn::hc80418f404e5c598pvV 21: 0x7fb86364b4b0 - middle::typeck::check::checkbarefn::h1dd0be1cd95d0c63EkV 22: 0x7fb863652ca0 - middle::typeck::check::checkmethodbody::h131e48693ec30c1axPV 23: 0x7fb8636471c0 - middle::typeck::check::checkitem::hfa9ed324eb120d1cNEV 24: 0x7fb86364ac30 - visit::Visitor::visitmod::h4776340902026008023 25: 0x7fb863649760 - visit::walkitem::h1837381033057518270 26: 0x7fb86364af80 - middle::typeck::check::checkitemtypes::h7314688a92a7a43fOjV 27: 0x7fb863146590 - util::common::time::h1086293170624038403 28: 0x7fb86391db90 - middle::typeck::checkcrate::h707090d761adfc72A3n 29: 0x7fb863987950 - driver::driver::phase3runanalysispasses::h2dc7f682b53f78f9lNA 30: 0x7fb863982200 - driver::driver::compileinput::hb25c14dfa369b7d96tA 31: 0x7fb863a048b0 - driver::runcompiler::h3e5318d61e864690KgE 32: 0x7fb863a047a0 - driver::run::closure. 33: 0x7fb86315f370 - task::TaskBuilder<S::tryfuture::closure. 34: 0x7fb86315f160 - task::TaskBuilder<S::spawninternal::closure. 35: 0x7fb862e2a1a0 - task::NativeSpawner.Spawner::spawn::closure.8435 36: 0x7fb862b38e30 - rusttryinner 37: 0x7fb862b38e20 - rusttry 38: 0x7fb862add5e0 - unwind::try::h8c75b93d8c87f5c4xGd 39: 0x7fb862add470 - task::Task::run::h3855d187b4c0788fnMc 40: 0x7fb862e29ee0 - task::NativeSpawner.Spawner::spawn::closure.8373 41: 0x7fb862adecd0 - thread::threadstart::he45c6d58df77cc88C7c 42: 0x7fb85d949fe0 - startthread 43: 0x7fb8627a9819 - clone 44: 0x0 - <unknown$ rustc --version=verbose rustc 0.13.0-nightly ( 2014-10-31 02:27:15 +0000) binary: rustc commit-hash: commit-date: 2014-10-31 02:27:15 +0000 host: x8664-unknown-linux-gnu release: 0.13.0-nightly
cc
would one of you mind posting the code that caused the ICE please? Even better would be if you could narrow down the code to a minimal test case which causes the crash. Thanks!
For me, it's just a new empty project (cargo new --git) which I some dependencies to: [package] name = "sprs" version = "0.0.1" authors = [""] [dependencies.protobuf] git = "" [] git = "" [] git = "" extern crate crypto extern crate mio extern crate rust-protobuf #[test] fn it_works() { }
I have the same problem, but this happens only when I compile my tests/* code. So the problem is probably somewhere there. Code is available here: And here is my backtrace:
I have done a bit of narrowing and got this: Compiler fails when trying to understand this and this line calls this method:
And after playing around with my suspect code I was able to avoid this bug by replacing type annotations of my arguments with parametric types instead of traits. This commit shows it: . Basically that means that this bug is related somehow to trait rules changes. If this helps somehow..
Minimal example:
Same issue here: with the backtrace:
Is the example I gave unrelated ? Because it's still give me the same backtrace :/ It might be a good idea to add the above crashing snippets to rust test suite (If they are well formed). Side question: Is the online compiler up-to-date (as a nightly build is) ?

Discussion:
receiver through a trait object", method_name)) } <del> ty::StaticExplicitSelfCategory | </del> <ins> ty::StaticExplicitSelfCategory => { // Static methods are always object-safe since they // can't be called through a trait object return msgs } </ins> ty::ByReferenceExplicitSelfCategory(..) | ty::ByBoxExplicitSelfCategory => {} }

<ins> // Copyright 2014 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. // Check that object-safe methods are identified as such.  Also // acts as a regression test for #18490 trait Tr { // Static methods are always safe regardless of other rules fn new() -> Self; } struct St; impl Tr for St { fn new() -> St { St } } fn main() { &St as &Tr; } </ins>