Skip to content

ICE OutputTypeParameterMismatch #29997

Closed
Closed
@frankmcsherry

Description

@frankmcsherry

The error is very long, and the example is not reduced (I tried, but the simple reduction worked ok, so no dice there). To reproduce, one can pull

frankmcsherry/differential-dataflow@2fa719e

and then cargo build --example cc. I'm on

Echidnatron% rustc --version
rustc 1.6.0-nightly (9303055f3 2015-11-19)

The same project ICEs on stable as well, but for a different reason (issue #29991; EDIT: Sorry, not actually this issue; rather, a different ICE that seems fixed in nightly).

I think the salient points are in the complaint

Sorts(ExpectedFound { 
    expected: differential_dataflow::collection::trace::DifferenceIterator<u32>, 
    found: <&differential_dataflow::collection::trace::Trace<u32, timely::progress::nested::product::Product<timely::progress::nested::product::Product<timely::progress::timestamp::RootTimestamp, u64>, u64>, u32, (collections::vec::Vec<core::option::Option<differential_dataflow::collection::trace::Offset>>, u64)> as differential_dataflow::collection::trace::TraceRef<u32, timely::progress::nested::product::Product<timely::progress::nested::product::Product<timely::progress::timestamp::RootTimestamp, u64>, u64>, u32>>::VIterator 
})

where it seems to be unhappy that it found a weird associated type rather than a DifferenceIterator<u32>. Of course, the associated type is that DifferenceIterator<u32>, which Rust knew at one point but seems to have lost track of, maybe? There is admittedly a bunch of horribleness going on with associated types, specifically faking out HKT for lifetimes through associated types of traits containing a lifetime implemented for references with that lifetime to the type in question. I can explain what it is doing if that helps, but given that it just ICEs differently in each release mode, maybe it's just time to delete it and try another way.

Full backtrace:

Echidnatron% cargo build --example cc
   Compiling differential-dataflow v0.0.1 (file:///Users/mcsherry/Projects/differential-dataflow)
src/operators/group.rs:276:29: 276:60 error: internal compiler error: Encountered error `OutputTypeParameterMismatch(Binder(<[closure@examples/cc.rs:71:27: 71:79] as core::ops::Fn<(&u32, core::iter::Peekable<differential_dataflow::iterators::coalesce::CoalesceIterator<differential_dataflow::iterators::merge::MergeIterator<<&differential_dataflow::collection::trace::Trace<u32, timely::progress::nested::product::Product<timely::progress::nested::product::Product<timely::progress::timestamp::RootTimestamp, u64>, u64>, u32, (collections::vec::Vec<core::option::Option<differential_dataflow::collection::trace::Offset>>, u64)> as differential_dataflow::collection::trace::TraceRef<u32, timely::progress::nested::product::Product<timely::progress::nested::product::Product<timely::progress::timestamp::RootTimestamp, u64>, u64>, u32>>::VIterator>>>, &mut collections::vec::Vec<(u32, i32)>)>>), Binder(<[closure@examples/cc.rs:71:27: 71:79] as core::ops::Fn<(&'static u32, core::iter::Peekable<differential_dataflow::iterators::coalesce::CoalesceIterator<differential_dataflow::iterators::merge::MergeIterator<differential_dataflow::collection::trace::DifferenceIterator<u32>>>>, &'static mut collections::vec::Vec<(u32, i32)>)>>), Sorts(ExpectedFound { expected: differential_dataflow::collection::trace::DifferenceIterator<u32>, found: <&differential_dataflow::collection::trace::Trace<u32, timely::progress::nested::product::Product<timely::progress::nested::product::Product<timely::progress::timestamp::RootTimestamp, u64>, u64>, u32, (collections::vec::Vec<core::option::Option<differential_dataflow::collection::trace::Offset>>, u64)> as differential_dataflow::collection::trace::TraceRef<u32, timely::progress::nested::product::Product<timely::progress::nested::product::Product<timely::progress::timestamp::RootTimestamp, u64>, u64>, u32>>::VIterator }))` selecting `Binder(<[closure@examples/cc.rs:71:27: 71:79] as core::ops::Fn<(&'static u32, core::iter::Peekable<differential_dataflow::iterators::coalesce::CoalesceIterator<differential_dataflow::iterators::merge::MergeIterator<differential_dataflow::collection::trace::DifferenceIterator<u32>>>>, &'static mut collections::vec::Vec<(u32, i32)>)>>)` during trans
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
thread 'rustc' panicked at 'Box<Any>', ../src/libsyntax/diagnostic.rs:175
stack backtrace:
   1:        0x10c6ff2d8 - sys::backtrace::tracing::imp::write::hed3a593bad2e5fa3Hqt
   2:        0x10c7053bf - panicking::log_panic::_<closure>::closure.39899
   3:        0x10c704e85 - panicking::log_panic::hb58e0c0eab041fc722w
   4:        0x10c6cdcb6 - sys_common::unwind::begin_unwind_inner::h04a0f5a988ff29c8fus
   5:        0x109ff092a - sys_common::unwind::begin_unwind::begin_unwind::h5224819670744734501
   6:        0x109ff08f2 - diagnostic::_<impl>::span_bug::hd2f1816c64c905211GB
   7:        0x109404a04 - session::_<impl>::span_bug::h20c03d11f84bf00aa5w
   8:        0x108d4ba6b - trans::common::fulfill_obligation::h47639f98fb7a544b3As
   9:        0x108d3c632 - trans::meth::trans_method_callee::hb7535cb5bac1bdebqGL
  10:        0x108dbcf43 - trans::callee::trans_call_inner::h15376225423506524332
  11:        0x108da643b - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  12:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  13:        0x108d7b231 - trans::controlflow::trans_stmt_semi::h99e627f0ee69235bpmw
  14:        0x108cf85ad - trans::controlflow::trans_block::h5ae6763586afd39alnw
  15:        0x108da6cf4 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  16:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  17:        0x108d7b231 - trans::controlflow::trans_stmt_semi::h99e627f0ee69235bpmw
  18:        0x108cf85ad - trans::controlflow::trans_block::h5ae6763586afd39alnw
  19:        0x108da57c9 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  20:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  21:        0x108de2d50 - trans::_match::trans_match_inner::h1cc439eb09421ca59cL
  22:        0x108da5751 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  23:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  24:        0x108cf88fb - trans::controlflow::trans_block::h5ae6763586afd39alnw
  25:        0x108da9603 - trans::expr::trans_rvalue_stmt_unadjusted::hb6e5ec9373e54768mDC
  26:        0x108cfc4d4 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  27:        0x108de2d50 - trans::_match::trans_match_inner::h1cc439eb09421ca59cL
  28:        0x108da5751 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  29:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  30:        0x108de5dca - trans::_match::mk_binding_alloca::h6244938181906574675
  31:        0x108cde11c - trans::base::init_local::h3234403b2a5b16368Th
  32:        0x108cf85d2 - trans::controlflow::trans_block::h5ae6763586afd39alnw
  33:        0x108da57c9 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  34:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  35:        0x108d7b231 - trans::controlflow::trans_stmt_semi::h99e627f0ee69235bpmw
  36:        0x108cf85ad - trans::controlflow::trans_block::h5ae6763586afd39alnw
  37:        0x108da57c9 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  38:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  39:        0x108de2d50 - trans::_match::trans_match_inner::h1cc439eb09421ca59cL
  40:        0x108da5751 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  41:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  42:        0x108cf88fb - trans::controlflow::trans_block::h5ae6763586afd39alnw
  43:        0x108da57c9 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  44:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  45:        0x108de2d50 - trans::_match::trans_match_inner::h1cc439eb09421ca59cL
  46:        0x108da5751 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  47:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  48:        0x108cf88fb - trans::controlflow::trans_block::h5ae6763586afd39alnw
  49:        0x108da9603 - trans::expr::trans_rvalue_stmt_unadjusted::hb6e5ec9373e54768mDC
  50:        0x108cfc4d4 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  51:        0x108cf88fb - trans::controlflow::trans_block::h5ae6763586afd39alnw
  52:        0x108da57c9 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  53:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  54:        0x108cf88fb - trans::controlflow::trans_block::h5ae6763586afd39alnw
  55:        0x108cf4b49 - trans::base::trans_closure::he7bc15b87b73571czHi
  56:        0x108d44f34 - trans::closure::trans_closure_expr::hd80f3be42fb666449nr
  57:        0x108da78ef - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  58:        0x108da3ecd - trans::expr::trans_unadjusted::hd9a0a0a32fb6750c6dC
  59:        0x108cc7759 - trans::expr::trans::h08ef89894788bc6axJB
  60:        0x108d36027 - trans::callee::trans_args::h2fba99c86f0aa735Bdp
  61:        0x108d3ba4c - trans::callee::trans_call_inner::h1502485283949612030
  62:        0x108da4f16 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  63:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  64:        0x108cf88fb - trans::controlflow::trans_block::h5ae6763586afd39alnw
  65:        0x108cf4b49 - trans::base::trans_closure::he7bc15b87b73571czHi
  66:        0x108cf8f35 - trans::base::trans_fn::h2b637b637f2d5b99lRi
  67:        0x108d28065 - trans::callee::trans_fn_ref_with_substs::h33984ac7df52baf3kCo
  68:        0x108d3cca2 - trans::meth::trans_method_callee::hb7535cb5bac1bdebqGL
  69:        0x108d3a8eb - trans::callee::trans_call_inner::h1502485283949612030
  70:        0x108da4f16 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  71:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  72:        0x108cf88fb - trans::controlflow::trans_block::h5ae6763586afd39alnw
  73:        0x108cf4b49 - trans::base::trans_closure::he7bc15b87b73571czHi
  74:        0x108cf8f35 - trans::base::trans_fn::h2b637b637f2d5b99lRi
  75:        0x108d28065 - trans::callee::trans_fn_ref_with_substs::h33984ac7df52baf3kCo
  76:        0x108d3cca2 - trans::meth::trans_method_callee::hb7535cb5bac1bdebqGL
  77:        0x108d3a8eb - trans::callee::trans_call_inner::h1502485283949612030
  78:        0x108da4f16 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  79:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  80:        0x108cf88fb - trans::controlflow::trans_block::h5ae6763586afd39alnw
  81:        0x108da57c9 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  82:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  83:        0x108cf88fb - trans::controlflow::trans_block::h5ae6763586afd39alnw
  84:        0x108cf4b49 - trans::base::trans_closure::he7bc15b87b73571czHi
  85:        0x108d44f34 - trans::closure::trans_closure_expr::hd80f3be42fb666449nr
  86:        0x108da78ef - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  87:        0x108da3ecd - trans::expr::trans_unadjusted::hd9a0a0a32fb6750c6dC
  88:        0x108cc7759 - trans::expr::trans::h08ef89894788bc6axJB
  89:        0x108d36027 - trans::callee::trans_args::h2fba99c86f0aa735Bdp
  90:        0x108d3ba4c - trans::callee::trans_call_inner::h1502485283949612030
  91:        0x108da4f16 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
  92:        0x108cfc363 - trans::expr::trans_into::hd912cb89d59a5a9a9CB
  93:        0x108cf88fb - trans::controlflow::trans_block::h5ae6763586afd39alnw
  94:        0x108cf4b49 - trans::base::trans_closure::he7bc15b87b73571czHi
  95:        0x108cf8f35 - trans::base::trans_fn::h2b637b637f2d5b99lRi
  96:        0x108d27e4d - trans::callee::trans_fn_ref_with_substs::h33984ac7df52baf3kCo
  97:        0x108d25e5f - trans::callee::trans_fn_ref::h74554fe71b470393yro
  98:        0x108d209fa - trans::callee::trans::h9f2d9e9e69d424344fo
  99:        0x108d38e60 - trans::callee::trans_call_inner::h2899170165357686685
  100:        0x108da6381 - trans::expr::trans_rvalue_dps_unadjusted::hc66680a0fe7728dfdLC
 ... <frames omitted>

Could not compile `differential-dataflow`.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-mediumMedium priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions