Skip to content

ICE: TypeParameterDef lookup failure in tc_ty #16643

Description

@kmcallister

Extracted from an issue I encountered upgrading html5ever to Rust master.

foo.rs:

#![crate_type="lib"]

pub trait TokenSink {
    fn process_token(&self, token: ());
}

pub struct TreeBuilder<Handle> {
    pub open_elems: Vec<Handle>,
}

impl<Handle> TokenSink for TreeBuilder<Handle> {
    fn process_token(&self, token: ()) {
        match token {
            _ => for x in self.open_elems.iter() { },
        }
    }
}

bar.rs:

extern crate foo;

use foo::{TreeBuilder, TokenSink};

fn main() {
    let tb: TreeBuilder<uint> = TreeBuilder {
        open_elems: vec!(),
    };
    tb.process_token(());
}

It seems like more or less every part of this code is necessary to hit the bug. Here's the result:

$ rustc -v
rustc 0.12.0-pre (e11cb5bba 2014-08-20 16:25:53 +0000)

$ rustc foo.rs

$ RUST_BACKTRACE=1 rustc -L. bar.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://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
task 'rustc' failed at 'TypeParameterDef lookup failed for ParamTy { space: TypeSpace, idx: 0, def_id: DefId { krate: 0, node: 598 } }', /home/keegan/rust/src/librustc/middle/ty.rs:2294

stack backtrace:
   1:     0x7f12658b8a20 - rt::backtrace::imp::write::hd65c9804462fb8dcpxr
   2:     0x7f12658bb3e0 - failure::on_fail::hb34a0faf07b986176Sr
   3:     0x7f126a2ed030 - unwind::begin_unwind_inner::hfc98b793f314ea06pie
   4:     0x7f126a2ecb30 - unwind::begin_unwind_fmt::he2958ada65c1d41fPfe
   5:     0x7f126b53a670 - middle::ty::type_contents::tc_ty::h98abbbfc60a7d554waG
   6:     0x7f126b53a670 - middle::ty::type_contents::tc_ty::h98abbbfc60a7d554waG
   7:     0x7f126af18a50 - middle::ty::type_contents::h1b7aa404dfcb34d1r9F
   8:     0x7f126ae63e00 - middle::ty::type_moves_by_default::h8602de8843dbf54dcrG
   9:     0x7f126ada8ac0 - middle::expr_use_visitor::copy_or_move::h0d63d7bcb9e1b5295zv
  10:     0x7f126b417b50 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::walk_pat::closure.118640
  11:     0x7f126b412d60 - middle::mem_categorization::MemCategorizationContext<'t, TYPER>::cat_pattern::h1612630838218560840
  12:     0x7f126b4127b0 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::walk_pat::h17289765959183890288
  13:     0x7f126b4059c0 - middle::expr_use_visitor::ExprUseVisitor<'d, 't, TYPER>::walk_expr::h18108696973096423772
  14:     0x7f126b405430 - middle::trans::_match::is_discr_reassigned::ha03b6a6c6923b1b8MQh
  15:     0x7f126b41ab90 - middle::trans::_match::create_bindings_map::h5a49a20efb57c753jUh
  16:     0x7f126b4216e0 - middle::trans::_match::trans_match_inner::closure.118687
  17:     0x7f126b420630 - iter::Map<'a, A, B, T>::do_map::h4328457525798762931
  18:     0x7f126b4205c0 - iter::Map<'a, A, B, T>.Iterator<B>::next::h14044686831652860284
  19:     0x7f126b420570 - iter::ByRef<'a, T>.Iterator<A>::next::h7270709296560143036
  20:     0x7f126b420100 - vec::Vec<T>.FromIterator<T>::from_iter::h13079317938292968767
  21:     0x7f126b4200a0 - iter::Iterator::collect::h10157566076738839025
  22:     0x7f126b404a90 - middle::trans::_match::trans_match_inner::h3199dcbd82cb2abfAXh
  23:     0x7f126b2df4c0 - middle::trans::_match::trans_match::h1d773729c0952ac6XPh
  24:     0x7f126b2c5b40 - middle::trans::expr::trans_rvalue_dps_unadjusted::h68c42f27e53f341euG3
  25:     0x7f126b2610c0 - middle::trans::expr::trans_into::h02f395bc1df027d3QL2
  26:     0x7f126b2617e0 - middle::trans::controlflow::trans_block::h05731a7862534d438MY
  27:     0x7f126b3b30f0 - middle::trans::base::trans_closure::h761f159ac0f5b1d5Zve
  28:     0x7f126b24a4a0 - middle::trans::base::trans_fn::h7f652b8e491f5fceNIe
  29:     0x7f126b24ad10 - middle::trans::monomorphize::monomorphic_fn::h444eefff2433fcd158X
  30:     0x7f126b2a3ed0 - middle::trans::callee::trans_fn_ref_with_vtables::hbc4955abe0c5e25axp1
  31:     0x7f126b2a15b0 - middle::trans::callee::trans_fn_ref::h8cbdc53077e7d865za1
  32:     0x7f126b273f50 - middle::trans::meth::trans_method_callee::hd255bf18a4fec4edJhk
  33:     0x7f126b2b0d00 - middle::trans::callee::trans_method_call::closure.115194
  34:     0x7f126b271930 - middle::trans::callee::trans_call_inner::h3d3ba09198f29bc9nR1
  35:     0x7f126b2b05a0 - middle::trans::callee::trans_method_call::h20b5c2a1e6f706d1BM1
  36:     0x7f126b2c5b40 - middle::trans::expr::trans_rvalue_dps_unadjusted::h68c42f27e53f341euG3
  37:     0x7f126b2610c0 - middle::trans::expr::trans_into::h02f395bc1df027d3QL2
  38:     0x7f126b2601f0 - middle::trans::controlflow::trans_stmt_semi::h4399908e9bfb4a53eMY
  39:     0x7f126b25ee40 - middle::trans::controlflow::trans_stmt::h814b238e9dbd031fXHY
  40:     0x7f126b2617e0 - middle::trans::controlflow::trans_block::h05731a7862534d438MY
  41:     0x7f126b3b30f0 - middle::trans::base::trans_closure::h761f159ac0f5b1d5Zve
  42:     0x7f126b24a4a0 - middle::trans::base::trans_fn::h7f652b8e491f5fceNIe
  43:     0x7f126b246590 - middle::trans::base::trans_item::h9c3deb60b9a1469bO1e
  44:     0x7f126b3c0b10 - middle::trans::base::trans_mod::hdc94d62cb0c66b22X5e
  45:     0x7f126b3d3920 - middle::trans::base::trans_crate::h2bbe93d38696f05f2Wf
  46:     0x7f126bc77620 - driver::driver::phase_4_translate_to_llvm::closure.136750
  47:     0x7f126bc76fc0 - util::common::time::h4601779646530965728
  48:     0x7f126bbb8380 - driver::driver::phase_4_translate_to_llvm::hcbbe57487cf47912Y1z
  49:     0x7f126bbb2860 - driver::driver::compile_input::hd5ac6510c8591e16pEz
  50:     0x7f126bcbc170 - driver::run_compiler::hfb28193ee56e89e2jcD
  51:     0x7f126bcbc040 - driver::main_args::closure.137687
  52:     0x7f126bcee7f0 - task::TaskBuilder<S>::try_future::closure.138848
  53:     0x7f126bcee3a0 - task::TaskBuilder<S>::spawn_internal::closure.138825
  54:     0x7f126a715d90 - task::spawn_opts::closure.8331
  55:     0x7f126a2ec3a0 - unwind::try::try_fn::__rust_abi
  56:     0x7f126a2ebdd0 - unwind::try::try_fn::hd559f7a319afd50b38d
  57:     0x7f126a3a63d0 - rust_try_inner
  58:     0x7f126a3a63c0 - rust_try
  59:     0x7f126a2e6250 - unwind::try::ha1bfe3bb2c20efd2F6d
  60:     0x7f126a2e5d50 - task::Task::run::hd76056204f6bfc11Zcd
  61:     0x7f126a7159c0 - task::spawn_opts::closure.8277
  62:     0x7f126a2ea4f0 - thread::thread_start::__rust_abi
  63:     0x7f126a2ea4e0 - thread::thread_start::hc1291c833034ff64LBd
  64:     0x7f1264b53fe0 - start_thread
  65:     0x7f1269fa0019 - __clone
  66:                0x0 - <unknown>

(This has my modifications to give a marginally more useful error message.)

The failure happens when looking up a type parameter DefId when handling the ty_param case.

What I actually get building html5ever is a failure of the preceding assertion regarding crate IDs. I didn't find a small reproducer for that assertion failure, but this bug is likely to be related.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions