Description
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`.