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: "resolved vtable bad vtable" with impl Trait for .. {} #23080

Closed
japaric opened this issue Mar 5, 2015 · 1 comment · Fixed by #23117
Closed

ICE: "resolved vtable bad vtable" with impl Trait for .. {} #23080

japaric opened this issue Mar 5, 2015 · 1 comment · Fixed by #23117
Assignees
Labels
I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

Comments

@japaric
Copy link
Member

japaric commented Mar 5, 2015

STR

#![crate_type = "lib"]
#![feature(optin_builtin_traits)]

unsafe trait Trait {
    fn method(&self) {
        println!("Hello");
    }
}

unsafe impl Trait for .. {}

fn call_method<T: Trait>(x: T) {
    x.method();
}

fn main() {
    // ICE
    call_method(());
}

Backtrace

error: internal compiler error: resolved vtable bad vtable VtableDefaultImplData(trait_def_id=DefId { krate: 0, node: 4 }:Trait, nested=[()]) in trans
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https:/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
note: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'Box<Any>', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libsyntax/diagnostic.rs:189

stack backtrace:
   1:     0x7fe3035d6f1f - sys::backtrace::write::hf79a3da4fdecb8a0OBA
   2:     0x7fe303601c32 - panicking::on_panic::h9f64f4c69e19f194hHJ
   3:     0x7fe303536eda - rt::unwind::begin_unwind_inner::h37f4496c980fe936knJ
   4:     0x7fe300989abd - rt::unwind::begin_unwind::h8320268356453106285
   5:     0x7fe30098a305 - diagnostic::Handler::bug::h9f10e263d26f6508X5D
   6:     0x7fe3013dac2b - session::Session::bug::hd2a7bf49812ce6f80Sp
   7:     0x7fe302c93458 - trans::meth::trans_method_callee::h560647f9622b6732N6x
   8:     0x7fe302c8f8e9 - trans::callee::trans_call_inner::h3649553240631627052
   9:     0x7fe302c99789 - trans::expr::trans_rvalue_dps_unadjusted::hd47de7ac66e018254zi
  10:     0x7fe302c4b3f6 - trans::expr::trans_into::h95c6d2681fdd2548znh
  11:     0x7fe302c4a594 - trans::controlflow::trans_stmt_semi::h3c27cfa3f0150db6o4d
  12:     0x7fe302c4bed0 - trans::controlflow::trans_block::h3e86dfa8c58560e6b5d
  13:     0x7fe302d23821 - trans::base::trans_closure::hab3cc3c679d5ff23Kkt
  14:     0x7fe302c34b08 - trans::base::trans_fn::he0569b8eb832adf9Dvt
  15:     0x7fe302c36136 - trans::monomorphize::monomorphic_fn::hc1b7393dd1dc77f1usd
  16:     0x7fe302c7be4e - trans::callee::trans_fn_ref_with_substs::hd01acb4398310d154kg
  17:     0x7fe302c7a43e - trans::callee::trans_fn_ref::hb48e614c9b6dd9bcE9f
  18:     0x7fe302c7788d - trans::callee::trans::ha56f4fe94448e6baVYf
  19:     0x7fe302c8dfbb - trans::callee::trans_call_inner::h9722042290657949952
  20:     0x7fe302c9a9e0 - trans::expr::trans_rvalue_dps_unadjusted::hd47de7ac66e018254zi
  21:     0x7fe302c4b3f6 - trans::expr::trans_into::h95c6d2681fdd2548znh
  22:     0x7fe302c4a594 - trans::controlflow::trans_stmt_semi::h3c27cfa3f0150db6o4d
  23:     0x7fe302c4bed0 - trans::controlflow::trans_block::h3e86dfa8c58560e6b5d
  24:     0x7fe302d23821 - trans::base::trans_closure::hab3cc3c679d5ff23Kkt
  25:     0x7fe302c34b08 - trans::base::trans_fn::he0569b8eb832adf9Dvt
  26:     0x7fe302c308a1 - trans::base::trans_item::h48fc370b7d259ac7vTt
  27:     0x7fe302d2c7ec - trans::base::trans_crate::hc92be67ede893c70GPu
  28:     0x7fe303c0fe83 - driver::phase_4_translate_to_llvm::h9904f5d5fc3fb761rNa
  29:     0x7fe303beb83f - driver::compile_input::h3913ff7013f0c056Iba
  30:     0x7fe303cb3cb7 - run_compiler::h28a4446bae1034e7H5b
  31:     0x7fe303cb1829 - thunk::F.Invoke<A, R>::invoke::h6503055919709693733
  32:     0x7fe303cb04a0 - rt::unwind::try::try_fn::h1384674024000742916
  33:     0x7fe303671de8 - rust_try_inner
  34:     0x7fe303671dd5 - rust_try
  35:     0x7fe303cb0c3f - thunk::F.Invoke<A, R>::invoke::h5780663349966142752
  36:     0x7fe3035ec965 - sys::thread::thread_start::h4ab695857833a5dar8E
  37:     0x7fe2fd469373 - start_thread
  38:     0x7fe3031b727c - __clone
  39:                0x0 - <unknown>

Version

rustc 1.0.0-nightly (3b3bb0e68 2015-03-04) (built 2015-03-05)

I suppose that traits used in default implementations are not supposed to have any methods, the compiler should raise an error in an early phase (wf?) instead of ICEing in trans.

cc @nikomatsakis @flaper87

@jdm jdm added the I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ label Mar 5, 2015
@flaper87
Copy link
Contributor

flaper87 commented Mar 6, 2015

iiuggh, this is bad. Yeah, they are not supposed to have any methods. I'll take a look at this (hopefully in the next few days).

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

Successfully merging a pull request may close this issue.

3 participants