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 on recursive type #4363

Closed
davidhalperin opened this issue Jan 6, 2013 · 19 comments
Closed

ICE on recursive type #4363

davidhalperin opened this issue Jan 6, 2013 · 19 comments
Labels
A-codegen Area: Code generation E-hard Call for participation: Hard difficulty. Experience needed to fix: A lot. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ P-medium Medium priority

Comments

@davidhalperin
Copy link
Contributor

enum FingerTree<A> {
    Empty,
    Single(A),
    Deep(Node<A>)
}

struct Node<A> {
    count: int,
    front: Digit<A>,
    inner: ~FingerTree<(A,A)>,
    back: Digit<A>
}

struct Digit<A> {
    count: int,
    content: [Option<A>, ..4]
}

fn FingerTree<A>() -> FingerTree<A> { Empty }

Note: inner: ~FingerTree<(A,A)>, seems to be the problematic bit. If I make it inner: ~FingerTree<A>, it will compile.

rust: task 7f01a0105d80 ran out of stack
/usr/local/bin/../lib/librustrt.so(_ZN9rust_task13begin_failureEPKcS1_m+0x4b)[0x7f01a68cf4fb]
/usr/local/bin/../lib/librustrt.so(_ZN9rust_task9new_stackEm+0x158)[0x7f01a68cf9c8]
/usr/local/bin/../lib/librustrt.so(+0x2d0f9)[0x7f01a68e30f9]
/usr/local/bin/../lib/librustrt.so(upcall_new_stack+0x280)[0x7f01a68d3060]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x782792)[0x7f01a7294792]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty14__extensions__10meth_3566210iter_bytes15_abfbbb3dea17df3_05E+0x85)[0x7f01a6ddda35]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2ddcb7)[0x7f01a6defcb7]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2db57d)[0x7f01a6ded57d]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty14fold_sty_to_ty13_f379ae3486733_05E+0xa5)[0x7f01a6df4985]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty19fold_regions_and_ty17_3db05a7d86315db93_05E+0x4cb)[0x7f01a6df668b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2e6c54)[0x7f01a6df8c54]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x112a01)[0x7f01a6c24a01]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2e50ea)[0x7f01a6df70ea]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty19fold_regions_and_ty17_3db05a7d86315db93_05E+0x26a)[0x7f01a6df642a]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2e6c54)[0x7f01a6df8c54]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2e2b64)[0x7f01a6df4b64]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty14fold_sty_to_ty13_f379ae3486733_05E+0x5a)[0x7f01a6df493a]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty19fold_regions_and_ty17_3db05a7d86315db93_05E+0x4cb)[0x7f01a6df668b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x2e6c54)[0x7f01a6df8c54]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty5subst17_6886f1198945c8923_05E+0x2fb)[0x7f01a6cc770b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty17lookup_field_type17_20ec4ec279466ae73_05E+0x1bb)[0x7f01a6d24e6b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x30b842)[0x7f01a6e1d842]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x5e1)[0x7f01a6e00311]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x3bd)[0x7f01a6e000ed]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x679)[0x7f01a6e003a9]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN6middle2ty13type_kind_ext17_a99988bff92221c13_05E+0x2fb)[0x7f01a6e0002b]
error: internal compiler error: unexpected failure
note: the compiler hit an unexpected failure path. this is a bug
note: try running with RUST_LOG=rustc=1,::rt::backtrace to get further details and report the results to github.com/mozilla/rust/issues
rust: task failed at 'explicit failure', /home/david/rust/src/librustc/rustc.rc:425
/usr/local/bin/../lib/librustrt.so(_ZN9rust_task13begin_failureEPKcS1_m+0x4b)[0x7f01a68cf4fb]
/usr/local/bin/../lib/librustrt.so(+0x2d0f9)[0x7f01a68e30f9]
/usr/local/bin/../lib/librustrt.so(upcall_fail+0x1b0)[0x7f01a68d1cb0]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0xa2dbb)[0x7f01a807ddbb]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x37b6e)[0x7f01a8012b6e]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0xb34d0)[0x7f01a808e4d0]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN7monitor17_3dc9d53d274031c13_05E+0x29de)[0x7f01a729153e]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(+0x7827fc)[0x7f01a72947fc]
/usr/local/bin/../lib/librustc-c84825241471686d-0.5.so(_ZN4main16_2fb85b4a659c4103_05E+0x86)[0x7f01a7294406]
/usr/local/bin/../lib/librustrt.so(_Z18task_start_wrapperP10spawn_args+0x24)[0x7f01a68cfd64]
rust: domain main @0xe0f1f0 root task failed
rust: task failed at 'killed', /home/david/rust/src/libcore/task/mod.rs:570
/usr/local/bin/../lib/librustrt.so(_ZN9rust_task13begin_failureEPKcS1_m+0x4b)[0x7f01a68cf4fb]
/usr/local/bin/../lib/librustrt.so(+0x2d0f9)[0x7f01a68e30f9]
/usr/local/bin/../lib/librustrt.so(upcall_fail+0x1b0)[0x7f01a68d1cb0]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0xa2dbb)[0x7f01a807ddbb]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x37b6e)[0x7f01a8012b6e]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(_ZN4task5yield17_56812fae66173efd3_05E+0xbd)[0x7f01a803fe9d]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x91c56)[0x7f01a806cc56]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0xb34d0)[0x7f01a808e4d0]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(_ZN7private11weaken_task17_ababfc7d1239606c3_05E+0xd9)[0x7f01a806ca99]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x9198b)[0x7f01a806c98b]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x8c563)[0x7f01a8067563]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0x7c29f)[0x7f01a805729f]
/usr/local/bin/../lib/libcore-c3ca5d77d81b46c1-0.5.so(+0xb34d0)[0x7f01a808e4d0]
/usr/local/bin/../lib/librustrt.so(_Z18task_start_wrapperP10spawn_args+0x24)[0x7f01a68cfd64]
@catamorphism
Copy link
Contributor

Thanks for the report. This is a known issue: #4218 -- but keep the bug reports coming, it's way better to deal with some duplicates than to not know about a bug :-)

@catamorphism
Copy link
Contributor

Sorry, I was reading too fast. I think this is a different bug. I'll look at it more carefully.

@ghost ghost assigned catamorphism Jan 7, 2013
@catamorphism
Copy link
Contributor

I thought at first that the code here should be accepted, but no reflection, I think it shouldn't be. Instantiating FingerTree with (A, A) means that monomorphizing any function using a FingerTree will require an infinitely large type. The difference with A instead of (A, A) is that you can re-use the instance FingerTree<A>. Let me know if that's clear.

With that said, of course, this should be a proper type error and not an ICE.

@catamorphism
Copy link
Contributor

@nikomatsakis - I'd appreciate a second opinion here. I still think the type shouldn't be allowed, but I'm not sure I can explain why. It's definitely instantiable, and if I change (A, A) to ~(A, A), I think it should be representable too. But the version with the ~ also causes infinite recursion. So I'm not sure what check is needed to disallow this.

@catamorphism
Copy link
Contributor

I'm thinking that an additional check, enforcing the rule "If types A and B are part of a mutually recursive cycle of types, then B must be used monomorphically when it occurs within A, and vice versa", would disallow this (thus, the program here would be rejected, but it would be accepted with (A, A) changed to A). However, adding a third check when we already check instantiability and representability makes me a little uncomfortable... is there a more general rule?

@nikomatsakis
Copy link
Contributor

Interesting. I hadn't thought about this possibility for infinite type generation, though it seems obvious in retrospect. @catamorphism I'm not sure what the best rule is. I think the type is both instantiable and representable as is (considering each type independently, the size of any given type is computable for a given A). This is more of a monomorphizable criterion. There is a similar problem in function generation that we address by enforcing a maximum expansion depth in trans (which I've never been happy with, partly because I feel trans ought to be infallible). Still, it is rather tricky to summarize the correct criteria. If I understand it correctly, I think the one you proposed is too strict.

Consider something like:

struct A<T> {
    b: @B<T>
}
struct B<T> {
    a: @A<int>,
    b: @A<T>
}

Ignoring the question of instantiability, which can be addressed by adding some Option<> types, I feel like this ought to be legal. And yet B does not use A monomorphically. It seems like the rule is that when A<B...Z> transitively includes a reference to a type A<B'...Z'>, for each type parameter T in B...Z and T' in B'...Z' either T=T' or T does not include T'. I think this is the correct rule, but I would want to try and prove it. The basic idea is that the only way to generate an infinite type expansion is to keep building compound types that include the input types. It feels like there is a simple inductive argument that can make this case.

I would like to replace the trans check with a similar test. I remember trying to think of a good rule for trans and getting frustrated because any rule I came up with amounted to tracing the call graph in a fairly complex and deep way---basically redoing the work trans was already doing. The simplest thing of course for this case would be to do what trans does: expand the type and keep a set of types we've seen. If the recursion depth ever grows too high then we abort.

As for the annoyance of having three distinct admission tests for types, I hear you. I was already annoyed that there seemed to be a need for two such tests. But they all test different things and I don't see an obvious way to combine them.

@bblum
Copy link
Contributor

bblum commented Mar 3, 2013

Not sure if a more minimal example is needed, but here's one:

struct X {
    x: Option<X>,
}

fn main() { }

(If you remove the option, it errors, telling you to use an option.)

@graydon
Copy link
Contributor

graydon commented Mar 22, 2013

reproduced on 2013-03-22

@graydon
Copy link
Contributor

graydon commented Mar 22, 2013

non-critical for 0.6, de-milestoning

@ILyoan
Copy link
Contributor

ILyoan commented May 8, 2013

reproduced on d35eb6e

@catamorphism
Copy link
Contributor

Nominating for milestone 1, well-defined. This is an annoying edge case, but I think it's important to specify what type definitions are acceptable.

@graydon
Copy link
Contributor

graydon commented Aug 1, 2013

accepted for well-defined milestone

@isabelmu
Copy link
Contributor

isabelmu commented Feb 1, 2014

@bblum's example is actually fixed by adding a non-representable error for structs (pull request #11839, issue #3779). Here is a new minimal example for this issue, usable as a test:

struct Foo<A> {
  x: Option<~Foo<(A, A)>>
}
fn main() { let y: Foo<int> = Foo { x: None }; }

Equally:

enum Foo<A> { Empty,
              Deep(~Foo<(A,A)>) }
fn main() { let y: Foo<int> = Empty; }

@pcwalton
Copy link
Contributor

Nominating for removal from 1.0 milestone, as this can be fixed backwards compatibly.

@brson brson removed the I-nominated label Jun 19, 2014
@brson brson removed this from the 1.0 milestone Jun 19, 2014
@brson
Copy link
Contributor

brson commented Jun 19, 2014

P-high, not 1.0

@Twisol
Copy link

Twisol commented Jan 4, 2015

This no longer causes an ICE. (Code modified slightly to match current syntax, disable style warnings, and add a main.)

$ rustc foo.rs
$ rustc --verbose --version
rustc 0.13.0-nightly (c6c786671 2015-01-04 00:50:59 +0000)
binary: rustc
commit-hash: c6c786671d692d7b13c2e5c68a53001327b4b125
commit-date: 2015-01-04 00:50:59 +0000
host: x86_64-apple-darwin
release: 0.13.0-nightly
#![allow(dead_code, non_snake_case)]

enum FingerTree<A> {
    Empty,
    Single(A),
    Deep(Node<A>)
}

struct Node<A> {
    count: int,
    front: Digit<A>,
    inner: Box<FingerTree<(A,A)>>,
    back: Digit<A>
}

struct Digit<A> {
    count: int,
    content: [Option<A>; 4]
}

fn FingerTree<A>() -> FingerTree<A> { FingerTree::Empty }

fn main() {}

@steveklabnik
Copy link
Member

Thanks @Twisol !

@goffrie
Copy link
Contributor

goffrie commented Feb 8, 2015

I can still make rustc overflow its stack by using the recursive type:

fn main() {
    let _ = FingerTree::Deep(Node { count: 0,
        front: Digit { count: 0, content: [None, None, None, None] },
        inner: Box::new(FingerTree::Single((1, 2))),
        back: Digit { count: 0, content: [None, None, None, None] }}
    );
}
% rustc wow.rs

thread 'rustc' has overflowed its stack
zsh: illegal hardware instruction (core dumped)  rustc wow.rs

@pnkfelix
Copy link
Member

The compiler is currently infinite-looping (but not, AFAICT, stack-overflowing) on the @goffrie example.

Actually maybe I'll open a fresh issue to track this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-codegen Area: Code generation E-hard Call for participation: Hard difficulty. Experience needed to fix: A lot. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ P-medium Medium priority
Projects
None yet
Development

No branches or pull requests