Skip to content

ICE on calling lifetime-generic trait method #13645

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

Closed
dwrensha opened this issue Apr 20, 2014 · 2 comments
Closed

ICE on calling lifetime-generic trait method #13645

dwrensha opened this issue Apr 20, 2014 · 2 comments
Labels
I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@dwrensha
Copy link
Contributor

Updated minimal test case

creduce reduced this down to:

trait FromStructReader<'a> { }
trait ResponseHook {
     fn get<'a, T: FromStructReader<'a>>(&'a self);
}
fn foo(res : Box<ResponseHook>) { res.get }
fn main() {}
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://static.rust-lang.org/doc/master/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'OwnedSlice: index out of bounds', /Users/erickt/rust/rust-master/src/libstd/option.rs:164
stack backtrace:
   1:        0x10c1bf5b5 - rt::backtrace::imp::write::hae9e0c8649bd0651E1F::v0.11.pre
   2:        0x10c12c6ae - rt::unwind::begin_unwind_inner::hd5684ca19e9518eaIBF::v0.11.pre
   3:        0x109412428 - rt::unwind::begin_unwind::h6306384670831263120::v0.11.pre
   4:        0x1095d0e5c - middle::subst::ty..Region.Subst::subst_spanned::ha6be338a3f2341abYkR::v0.11.pre
   5:        0x1096b96e2 - middle::typeck::check::method::LookupContext<'a>::push_inherent_candidates_from_object::closure.68413
   6:        0x1096ba801 - middle::typeck::check::method::LookupContext<'a>::push_inherent_candidates_from_bounds_inner::closure.68423
   7:        0x10959c523 - middle::ty::each_bound_trait_and_supertraits::hf62d6da34182ab08B3P::v0.11.pre
   8:        0x1096b6b97 - middle::typeck::check::method::LookupContext<'a>::push_inherent_candidates::closure.68388
   9:        0x1096b618a - middle::typeck::check::autoderef::h14491325893577732316::v0.11.pre
  10:        0x1096b1607 - middle::typeck::check::method::lookup::hfa80a1cd76ce18fcbX5::v0.11.pre
  11:        0x109703b6b - middle::typeck::check::check_expr_with_unifier::check_field::hfdc64548ea59d3e8KFb::v0.11.pre
  12:        0x1096f1f74 - middle::typeck::check::check_expr_with_unifier::h4e2897dbe4ea38cclIa::v0.11.pre
  13:        0x1096d0665 - middle::typeck::check::check_block_with_expected::hc40e54c79cbf136ak7c::v0.11.pre
  14:        0x1096cbc6a - middle::typeck::check::check_fn::h110e9312e887d6depv8::v0.11.pre
  15:        0x1096cb45a - middle::typeck::check::check_bare_fn::h63ca38b0c972d0e4Wk8::v0.11.pre
  16:        0x1096c408f - middle::typeck::check::check_item::hb9ceb87f27759b1a0R8::v0.11.pre
  17:        0x1096cb1dd - middle::typeck::check::check_item_types::hb17499c25494b6f0ek8::v0.11.pre
  18:        0x1098033d6 - util::common::time::h17646179309215505883::v0.11.pre
  19:        0x10980244d - middle::typeck::check_crate::hc361b33fe1242173Qgw::v0.11.pre
  20:        0x109c2b529 - driver::driver::phase_3_run_analysis_passes::h0f47e246146a1253bei::v0.11.pre
  21:        0x109c30fe2 - driver::driver::compile_input::h2c3dbe74f799efa1gEi::v0.11.pre
  22:        0x109c57211 - run_compiler::h6db406e36b756e80saq::v0.11.pre
  23:        0x109c6ed8d - main_args::closure.93972
  24:        0x109c6d502 - monitor::closure.93850
  25:        0x109c6805b - task::TaskBuilder::try::closure.93616
  26:        0x10b7f7b6c - task::spawn_opts::closure.7397
  27:        0x10c1b6c18 - rt::task::Task::run::closure.28413
  28:        0x10c1d7b7c - rust_try
  29:        0x10c1b6a97 - rt::task::Task::run::hf99ca2c1546bbfb0XqD::v0.11.pre
  30:        0x10b7f79ef - task::spawn_opts::closure.7369
  31:        0x10c1bdf16 - rt::thread::thread_start::h61d07f070734480188D::v0.11.pre
  32:     0x7fff90436899 - _pthread_body
  33:     0x7fff9043672a - _pthread_struct_init

Original issue

I observe this behavior on a27dc53

// lifetimes_bug.rs

pub struct StructReader<'a>;

pub trait FromStructReader<'a> {
    fn new(struct_reader : StructReader<'a>) -> Self;
}

pub trait ResponseHook {
    fn get<'a, T : FromStructReader<'a>>(&'a mut self) -> T;
}

pub struct FooReader<'a>;

impl <'a> FromStructReader<'a> for FooReader<'a> {
    fn new(reader : StructReader<'a>) -> FooReader { fail!() }
}


pub fn foo(res : ~ResponseHook) {
    let message : FooReader = res.get();
}

pub fn main () {}
$ RUST_BACKTRACE=1 rustc lifetimes_bug.rs 
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://static.rust-lang.org/doc/master/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'OwnedSlice: index out of bounds', /Users/dwrensha/Code/rust/src/libstd/option.rs:245
stack backtrace:
   1:        0x1111e4b94 - rt::backtrace::imp::write::h65f1256a33d396dbpCa::v0.11.pre
   2:        0x111146d56 - rt::unwind::begin_unwind_inner::h68e26ce721c217dcvca::v0.11.pre
   3:        0x10e505358 - rt::unwind::begin_unwind::h17471810618184668886::v0.11.pre
   4:        0x10e6c03dc - middle::subst::ty..Region.Subst::subst_spanned::h061348fcc8a3ece3DkR::v0.11.pre
   5:        0x10e79e8e9 - middle::typeck::check::method::LookupContext<'a>::push_inherent_candidates_from_object::closure.66569
   6:        0x10e79fa3e - middle::typeck::check::method::LookupContext<'a>::push_inherent_candidates_from_bounds_inner::closure.66579
   7:        0x10e68d3de - middle::ty::each_bound_trait_and_supertraits::hfe28db8418c587ebo7P::v0.11.pre
   8:        0x10e79c776 - middle::typeck::check::method::LookupContext<'a>::push_inherent_candidates::closure.66552
   9:        0x10e79be16 - middle::typeck::check::autoderef::h10261356397395339900::v0.11.pre
  10:        0x10e797851 - middle::typeck::check::method::lookup::hd725f3793f7433cf0l5::v0.11.pre
  11:        0x10e7d199b - middle::typeck::check::check_expr_with_unifier::h8b77cb3547020c08rG9::v0.11.pre
  12:        0x10e7ed7fb - middle::typeck::check::check_decl_local::hc27d1d289641ca08TUb::v0.11.pre
  13:        0x10e7edac3 - middle::typeck::check::check_stmt::hcf77f7a6bd15142aPWb::v0.11.pre
  14:        0x10e7b2425 - middle::typeck::check::check_block_with_expected::hbcb129bd7100e89bM0b::v0.11.pre
  15:        0x10e7ae0ca - middle::typeck::check::check_fn::h8078ea7062877f68fB7::v0.11.pre
  16:        0x10e7ad972 - middle::typeck::check::check_bare_fn::hbde6662db750db647q7::v0.11.pre
  17:        0x10e7a8ffa - middle::typeck::check::check_item::hdfd70bc46b3ec36f2R7::v0.11.pre
  18:        0x10e7ad7ee - middle::typeck::check::check_item_types::hca42b4c9848153d9Hq7::v0.11.pre
  19:        0x10e8eceef - util::common::time::h5322048705425395158::v0.11.pre
  20:        0x10e8ebc3b - middle::typeck::check_crate::h9726397e87c26b8daKu::v0.11.pre
  21:        0x10ed06ce6 - driver::driver::phase_3_run_analysis_passes::h1ad14d2902c72a9eIgf::v0.11.pre
  22:        0x10ed0dfab - driver::driver::compile_input::hc30f45f225ac1fabDFf::v0.11.pre
  23:        0x10ed33220 - run_compiler::hb59372a05e576d1e3en::v0.11.pre
  24:        0x10ed4709d - main_args::closure.92250
  25:        0x10ed45432 - monitor::closure.92128
  26:        0x10ed40f7b - task::TaskBuilder::try::closure.91894
  27:        0x110f4164c - task::spawn_opts::closure.7784
  28:        0x1111dfca8 - rt::task::Task::run::closure.40002
  29:        0x1111ea8bc - rust_try
  30:        0x1111dfb27 - rt::task::Task::run::hc3d881f8ed4cd962x37::v0.11.pre
  31:        0x110f414cf - task::spawn_opts::closure.7756
  32:        0x1111e3576 - rt::thread::thread_start::h8d4bbdacad652bfeiI8::v0.11.pre
  33:     0x7fff87863899 - _pthread_body
  34:     0x7fff8786372a - _pthread_struct_init

cc @pnkfelix @nikomatsakis

@erickt
Copy link
Contributor

erickt commented May 10, 2014

creduce reduced this down to:

trait FromStructReader<'a> { }
trait ResponseHook {
     fn get<'a, T: FromStructReader<'a>>(&'a self);
}
fn foo(res : Box<ResponseHook>) { res.get }
fn main() {}
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug.
note: we would appreciate a bug report: http://static.rust-lang.org/doc/master/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'OwnedSlice: index out of bounds', /Users/erickt/rust/rust-master/src/libstd/option.rs:164
stack backtrace:
   1:        0x10c1bf5b5 - rt::backtrace::imp::write::hae9e0c8649bd0651E1F::v0.11.pre
   2:        0x10c12c6ae - rt::unwind::begin_unwind_inner::hd5684ca19e9518eaIBF::v0.11.pre
   3:        0x109412428 - rt::unwind::begin_unwind::h6306384670831263120::v0.11.pre
   4:        0x1095d0e5c - middle::subst::ty..Region.Subst::subst_spanned::ha6be338a3f2341abYkR::v0.11.pre
   5:        0x1096b96e2 - middle::typeck::check::method::LookupContext<'a>::push_inherent_candidates_from_object::closure.68413
   6:        0x1096ba801 - middle::typeck::check::method::LookupContext<'a>::push_inherent_candidates_from_bounds_inner::closure.68423
   7:        0x10959c523 - middle::ty::each_bound_trait_and_supertraits::hf62d6da34182ab08B3P::v0.11.pre
   8:        0x1096b6b97 - middle::typeck::check::method::LookupContext<'a>::push_inherent_candidates::closure.68388
   9:        0x1096b618a - middle::typeck::check::autoderef::h14491325893577732316::v0.11.pre
  10:        0x1096b1607 - middle::typeck::check::method::lookup::hfa80a1cd76ce18fcbX5::v0.11.pre
  11:        0x109703b6b - middle::typeck::check::check_expr_with_unifier::check_field::hfdc64548ea59d3e8KFb::v0.11.pre
  12:        0x1096f1f74 - middle::typeck::check::check_expr_with_unifier::h4e2897dbe4ea38cclIa::v0.11.pre
  13:        0x1096d0665 - middle::typeck::check::check_block_with_expected::hc40e54c79cbf136ak7c::v0.11.pre
  14:        0x1096cbc6a - middle::typeck::check::check_fn::h110e9312e887d6depv8::v0.11.pre
  15:        0x1096cb45a - middle::typeck::check::check_bare_fn::h63ca38b0c972d0e4Wk8::v0.11.pre
  16:        0x1096c408f - middle::typeck::check::check_item::hb9ceb87f27759b1a0R8::v0.11.pre
  17:        0x1096cb1dd - middle::typeck::check::check_item_types::hb17499c25494b6f0ek8::v0.11.pre
  18:        0x1098033d6 - util::common::time::h17646179309215505883::v0.11.pre
  19:        0x10980244d - middle::typeck::check_crate::hc361b33fe1242173Qgw::v0.11.pre
  20:        0x109c2b529 - driver::driver::phase_3_run_analysis_passes::h0f47e246146a1253bei::v0.11.pre
  21:        0x109c30fe2 - driver::driver::compile_input::h2c3dbe74f799efa1gEi::v0.11.pre
  22:        0x109c57211 - run_compiler::h6db406e36b756e80saq::v0.11.pre
  23:        0x109c6ed8d - main_args::closure.93972
  24:        0x109c6d502 - monitor::closure.93850
  25:        0x109c6805b - task::TaskBuilder::try::closure.93616
  26:        0x10b7f7b6c - task::spawn_opts::closure.7397
  27:        0x10c1b6c18 - rt::task::Task::run::closure.28413
  28:        0x10c1d7b7c - rust_try
  29:        0x10c1b6a97 - rt::task::Task::run::hf99ca2c1546bbfb0XqD::v0.11.pre
  30:        0x10b7f79ef - task::spawn_opts::closure.7369
  31:        0x10c1bdf16 - rt::thread::thread_start::h61d07f070734480188D::v0.11.pre
  32:     0x7fff90436899 - _pthread_body
  33:     0x7fff9043672a - _pthread_struct_init

@alexcrichton
Copy link
Member

Closing as a dupe of #13853

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

3 participants