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

Using impl trait across crates results in linker error #35870

Closed
jplatte opened this Issue Aug 21, 2016 · 12 comments

Comments

Projects
None yet
7 participants
@jplatte
Copy link
Contributor

jplatte commented Aug 21, 2016

I have a small test case that doesn't work in its current state (split into two crates), producing a linker error; but works when everything is moved into one crate: https://github.com/jplatte/rust-impl-trait-across-crates

Error:

   Compiling bin v0.1.0 (file:///home/jplatte/Projekte/rust-impl-trait-across-crates/bin)
error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/jplatte/Projekte/rust-impl-trait-across-crates/bin/target/debug/bin.0.o" "-o" "/home/jplatte/Projekte/rust-impl-trait-across-crates/bin/target/debug/bin" "-Wl,--gc-sections" "-pie" "-nodefaultlibs" "-L" "/home/jplatte/Projekte/rust-impl-trait-across-crates/bin/target/debug/deps" "-L" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "-Wl,-Bdynamic" "/home/jplatte/Projekte/rust-impl-trait-across-crates/bin/target/debug/deps/liblib.rlib" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-411f48d3.rlib" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-411f48d3.rlib" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-411f48d3.rlib" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-411f48d3.rlib" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcollections-411f48d3.rlib" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_unicode-411f48d3.rlib" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-411f48d3.rlib" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-411f48d3.rlib" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-411f48d3.rlib" "/home/jplatte/.multirust/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-411f48d3.rlib" "-l" "dl" "-l" "pthread" "-l" "gcc_s" "-l" "pthread" "-l" "c" "-l" "m" "-l" "rt" "-l" "util" "-l" "compiler-rt"
  = note: /home/jplatte/Projekte/rust-impl-trait-across-crates/bin/target/debug/bin.0.o: In function `{{inlined-root}}::next<core::slice::Iter<u32>,closure>':
/buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/obj/../src/libcore/iter/mod.rs:953: undefined reference to `lib::Thing::even_elems::_$u7b$$u7b$closure$u7d$$u7d$::h337a400b104ae277'
collect2: error: ld returned 1 exit status


error: aborting due to previous error

error: Could not compile `bin`.

To learn more, run the command again with --verbose.
@eddyb

This comment has been minimized.

Copy link
Member

eddyb commented Aug 21, 2016

cc @rust-lang/compiler I have seen some warnings along these lines, that we need to change what we internalize to not include what impl Trait "exports".

@jonas-schievink

This comment has been minimized.

Copy link
Member

jonas-schievink commented Aug 21, 2016

Due to this check, this can be worked around by marking even_elems as #[inline].

It looks like the actual issue is that privacy can't mark the returned type as reachable, since it's not yet known when privacy is checked. Normally, the privacy checker marks all types used in interfaces as reachable. This information is then used for computing the set of externally reachable symbols (which are then excluded from being internalized).

@eddyb

This comment has been minimized.

Copy link
Member

eddyb commented Aug 21, 2016

@jonas-schievink That's syntactical, we should be able to make it simpler by running it after typeck.

@petrochenkov

This comment has been minimized.

Copy link
Contributor

petrochenkov commented Aug 21, 2016

@eddyb

That's syntactical, we should be able to make it simpler by running it after typeck.

I don't think AccessLevel::Reachable* is appropriate for private types leaked through impl Trait, it's more or less public, for example Reachable items require stability attributes + lints like missing copy/debug work on them.
You'd have to add one more AccessLevel for "public for linkage purpose only" items.

*That FIXME is wrong.

@jplatte

This comment has been minimized.

Copy link
Contributor Author

jplatte commented Aug 21, 2016

@jonas-schievink Thanks for providing a workaround! :)

eddyb added a commit to eddyb/rust that referenced this issue Aug 22, 2016

jonathandturner added a commit to jonathandturner/rust that referenced this issue Aug 22, 2016

jonathandturner added a commit to jonathandturner/rust that referenced this issue Aug 22, 2016

bors added a commit that referenced this issue Nov 24, 2016

Auto merge of #37676 - eddyb:lazy-7, r=nikomatsakis
[7/n] rustc: desugar UFCS in HIR and don't use DefMap for associated resolutions.

_This is part of a series ([prev](#37412) | [next](#37688)) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments._

<hr>

Previously, a path like `T::Assoc::method`, while equivalent to `<<T>::Assoc>::method`, wasn't desugared in any way at the HIR level and everything inspecting it had to either deal with knowing only `T` (before typeck) or knowing only the definition of `method` (after typeck).
Such a path also had only one `NodeId` and associated resolution during typeck modified `DefMap`, in a way that would be hard for incremental recompilation to track, and inconvenient for partial type conversions from HIR to `Ty`, which are required to break faux-cycles in on-demand type collection.

The desugarings performed by this PR are as follows:
* `use a::{b,c};` is flattened to `use a as _; use a::b; use a::c;`
  * as resolution is complete, `use a as _;` doesn't do anything, except get checked for stability
* `Vec::new` (an expression) becomes `Vec<..>::new<..>`, to distinguish it from `<Vec>::new<..>`
  * the "infer all parameters" `<..>` form is internal and not even pretty-printed
  * used when there are no type parameters at all, in an expression or pattern path segment
* `T::A::B` becomes `<<T>::A>::B` in a type, and `<<T<..>>::A<..>>::B<..>` in an expression/pattern
  * one additional `hir::Ty` node is created for each prefix, starting with the fully-resolved type (`T`) and extending it with each segment (e.g. `<T>::A`)
* fully-resolved paths contain their `Def` in HIR, getting rid of the `DefMap` and absolving incremental recompilation of needing to manually look up nodes to handle that side information

Not keeping the `DefMap` around meant that associated resolutions had to be stored somewhere else:
* expressions and patterns use a new `NodeId -> Def` map in `ty::Tables`
  * compatible with the future per-body (constant / `fn` / closure) `Tables`
* types are accessible via `Ty` and the usual per-item generics / predicates / type
  * `rustdoc` and `save-analysis` are the only situations which insist on mapping syntactical types to semantical ones, or at least understand the resolution of associated types, therefore the type conversion cache, i.e. a `NodeId -> Ty` map, is exposed by typeck for this purpose
  * stability had to be split into a pass that runs on HIR and checks the results of name resolution, and impromptu checks triggered by `typeck` for associated paths, methods, fields, etc.
  * privacy using semantic types results in accurate reachability for `impl Trait`, which fixes #35870, and thorough introspection of associated types, which may allow relaxing private-in-public checking on bounds, while keeping the intended ban on projections with private type parameters

cc @petrochenkov

bors added a commit that referenced this issue Nov 25, 2016

Auto merge of #37676 - eddyb:lazy-7, r=nikomatsakis
[7/n] rustc: desugar UFCS in HIR and don't use DefMap for associated resolutions.

_This is part of a series ([prev](#37412) | [next](#37688)) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments._

<hr>

Previously, a path like `T::Assoc::method`, while equivalent to `<<T>::Assoc>::method`, wasn't desugared in any way at the HIR level and everything inspecting it had to either deal with knowing only `T` (before typeck) or knowing only the definition of `method` (after typeck).
Such a path also had only one `NodeId` and associated resolution during typeck modified `DefMap`, in a way that would be hard for incremental recompilation to track, and inconvenient for partial type conversions from HIR to `Ty`, which are required to break faux-cycles in on-demand type collection.

The desugarings performed by this PR are as follows:
* `use a::{b,c};` is flattened to `use a as _; use a::b; use a::c;`
  * as resolution is complete, `use a as _;` doesn't do anything, except get checked for stability
* `Vec::new` (an expression) becomes `Vec<..>::new<..>`, to distinguish it from `<Vec>::new<..>`
  * the "infer all parameters" `<..>` form is internal and not even pretty-printed
  * used when there are no type parameters at all, in an expression or pattern path segment
* `T::A::B` becomes `<<T>::A>::B` in a type, and `<<T<..>>::A<..>>::B<..>` in an expression/pattern
  * one additional `hir::Ty` node is created for each prefix, starting with the fully-resolved type (`T`) and extending it with each segment (e.g. `<T>::A`)
* fully-resolved paths contain their `Def` in HIR, getting rid of the `DefMap` and absolving incremental recompilation of needing to manually look up nodes to handle that side information

Not keeping the `DefMap` around meant that associated resolutions had to be stored somewhere else:
* expressions and patterns use a new `NodeId -> Def` map in `ty::Tables`
  * compatible with the future per-body (constant / `fn` / closure) `Tables`
* types are accessible via `Ty` and the usual per-item generics / predicates / type
  * `rustdoc` and `save-analysis` are the only situations which insist on mapping syntactical types to semantical ones, or at least understand the resolution of associated types, therefore the type conversion cache, i.e. a `NodeId -> Ty` map, is exposed by typeck for this purpose
  * stability had to be split into a pass that runs on HIR and checks the results of name resolution, and impromptu checks triggered by `typeck` for associated paths, methods, fields, etc.
  * privacy using semantic types results in accurate reachability for `impl Trait`, which fixes #35870, and thorough introspection of associated types, which may allow relaxing private-in-public checking on bounds, while keeping the intended ban on projections with private type parameters

cc @petrochenkov

bors added a commit that referenced this issue Nov 25, 2016

Auto merge of #37676 - eddyb:lazy-7, r=nikomatsakis
[7/n] rustc: desugar UFCS in HIR and don't use DefMap for associated resolutions.

_This is part of a series ([prev](#37412) | [next](#37688)) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments._

<hr>

Previously, a path like `T::Assoc::method`, while equivalent to `<<T>::Assoc>::method`, wasn't desugared in any way at the HIR level and everything inspecting it had to either deal with knowing only `T` (before typeck) or knowing only the definition of `method` (after typeck).
Such a path also had only one `NodeId` and associated resolution during typeck modified `DefMap`, in a way that would be hard for incremental recompilation to track, and inconvenient for partial type conversions from HIR to `Ty`, which are required to break faux-cycles in on-demand type collection.

The desugarings performed by this PR are as follows:
* `use a::{b,c};` is flattened to `use a as _; use a::b; use a::c;`
  * as resolution is complete, `use a as _;` doesn't do anything, except get checked for stability
* `Vec::new` (an expression) becomes `Vec<..>::new<..>`, to distinguish it from `<Vec>::new<..>`
  * the "infer all parameters" `<..>` form is internal and not even pretty-printed
  * used when there are no type parameters at all, in an expression or pattern path segment
* `T::A::B` becomes `<<T>::A>::B` in a type, and `<<T<..>>::A<..>>::B<..>` in an expression/pattern
  * one additional `hir::Ty` node is created for each prefix, starting with the fully-resolved type (`T`) and extending it with each segment (e.g. `<T>::A`)
* fully-resolved paths contain their `Def` in HIR, getting rid of the `DefMap` and absolving incremental recompilation of needing to manually look up nodes to handle that side information

Not keeping the `DefMap` around meant that associated resolutions had to be stored somewhere else:
* expressions and patterns use a new `NodeId -> Def` map in `ty::Tables`
  * compatible with the future per-body (constant / `fn` / closure) `Tables`
* types are accessible via `Ty` and the usual per-item generics / predicates / type
  * `rustdoc` and `save-analysis` are the only situations which insist on mapping syntactical types to semantical ones, or at least understand the resolution of associated types, therefore the type conversion cache, i.e. a `NodeId -> Ty` map, is exposed by typeck for this purpose
  * stability had to be split into a pass that runs on HIR and checks the results of name resolution, and impromptu checks triggered by `typeck` for associated paths, methods, fields, etc.
  * privacy using semantic types results in accurate reachability for `impl Trait`, which fixes #35870, and thorough introspection of associated types, which may allow relaxing private-in-public checking on bounds, while keeping the intended ban on projections with private type parameters

cc @petrochenkov

bors added a commit that referenced this issue Nov 25, 2016

Auto merge of #37676 - eddyb:lazy-7, r=nikomatsakis
[7/n] rustc: desugar UFCS in HIR and don't use DefMap for associated resolutions.

_This is part of a series ([prev](#37412) | [next](#37688)) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments._

<hr>

Previously, a path like `T::Assoc::method`, while equivalent to `<<T>::Assoc>::method`, wasn't desugared in any way at the HIR level and everything inspecting it had to either deal with knowing only `T` (before typeck) or knowing only the definition of `method` (after typeck).
Such a path also had only one `NodeId` and associated resolution during typeck modified `DefMap`, in a way that would be hard for incremental recompilation to track, and inconvenient for partial type conversions from HIR to `Ty`, which are required to break faux-cycles in on-demand type collection.

The desugarings performed by this PR are as follows:
* `use a::{b,c};` is flattened to `use a as _; use a::b; use a::c;`
  * as resolution is complete, `use a as _;` doesn't do anything, except get checked for stability
* `Vec::new` (an expression) becomes `Vec<..>::new<..>`, to distinguish it from `<Vec>::new<..>`
  * the "infer all parameters" `<..>` form is internal and not even pretty-printed
  * used when there are no type parameters at all, in an expression or pattern path segment
* `T::A::B` becomes `<<T>::A>::B` in a type, and `<<T<..>>::A<..>>::B<..>` in an expression/pattern
  * one additional `hir::Ty` node is created for each prefix, starting with the fully-resolved type (`T`) and extending it with each segment (e.g. `<T>::A`)
* fully-resolved paths contain their `Def` in HIR, getting rid of the `DefMap` and absolving incremental recompilation of needing to manually look up nodes to handle that side information

Not keeping the `DefMap` around meant that associated resolutions had to be stored somewhere else:
* expressions and patterns use a new `NodeId -> Def` map in `ty::Tables`
  * compatible with the future per-body (constant / `fn` / closure) `Tables`
* types are accessible via `Ty` and the usual per-item generics / predicates / type
  * `rustdoc` and `save-analysis` are the only situations which insist on mapping syntactical types to semantical ones, or at least understand the resolution of associated types, therefore the type conversion cache, i.e. a `NodeId -> Ty` map, is exposed by typeck for this purpose
  * stability had to be split into a pass that runs on HIR and checks the results of name resolution, and impromptu checks triggered by `typeck` for associated paths, methods, fields, etc.
  * privacy using semantic types results in accurate reachability for `impl Trait`, which fixes #35870, and thorough introspection of associated types, which may allow relaxing private-in-public checking on bounds, while keeping the intended ban on projections with private type parameters

cc @petrochenkov

bors added a commit that referenced this issue Nov 25, 2016

Auto merge of #37676 - eddyb:lazy-7, r=nikomatsakis
[7/n] rustc: desugar UFCS in HIR and don't use DefMap for associated resolutions.

_This is part of a series ([prev](#37412) | [next](#37688)) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments._

<hr>

Previously, a path like `T::Assoc::method`, while equivalent to `<<T>::Assoc>::method`, wasn't desugared in any way at the HIR level and everything inspecting it had to either deal with knowing only `T` (before typeck) or knowing only the definition of `method` (after typeck).
Such a path also had only one `NodeId` and associated resolution during typeck modified `DefMap`, in a way that would be hard for incremental recompilation to track, and inconvenient for partial type conversions from HIR to `Ty`, which are required to break faux-cycles in on-demand type collection.

The desugarings performed by this PR are as follows:
* `use a::{b,c};` is flattened to `use a as _; use a::b; use a::c;`
  * as resolution is complete, `use a as _;` doesn't do anything, except get checked for stability
* `Vec::new` (an expression) becomes `Vec<..>::new<..>`, to distinguish it from `<Vec>::new<..>`
  * the "infer all parameters" `<..>` form is internal and not even pretty-printed
  * used when there are no type parameters at all, in an expression or pattern path segment
* `T::A::B` becomes `<<T>::A>::B` in a type, and `<<T<..>>::A<..>>::B<..>` in an expression/pattern
  * one additional `hir::Ty` node is created for each prefix, starting with the fully-resolved type (`T`) and extending it with each segment (e.g. `<T>::A`)
* fully-resolved paths contain their `Def` in HIR, getting rid of the `DefMap` and absolving incremental recompilation of needing to manually look up nodes to handle that side information

Not keeping the `DefMap` around meant that associated resolutions had to be stored somewhere else:
* expressions and patterns use a new `NodeId -> Def` map in `ty::Tables`
  * compatible with the future per-body (constant / `fn` / closure) `Tables`
* types are accessible via `Ty` and the usual per-item generics / predicates / type
  * `rustdoc` and `save-analysis` are the only situations which insist on mapping syntactical types to semantical ones, or at least understand the resolution of associated types, therefore the type conversion cache, i.e. a `NodeId -> Ty` map, is exposed by typeck for this purpose
  * stability had to be split into a pass that runs on HIR and checks the results of name resolution, and impromptu checks triggered by `typeck` for associated paths, methods, fields, etc.
  * privacy using semantic types results in accurate reachability for `impl Trait`, which fixes #35870, and thorough introspection of associated types, which may allow relaxing private-in-public checking on bounds, while keeping the intended ban on projections with private type parameters

cc @petrochenkov

bors added a commit that referenced this issue Nov 28, 2016

Auto merge of #37676 - eddyb:lazy-7, r=nikomatsakis
[7/n] rustc: desugar UFCS in HIR and don't use DefMap for associated resolutions.

_This is part of a series ([prev](#37412) | [next](#37688)) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments._

<hr>

Previously, a path like `T::Assoc::method`, while equivalent to `<<T>::Assoc>::method`, wasn't desugared in any way at the HIR level and everything inspecting it had to either deal with knowing only `T` (before typeck) or knowing only the definition of `method` (after typeck).
Such a path also had only one `NodeId` and associated resolution during typeck modified `DefMap`, in a way that would be hard for incremental recompilation to track, and inconvenient for partial type conversions from HIR to `Ty`, which are required to break faux-cycles in on-demand type collection.

The desugarings performed by this PR are as follows:
* `use a::{b,c};` is flattened to `use a as _; use a::b; use a::c;`
  * as resolution is complete, `use a as _;` doesn't do anything, except get checked for stability
* `Vec::new` (an expression) becomes `Vec<..>::new<..>`, to distinguish it from `<Vec>::new<..>`
  * the "infer all parameters" `<..>` form is internal and not even pretty-printed
  * used when there are no type parameters at all, in an expression or pattern path segment
* `T::A::B` becomes `<<T>::A>::B` in a type, and `<<T<..>>::A<..>>::B<..>` in an expression/pattern
  * one additional `hir::Ty` node is created for each prefix, starting with the fully-resolved type (`T`) and extending it with each segment (e.g. `<T>::A`)
* fully-resolved paths contain their `Def` in HIR, getting rid of the `DefMap` and absolving incremental recompilation of needing to manually look up nodes to handle that side information

Not keeping the `DefMap` around meant that associated resolutions had to be stored somewhere else:
* expressions and patterns use a new `NodeId -> Def` map in `ty::Tables`
  * compatible with the future per-body (constant / `fn` / closure) `Tables`
* types are accessible via `Ty` and the usual per-item generics / predicates / type
  * `rustdoc` and `save-analysis` are the only situations which insist on mapping syntactical types to semantical ones, or at least understand the resolution of associated types, therefore the type conversion cache, i.e. a `NodeId -> Ty` map, is exposed by typeck for this purpose
  * stability had to be split into a pass that runs on HIR and checks the results of name resolution, and impromptu checks triggered by `typeck` for associated paths, methods, fields, etc.
  * privacy using semantic types results in accurate reachability for `impl Trait`, which fixes #35870, and thorough introspection of associated types, which may allow relaxing private-in-public checking on bounds, while keeping the intended ban on projections with private type parameters

cc @petrochenkov

@bors bors closed this in #37676 Nov 28, 2016

@jonhoo

This comment has been minimized.

Copy link
Contributor

jonhoo commented Mar 8, 2017

I'm not sure this is actually fixed. I'm still seeing this error on latest nightly (2017-03-03) when compiling mit-pdos/noria@6adf44d. Interestingly, it only happens on some machines (despite having the same nightly). Notably travis fails, but my laptop works fine. An older machine running Ubuntu 16.04 also fails.

@jonhoo

This comment has been minimized.

Copy link
Contributor

jonhoo commented Mar 8, 2017

Fails with Travis: gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Builds fine with Travis "trusty": gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Fails with gcc --version: gcc-5.real (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Builds fine with gcc --version: gcc (GCC) 6.3.1 20170109

@eddyb

This comment has been minimized.

Copy link
Member

eddyb commented Mar 8, 2017

@jonhoo Do the different failures show different symbol names, given the exact same Rust nightly?

@eddyb eddyb reopened this Mar 8, 2017

@jonhoo

This comment has been minimized.

Copy link
Contributor

jonhoo commented Mar 8, 2017

The ones that fail all error out on

src/flow/mod.rs:288: undefined reference to distributary::flow::Mutator::send::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::_FILE_LINE::h38cefdcb728fc9f0

which is where a future is returned in a method whose return type is impl Future.

Fails on five different machines:

gcc 4.8.4 on Ubuntu 14.04.3

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/jon/distributary/target/debug/deps/vote-465e44b9f4f44bec.0.o" "-o" "/home/jon/distributary/target/debug/deps/vote-465e44b9f4f44bec" "-Wl,--gc-sections" "-pie" "-nodefaultlibs" "-L" "/home/jon/distributary/target/debug/deps" "-L" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "-Wl,-Bdynamic" "/home/jon/distributary/target/debug/deps/libclap-570827f233cbe1af.rlib" "/home/jon/distributary/target/debug/deps/libvec_map-ff093b9efea9abbb.rlib" "/home/jon/distributary/target/debug/deps/libbitflags-65ddff5d2b91509e.rlib" "/home/jon/distributary/target/debug/deps/libunicode_width-cde6328ef82d354d.rlib" "/home/jon/distributary/target/debug/deps/libdistributary-82ee1c8e7cdb6421.rlib" "/home/jon/distributary/target/debug/deps/libtarpc-97342caa9ec927f2.rlib" "/home/jon/distributary/target/debug/deps/libnom_sql-b2603aa7c0d8c970.rlib" "/home/jon/distributary/target/debug/deps/libpetgraph-ef41f5ef103ce778.rlib" "/home/jon/distributary/target/debug/deps/libfixedbitset-069dd3bfb844d9ac.rlib" "/home/jon/distributary/target/debug/deps/libevmap-97d097ddc1387f0f.rlib" "/home/jon/distributary/target/debug/deps/libfnv-1953bcde9b6fff16.rlib" "/home/jon/distributary/target/debug/deps/libslog_term-7bf030caf0f7defe.rlib" "/home/jon/distributary/target/debug/deps/libslog_stream-173624b318b06bc5.rlib" "/home/jon/distributary/target/debug/deps/libslog_extra-6ea634c9e0a2043e.rlib" "/home/jon/distributary/target/debug/deps/librustful-d9e4a6982e0a6950.rlib" "/home/jon/distributary/target/debug/deps/libnum_cpus-0f2241d72e65907e.rlib" "/home/jon/distributary/target/debug/deps/libhyper-3bdb1992536ae1e4.rlib" "/home/jon/distributary/target/debug/deps/libsolicit-57df9fdb4acc1156.rlib" "/home/jon/distributary/target/debug/deps/libtypeable-316885cdc9b7ff78.rlib" "/home/jon/distributary/target/debug/deps/libtraitobject-ab8a7d0301323955.rlib" "/home/jon/distributary/target/debug/deps/libmultipart-58c733ff28261c35.rlib" "/home/jon/distributary/target/debug/deps/libbuf_redux-31692a39107c7950.rlib" "/home/jon/distributary/target/debug/deps/libtempdir-0ee757a585f719dd.rlib" "/home/jon/distributary/target/debug/deps/libenv_logger-25d6e02029b27322.rlib" "/home/jon/distributary/target/debug/deps/libslog-7e4e4dcd4539ca87.rlib" "/home/jon/distributary/target/debug/deps/libnum_cpus-40879e9ed1a40827.rlib" "/home/jon/distributary/target/debug/deps/libanymap-b16f3b3eb5741212.rlib" "/home/jon/distributary/target/debug/deps/libtokio_proto-d14ac39e5e51a7d7.rlib" "/home/jon/distributary/target/debug/deps/libtokio_service-0afbdb2e24f4af7f.rlib" "/home/jon/distributary/target/debug/deps/libtake-a2b6204a09f84dad.rlib" "/home/jon/distributary/target/debug/deps/libsmallvec-a2a54d79bf051b89.rlib" "/home/jon/distributary/target/debug/deps/libtokio_core-70b906545a29c574.rlib" "/home/jon/distributary/target/debug/deps/libmio-fc98e62c3823f86e.rlib" "/home/jon/distributary/target/debug/deps/libnet2-32f659e95deed84f.rlib" "/home/jon/distributary/target/debug/deps/liblazycell-f0c2d7897740574b.rlib" "/home/jon/distributary/target/debug/deps/libscoped_tls-01b0e693814db5aa.rlib" "/home/jon/distributary/target/debug/deps/libitertools-2c1f6d23e119647e.rlib" "/home/jon/distributary/target/debug/deps/libeither-7d89001e12282025.rlib" "/home/jon/distributary/target/debug/deps/libtimekeeper-a4a106e1f923691c.rlib" "/home/jon/distributary/target/debug/deps/libansi_term-e82d81861e7fcb5e.rlib" "/home/jon/distributary/target/debug/deps/libunicode_segmentation-a468118d80af9f84.rlib" "/home/jon/distributary/target/debug/deps/libhttparse-416a35ac04e93d93.rlib" "/home/jon/distributary/target/debug/deps/liblanguage_tags-6d1160a675955a17.rlib" "/home/jon/distributary/target/debug/deps/libchrono-7f6de010bb6656a2.rlib" "/home/jon/distributary/target/debug/deps/libbincode-16f840faeb16562d.rlib" "/home/jon/distributary/target/debug/deps/libbyteorder-240cc8a1e1423fad.rlib" "/home/jon/distributary/target/debug/deps/libspmc-8e8ca08310434a3c.rlib" "/home/jon/distributary/target/debug/deps/libslab-1381e1711ce95cec.rlib" "/home/jon/distributary/target/debug/deps/libregex-bf57a839db75dbae.rlib" "/home/jon/distributary/target/debug/deps/libutf8_ranges-142806e76d52d8c6.rlib" "/home/jon/distributary/target/debug/deps/libregex_syntax-8b74a2985735b213.rlib" "/home/jon/distributary/target/debug/deps/libthread_local-a561abce7ea185f1.rlib" "/home/jon/distributary/target/debug/deps/libthread_id-e41c347f28e6505f.rlib" "/home/jon/distributary/target/debug/deps/libaho_corasick-c795bbd3a96f4a35.rlib" "/home/jon/distributary/target/debug/deps/libmemchr-4c3682d5f0e14581.rlib" "/home/jon/distributary/target/debug/deps/libnom-c11a5cbc9654b215.rlib" "/home/jon/distributary/target/debug/deps/libmime_guess-837a1663a12e89bf.rlib" "/home/jon/distributary/target/debug/deps/libphf-f336a4b1a1bdb730.rlib" "/home/jon/distributary/target/debug/deps/libphf_shared-499238f4644c4820.rlib" "/home/jon/distributary/target/debug/deps/libunicase-5cd5823de23f633f.rlib" "/home/jon/distributary/target/debug/deps/libmime-f494f23336624a9a.rlib" "/home/jon/distributary/target/debug/deps/libstrsim-61ec477beacb0d4b.rlib" "/home/jon/distributary/target/debug/deps/libterm_size-49ef496404f3e5db.rlib" "/home/jon/distributary/target/debug/deps/libcookie-0f4002eb04ad7b30.rlib" "/home/jon/distributary/target/debug/deps/libtime-cd5e3a346d1a17b6.rlib" "/home/jon/distributary/target/debug/deps/liburl-aa3392667e4f87a3.rlib" "/home/jon/distributary/target/debug/deps/libidna-3bab7d99255950c3.rlib" "/home/jon/distributary/target/debug/deps/libunicode_normalization-0297b14f098a4d93.rlib" "/home/jon/distributary/target/debug/deps/libunicode_bidi-b21b1d9dc1833286.rlib" "/home/jon/distributary/target/debug/deps/libmatches-8f1598a59712d6cc.rlib" "/home/jon/distributary/target/debug/deps/libthread_local-c8755f64dce6c8cd.rlib" "/home/jon/distributary/target/debug/deps/libunreachable-ebcc746f6a526ccc.rlib" "/home/jon/distributary/target/debug/deps/libvoid-408bd2d66dde02c1.rlib" "/home/jon/distributary/target/debug/deps/libthread_id-7c664cbece6d9f97.rlib" "/home/jon/distributary/target/debug/deps/libhpack-cedaba108ae550f7.rlib" "/home/jon/distributary/target/debug/deps/libisatty-02586bf5f6f35699.rlib" "/home/jon/distributary/target/debug/deps/liblazy_static-82c2efae9a7bf732.rlib" "/home/jon/distributary/target/debug/deps/libhdrsample-051edeac4ce98b92.rlib" "/home/jon/distributary/target/debug/deps/libnum-6ce289b56f32382f.rlib" "/home/jon/distributary/target/debug/deps/libnum_rational-0162ef58e267dc13.rlib" "/home/jon/distributary/target/debug/deps/libnum_bigint-f41de0087edd8a71.rlib" "/home/jon/distributary/target/debug/deps/librand-c9d9fbdab2355ee4.rlib" "/home/jon/distributary/target/debug/deps/liblibc-5dc7b85e748840b4.rlib" "/home/jon/distributary/target/debug/deps/libnum_complex-57a11a875ce86980.rlib" "/home/jon/distributary/target/debug/deps/librustc_serialize-2c0b16b7ceb9fdcb.rlib" "/home/jon/distributary/target/debug/deps/libnum_iter-e3d53b72a44dd492.rlib" "/home/jon/distributary/target/debug/deps/libnum_integer-bbbfaf8dce75e1b6.rlib" "/home/jon/distributary/target/debug/deps/libnum_traits-69f4129d46397118.rlib" "/home/jon/distributary/target/debug/deps/libfutures-e55d45cfd50e0707.rlib" "/home/jon/distributary/target/debug/deps/liblog-d4c0e5c2504fbbea.rlib" "/home/jon/distributary/target/debug/deps/libcfg_if-5cf5b4dd25466da1.rlib" "/home/jon/distributary/target/debug/deps/libarccstr-57c89c80b11e3cf6.rlib" "/home/jon/distributary/target/debug/deps/libserde-e9bfb02f34c97433.rlib" "/home/jon/distributary/target/debug/deps/libordermap-2bde98eb47fe8c07.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-9a66b6a343d52844.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-9d79f761aa668a33.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-2beb731af7a6faec.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-6bc49e032a89c77d.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcollections-a2a467c3ca3b6479.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-ce7b9706e1719f27.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-4b74d6f2808677d3.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-95af4192ed69a1c8.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_unicode-e54225ff8f33e08f.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-cd0ca85e71f914ca.rlib" "/home/jon/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-0bf24067248742a8.rlib" "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "gcc_s" "-l" "pthread" "-l" "c" "-l" "m" "-l" "rt" "-l" "util"
  = note: /home/jon/distributary/target/debug/deps/vote-465e44b9f4f44bec.0.o: In function `distributary::flow::{{impl}}::send::{{closure}}::{{closure}}':
          /home/jon/distributary/src/flow/mod.rs:288: undefined reference to `distributary::flow::Mutator::send::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::_FILE_LINE::hadf2304f2c848dc4'
          collect2: error: ld returned 1 exit status

gcc 5.4.0 on Ubuntu 16.04.4

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/jfrg/distributary/target/debug/deps/vote-c8dd3585b6f697d3.0.o" "-o" "/home/jfrg/distributary/target/debug/deps/vote-c8dd3585b6f697d3" "-Wl,--gc-sections" "-pie" "-nodefaultlibs" "-L" "/home/jfrg/distributary/target/debug/deps" "-L" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "-Wl,-Bdynamic" "/home/jfrg/distributary/target/debug/deps/libclap-570827f233cbe1af.rlib" "/home/jfrg/distributary/target/debug/deps/libvec_map-ff093b9efea9abbb.rlib" "/home/jfrg/distributary/target/debug/deps/libbitflags-65ddff5d2b91509e.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_width-cde6328ef82d354d.rlib" "/home/jfrg/distributary/target/debug/deps/libdistributary-7dc3a7290006e587.rlib" "/home/jfrg/distributary/target/debug/deps/libtarpc-97342caa9ec927f2.rlib" "/home/jfrg/distributary/target/debug/deps/libnom_sql-b2603aa7c0d8c970.rlib" "/home/jfrg/distributary/target/debug/deps/libpetgraph-ef41f5ef103ce778.rlib" "/home/jfrg/distributary/target/debug/deps/libfixedbitset-069dd3bfb844d9ac.rlib" "/home/jfrg/distributary/target/debug/deps/libevmap-97d097ddc1387f0f.rlib" "/home/jfrg/distributary/target/debug/deps/libfnv-1953bcde9b6fff16.rlib" "/home/jfrg/distributary/target/debug/deps/libslog_term-7bf030caf0f7defe.rlib" "/home/jfrg/distributary/target/debug/deps/libslog_stream-173624b318b06bc5.rlib" "/home/jfrg/distributary/target/debug/deps/libslog_extra-6ea634c9e0a2043e.rlib" "/home/jfrg/distributary/target/debug/deps/librustful-d9e4a6982e0a6950.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_cpus-0f2241d72e65907e.rlib" "/home/jfrg/distributary/target/debug/deps/libhyper-3bdb1992536ae1e4.rlib" "/home/jfrg/distributary/target/debug/deps/libsolicit-57df9fdb4acc1156.rlib" "/home/jfrg/distributary/target/debug/deps/libtypeable-316885cdc9b7ff78.rlib" "/home/jfrg/distributary/target/debug/deps/libtraitobject-ab8a7d0301323955.rlib" "/home/jfrg/distributary/target/debug/deps/libmultipart-58c733ff28261c35.rlib" "/home/jfrg/distributary/target/debug/deps/libbuf_redux-31692a39107c7950.rlib" "/home/jfrg/distributary/target/debug/deps/libtempdir-0ee757a585f719dd.rlib" "/home/jfrg/distributary/target/debug/deps/libenv_logger-25d6e02029b27322.rlib" "/home/jfrg/distributary/target/debug/deps/libslog-7e4e4dcd4539ca87.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_cpus-40879e9ed1a40827.rlib" "/home/jfrg/distributary/target/debug/deps/libanymap-b16f3b3eb5741212.rlib" "/home/jfrg/distributary/target/debug/deps/libtokio_proto-d14ac39e5e51a7d7.rlib" "/home/jfrg/distributary/target/debug/deps/libtokio_service-0afbdb2e24f4af7f.rlib" "/home/jfrg/distributary/target/debug/deps/libtake-a2b6204a09f84dad.rlib" "/home/jfrg/distributary/target/debug/deps/libsmallvec-a2a54d79bf051b89.rlib" "/home/jfrg/distributary/target/debug/deps/libtokio_core-70b906545a29c574.rlib" "/home/jfrg/distributary/target/debug/deps/libmio-fc98e62c3823f86e.rlib" "/home/jfrg/distributary/target/debug/deps/libnet2-32f659e95deed84f.rlib" "/home/jfrg/distributary/target/debug/deps/liblazycell-f0c2d7897740574b.rlib" "/home/jfrg/distributary/target/debug/deps/libscoped_tls-01b0e693814db5aa.rlib" "/home/jfrg/distributary/target/debug/deps/libitertools-2c1f6d23e119647e.rlib" "/home/jfrg/distributary/target/debug/deps/libeither-7d89001e12282025.rlib" "/home/jfrg/distributary/target/debug/deps/libtimekeeper-a4a106e1f923691c.rlib" "/home/jfrg/distributary/target/debug/deps/libansi_term-e82d81861e7fcb5e.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_segmentation-a468118d80af9f84.rlib" "/home/jfrg/distributary/target/debug/deps/libhttparse-416a35ac04e93d93.rlib" "/home/jfrg/distributary/target/debug/deps/liblanguage_tags-6d1160a675955a17.rlib" "/home/jfrg/distributary/target/debug/deps/libchrono-7f6de010bb6656a2.rlib" "/home/jfrg/distributary/target/debug/deps/libbincode-16f840faeb16562d.rlib" "/home/jfrg/distributary/target/debug/deps/libbyteorder-240cc8a1e1423fad.rlib" "/home/jfrg/distributary/target/debug/deps/libspmc-8e8ca08310434a3c.rlib" "/home/jfrg/distributary/target/debug/deps/libslab-1381e1711ce95cec.rlib" "/home/jfrg/distributary/target/debug/deps/libregex-bf57a839db75dbae.rlib" "/home/jfrg/distributary/target/debug/deps/libutf8_ranges-142806e76d52d8c6.rlib" "/home/jfrg/distributary/target/debug/deps/libregex_syntax-8b74a2985735b213.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_local-a561abce7ea185f1.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_id-e41c347f28e6505f.rlib" "/home/jfrg/distributary/target/debug/deps/libaho_corasick-c795bbd3a96f4a35.rlib" "/home/jfrg/distributary/target/debug/deps/libmemchr-4c3682d5f0e14581.rlib" "/home/jfrg/distributary/target/debug/deps/libnom-c11a5cbc9654b215.rlib" "/home/jfrg/distributary/target/debug/deps/libmime_guess-837a1663a12e89bf.rlib" "/home/jfrg/distributary/target/debug/deps/libphf-f336a4b1a1bdb730.rlib" "/home/jfrg/distributary/target/debug/deps/libphf_shared-499238f4644c4820.rlib" "/home/jfrg/distributary/target/debug/deps/libunicase-5cd5823de23f633f.rlib" "/home/jfrg/distributary/target/debug/deps/libmime-f494f23336624a9a.rlib" "/home/jfrg/distributary/target/debug/deps/libstrsim-61ec477beacb0d4b.rlib" "/home/jfrg/distributary/target/debug/deps/libterm_size-49ef496404f3e5db.rlib" "/home/jfrg/distributary/target/debug/deps/libcookie-0f4002eb04ad7b30.rlib" "/home/jfrg/distributary/target/debug/deps/libtime-cd5e3a346d1a17b6.rlib" "/home/jfrg/distributary/target/debug/deps/liburl-aa3392667e4f87a3.rlib" "/home/jfrg/distributary/target/debug/deps/libidna-3bab7d99255950c3.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_normalization-0297b14f098a4d93.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_bidi-b21b1d9dc1833286.rlib" "/home/jfrg/distributary/target/debug/deps/libmatches-8f1598a59712d6cc.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_local-c8755f64dce6c8cd.rlib" "/home/jfrg/distributary/target/debug/deps/libunreachable-ebcc746f6a526ccc.rlib" "/home/jfrg/distributary/target/debug/deps/libvoid-408bd2d66dde02c1.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_id-7c664cbece6d9f97.rlib" "/home/jfrg/distributary/target/debug/deps/libhpack-cedaba108ae550f7.rlib" "/home/jfrg/distributary/target/debug/deps/libisatty-02586bf5f6f35699.rlib" "/home/jfrg/distributary/target/debug/deps/liblazy_static-82c2efae9a7bf732.rlib" "/home/jfrg/distributary/target/debug/deps/libhdrsample-051edeac4ce98b92.rlib" "/home/jfrg/distributary/target/debug/deps/libnum-6ce289b56f32382f.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_rational-0162ef58e267dc13.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_bigint-f41de0087edd8a71.rlib" "/home/jfrg/distributary/target/debug/deps/librand-c9d9fbdab2355ee4.rlib" "/home/jfrg/distributary/target/debug/deps/liblibc-5dc7b85e748840b4.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_complex-57a11a875ce86980.rlib" "/home/jfrg/distributary/target/debug/deps/librustc_serialize-2c0b16b7ceb9fdcb.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_iter-e3d53b72a44dd492.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_integer-bbbfaf8dce75e1b6.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_traits-69f4129d46397118.rlib" "/home/jfrg/distributary/target/debug/deps/libfutures-e55d45cfd50e0707.rlib" "/home/jfrg/distributary/target/debug/deps/liblog-d4c0e5c2504fbbea.rlib" "/home/jfrg/distributary/target/debug/deps/libcfg_if-5cf5b4dd25466da1.rlib" "/home/jfrg/distributary/target/debug/deps/libarccstr-57c89c80b11e3cf6.rlib" "/home/jfrg/distributary/target/debug/deps/libserde-e9bfb02f34c97433.rlib" "/home/jfrg/distributary/target/debug/deps/libordermap-2bde98eb47fe8c07.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-9a66b6a343d52844.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-9d79f761aa668a33.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-2beb731af7a6faec.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-6bc49e032a89c77d.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcollections-a2a467c3ca3b6479.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-ce7b9706e1719f27.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-4b74d6f2808677d3.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-95af4192ed69a1c8.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_unicode-e54225ff8f33e08f.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-cd0ca85e71f914ca.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-0bf24067248742a8.rlib" "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "gcc_s" "-l" "pthread" "-l" "c" "-l" "m" "-l" "rt" "-l" "util"
  = note: /home/jfrg/distributary/target/debug/deps/vote-c8dd3585b6f697d3.0.o: In function `distributary::flow::{{impl}}::send::{{closure}}::{{closure}}':
          /home/jfrg/distributary/src/flow/mod.rs:288: undefined reference to `distributary::flow::Mutator::send::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::_FILE_LINE::hef474460ee28811b'
          collect2: error: ld returned 1 exit status

Also gcc 5.4.0 on Ubuntu 16.04.4

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/jfrg/distributary/target/debug/deps/vote-c8dd3585b6f697d3.0.o" "-o" "/home/jfrg/distributary/target/debug/deps/vote-c8dd3585b6f697d3" "-Wl,--gc-sections" "-pie" "-nodefaultlibs" "-L" "/home/jfrg/distributary/target/debug/deps" "-L" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "-Wl,-Bdynamic" "/home/jfrg/distributary/target/debug/deps/libclap-570827f233cbe1af.rlib" "/home/jfrg/distributary/target/debug/deps/libvec_map-ff093b9efea9abbb.rlib" "/home/jfrg/distributary/target/debug/deps/libbitflags-65ddff5d2b91509e.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_width-cde6328ef82d354d.rlib" "/home/jfrg/distributary/target/debug/deps/libdistributary-7dc3a7290006e587.rlib" "/home/jfrg/distributary/target/debug/deps/libtarpc-97342caa9ec927f2.rlib" "/home/jfrg/distributary/target/debug/deps/libnom_sql-b2603aa7c0d8c970.rlib" "/home/jfrg/distributary/target/debug/deps/libpetgraph-ef41f5ef103ce778.rlib" "/home/jfrg/distributary/target/debug/deps/libfixedbitset-069dd3bfb844d9ac.rlib" "/home/jfrg/distributary/target/debug/deps/libevmap-97d097ddc1387f0f.rlib" "/home/jfrg/distributary/target/debug/deps/libfnv-1953bcde9b6fff16.rlib" "/home/jfrg/distributary/target/debug/deps/libslog_term-7bf030caf0f7defe.rlib" "/home/jfrg/distributary/target/debug/deps/libslog_stream-173624b318b06bc5.rlib" "/home/jfrg/distributary/target/debug/deps/libslog_extra-6ea634c9e0a2043e.rlib" "/home/jfrg/distributary/target/debug/deps/librustful-d9e4a6982e0a6950.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_cpus-0f2241d72e65907e.rlib" "/home/jfrg/distributary/target/debug/deps/libhyper-3bdb1992536ae1e4.rlib" "/home/jfrg/distributary/target/debug/deps/libsolicit-57df9fdb4acc1156.rlib" "/home/jfrg/distributary/target/debug/deps/libtypeable-316885cdc9b7ff78.rlib" "/home/jfrg/distributary/target/debug/deps/libtraitobject-ab8a7d0301323955.rlib" "/home/jfrg/distributary/target/debug/deps/libmultipart-58c733ff28261c35.rlib" "/home/jfrg/distributary/target/debug/deps/libbuf_redux-31692a39107c7950.rlib" "/home/jfrg/distributary/target/debug/deps/libtempdir-0ee757a585f719dd.rlib" "/home/jfrg/distributary/target/debug/deps/libenv_logger-25d6e02029b27322.rlib" "/home/jfrg/distributary/target/debug/deps/libslog-7e4e4dcd4539ca87.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_cpus-40879e9ed1a40827.rlib" "/home/jfrg/distributary/target/debug/deps/libanymap-b16f3b3eb5741212.rlib" "/home/jfrg/distributary/target/debug/deps/libtokio_proto-d14ac39e5e51a7d7.rlib" "/home/jfrg/distributary/target/debug/deps/libtokio_service-0afbdb2e24f4af7f.rlib" "/home/jfrg/distributary/target/debug/deps/libtake-a2b6204a09f84dad.rlib" "/home/jfrg/distributary/target/debug/deps/libsmallvec-a2a54d79bf051b89.rlib" "/home/jfrg/distributary/target/debug/deps/libtokio_core-70b906545a29c574.rlib" "/home/jfrg/distributary/target/debug/deps/libmio-fc98e62c3823f86e.rlib" "/home/jfrg/distributary/target/debug/deps/libnet2-32f659e95deed84f.rlib" "/home/jfrg/distributary/target/debug/deps/liblazycell-f0c2d7897740574b.rlib" "/home/jfrg/distributary/target/debug/deps/libscoped_tls-01b0e693814db5aa.rlib" "/home/jfrg/distributary/target/debug/deps/libitertools-2c1f6d23e119647e.rlib" "/home/jfrg/distributary/target/debug/deps/libeither-7d89001e12282025.rlib" "/home/jfrg/distributary/target/debug/deps/libtimekeeper-a4a106e1f923691c.rlib" "/home/jfrg/distributary/target/debug/deps/libansi_term-e82d81861e7fcb5e.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_segmentation-a468118d80af9f84.rlib" "/home/jfrg/distributary/target/debug/deps/libhttparse-416a35ac04e93d93.rlib" "/home/jfrg/distributary/target/debug/deps/liblanguage_tags-6d1160a675955a17.rlib" "/home/jfrg/distributary/target/debug/deps/libchrono-7f6de010bb6656a2.rlib" "/home/jfrg/distributary/target/debug/deps/libbincode-16f840faeb16562d.rlib" "/home/jfrg/distributary/target/debug/deps/libbyteorder-240cc8a1e1423fad.rlib" "/home/jfrg/distributary/target/debug/deps/libspmc-8e8ca08310434a3c.rlib" "/home/jfrg/distributary/target/debug/deps/libslab-1381e1711ce95cec.rlib" "/home/jfrg/distributary/target/debug/deps/libregex-bf57a839db75dbae.rlib" "/home/jfrg/distributary/target/debug/deps/libutf8_ranges-142806e76d52d8c6.rlib" "/home/jfrg/distributary/target/debug/deps/libregex_syntax-8b74a2985735b213.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_local-a561abce7ea185f1.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_id-e41c347f28e6505f.rlib" "/home/jfrg/distributary/target/debug/deps/libaho_corasick-c795bbd3a96f4a35.rlib" "/home/jfrg/distributary/target/debug/deps/libmemchr-4c3682d5f0e14581.rlib" "/home/jfrg/distributary/target/debug/deps/libnom-c11a5cbc9654b215.rlib" "/home/jfrg/distributary/target/debug/deps/libmime_guess-837a1663a12e89bf.rlib" "/home/jfrg/distributary/target/debug/deps/libphf-f336a4b1a1bdb730.rlib" "/home/jfrg/distributary/target/debug/deps/libphf_shared-499238f4644c4820.rlib" "/home/jfrg/distributary/target/debug/deps/libunicase-5cd5823de23f633f.rlib" "/home/jfrg/distributary/target/debug/deps/libmime-f494f23336624a9a.rlib" "/home/jfrg/distributary/target/debug/deps/libstrsim-61ec477beacb0d4b.rlib" "/home/jfrg/distributary/target/debug/deps/libterm_size-49ef496404f3e5db.rlib" "/home/jfrg/distributary/target/debug/deps/libcookie-0f4002eb04ad7b30.rlib" "/home/jfrg/distributary/target/debug/deps/libtime-cd5e3a346d1a17b6.rlib" "/home/jfrg/distributary/target/debug/deps/liburl-aa3392667e4f87a3.rlib" "/home/jfrg/distributary/target/debug/deps/libidna-3bab7d99255950c3.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_normalization-0297b14f098a4d93.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_bidi-b21b1d9dc1833286.rlib" "/home/jfrg/distributary/target/debug/deps/libmatches-8f1598a59712d6cc.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_local-c8755f64dce6c8cd.rlib" "/home/jfrg/distributary/target/debug/deps/libunreachable-ebcc746f6a526ccc.rlib" "/home/jfrg/distributary/target/debug/deps/libvoid-408bd2d66dde02c1.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_id-7c664cbece6d9f97.rlib" "/home/jfrg/distributary/target/debug/deps/libhpack-cedaba108ae550f7.rlib" "/home/jfrg/distributary/target/debug/deps/libisatty-02586bf5f6f35699.rlib" "/home/jfrg/distributary/target/debug/deps/liblazy_static-82c2efae9a7bf732.rlib" "/home/jfrg/distributary/target/debug/deps/libhdrsample-051edeac4ce98b92.rlib" "/home/jfrg/distributary/target/debug/deps/libnum-6ce289b56f32382f.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_rational-0162ef58e267dc13.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_bigint-f41de0087edd8a71.rlib" "/home/jfrg/distributary/target/debug/deps/librand-c9d9fbdab2355ee4.rlib" "/home/jfrg/distributary/target/debug/deps/liblibc-5dc7b85e748840b4.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_complex-57a11a875ce86980.rlib" "/home/jfrg/distributary/target/debug/deps/librustc_serialize-2c0b16b7ceb9fdcb.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_iter-e3d53b72a44dd492.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_integer-bbbfaf8dce75e1b6.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_traits-69f4129d46397118.rlib" "/home/jfrg/distributary/target/debug/deps/libfutures-e55d45cfd50e0707.rlib" "/home/jfrg/distributary/target/debug/deps/liblog-d4c0e5c2504fbbea.rlib" "/home/jfrg/distributary/target/debug/deps/libcfg_if-5cf5b4dd25466da1.rlib" "/home/jfrg/distributary/target/debug/deps/libarccstr-57c89c80b11e3cf6.rlib" "/home/jfrg/distributary/target/debug/deps/libserde-e9bfb02f34c97433.rlib" "/home/jfrg/distributary/target/debug/deps/libordermap-2bde98eb47fe8c07.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-9a66b6a343d52844.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-9d79f761aa668a33.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-2beb731af7a6faec.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-6bc49e032a89c77d.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcollections-a2a467c3ca3b6479.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-ce7b9706e1719f27.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-4b74d6f2808677d3.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-95af4192ed69a1c8.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_unicode-e54225ff8f33e08f.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-cd0ca85e71f914ca.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-0bf24067248742a8.rlib" "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "gcc_s" "-l" "pthread" "-l" "c" "-l" "m" "-l" "rt" "-l" "util"
  = note: /home/jfrg/distributary/target/debug/deps/vote-c8dd3585b6f697d3.0.o: In function `distributary::flow::{{impl}}::send::{{closure}}::{{closure}}':
          /home/jfrg/distributary/src/flow/mod.rs:288: undefined reference to `distributary::flow::Mutator::send::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::_FILE_LINE::hef474460ee28811b'
          collect2: error: ld returned 1 exit status

gcc 6.2.0 on Ubuntu 16.10

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/ubuntu/distributary/target/debug/deps/vote-30cc369bcc56fe7f.0.o" "-o" "/home/ubuntu/distributary/target/debug/deps/vote-30cc369bcc56fe7f" "-Wl,--gc-sections" "-pie" "-nodefaultlibs" "-L" "/home/ubuntu/distributary/target/debug/deps" "-L" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "-Wl,-Bdynamic" "/home/ubuntu/distributary/target/debug/deps/libclap-570827f233cbe1af.rlib" "/home/ubuntu/distributary/target/debug/deps/libvec_map-ff093b9efea9abbb.rlib" "/home/ubuntu/distributary/target/debug/deps/libbitflags-65ddff5d2b91509e.rlib" "/home/ubuntu/distributary/target/debug/deps/libunicode_width-cde6328ef82d354d.rlib" "/home/ubuntu/distributary/target/debug/deps/libdistributary-ee004aec27ba053f.rlib" "/home/ubuntu/distributary/target/debug/deps/libtarpc-97342caa9ec927f2.rlib" "/home/ubuntu/distributary/target/debug/deps/libnom_sql-b2603aa7c0d8c970.rlib" "/home/ubuntu/distributary/target/debug/deps/libpetgraph-ef41f5ef103ce778.rlib" "/home/ubuntu/distributary/target/debug/deps/libfixedbitset-069dd3bfb844d9ac.rlib" "/home/ubuntu/distributary/target/debug/deps/libevmap-97d097ddc1387f0f.rlib" "/home/ubuntu/distributary/target/debug/deps/libfnv-1953bcde9b6fff16.rlib" "/home/ubuntu/distributary/target/debug/deps/libslog_term-7bf030caf0f7defe.rlib" "/home/ubuntu/distributary/target/debug/deps/libslog_stream-173624b318b06bc5.rlib" "/home/ubuntu/distributary/target/debug/deps/libslog_extra-6ea634c9e0a2043e.rlib" "/home/ubuntu/distributary/target/debug/deps/librustful-d9e4a6982e0a6950.rlib" "/home/ubuntu/distributary/target/debug/deps/libnum_cpus-0f2241d72e65907e.rlib" "/home/ubuntu/distributary/target/debug/deps/libhyper-3bdb1992536ae1e4.rlib" "/home/ubuntu/distributary/target/debug/deps/libsolicit-57df9fdb4acc1156.rlib" "/home/ubuntu/distributary/target/debug/deps/libtypeable-316885cdc9b7ff78.rlib" "/home/ubuntu/distributary/target/debug/deps/libtraitobject-ab8a7d0301323955.rlib" "/home/ubuntu/distributary/target/debug/deps/libmultipart-58c733ff28261c35.rlib" "/home/ubuntu/distributary/target/debug/deps/libbuf_redux-31692a39107c7950.rlib" "/home/ubuntu/distributary/target/debug/deps/libtempdir-0ee757a585f719dd.rlib" "/home/ubuntu/distributary/target/debug/deps/libenv_logger-25d6e02029b27322.rlib" "/home/ubuntu/distributary/target/debug/deps/libslog-7e4e4dcd4539ca87.rlib" "/home/ubuntu/distributary/target/debug/deps/libnum_cpus-40879e9ed1a40827.rlib" "/home/ubuntu/distributary/target/debug/deps/libanymap-b16f3b3eb5741212.rlib" "/home/ubuntu/distributary/target/debug/deps/libtokio_proto-d14ac39e5e51a7d7.rlib" "/home/ubuntu/distributary/target/debug/deps/libtokio_service-0afbdb2e24f4af7f.rlib" "/home/ubuntu/distributary/target/debug/deps/libtake-a2b6204a09f84dad.rlib" "/home/ubuntu/distributary/target/debug/deps/libsmallvec-a2a54d79bf051b89.rlib" "/home/ubuntu/distributary/target/debug/deps/libtokio_core-70b906545a29c574.rlib" "/home/ubuntu/distributary/target/debug/deps/libmio-fc98e62c3823f86e.rlib" "/home/ubuntu/distributary/target/debug/deps/libnet2-32f659e95deed84f.rlib" "/home/ubuntu/distributary/target/debug/deps/liblazycell-f0c2d7897740574b.rlib" "/home/ubuntu/distributary/target/debug/deps/libscoped_tls-01b0e693814db5aa.rlib" "/home/ubuntu/distributary/target/debug/deps/libitertools-2c1f6d23e119647e.rlib" "/home/ubuntu/distributary/target/debug/deps/libeither-7d89001e12282025.rlib" "/home/ubuntu/distributary/target/debug/deps/libtimekeeper-a4a106e1f923691c.rlib" "/home/ubuntu/distributary/target/debug/deps/libansi_term-e82d81861e7fcb5e.rlib" "/home/ubuntu/distributary/target/debug/deps/libunicode_segmentation-a468118d80af9f84.rlib" "/home/ubuntu/distributary/target/debug/deps/libhttparse-416a35ac04e93d93.rlib" "/home/ubuntu/distributary/target/debug/deps/liblanguage_tags-6d1160a675955a17.rlib" "/home/ubuntu/distributary/target/debug/deps/libchrono-7f6de010bb6656a2.rlib" "/home/ubuntu/distributary/target/debug/deps/libbincode-16f840faeb16562d.rlib" "/home/ubuntu/distributary/target/debug/deps/libbyteorder-240cc8a1e1423fad.rlib" "/home/ubuntu/distributary/target/debug/deps/libspmc-8e8ca08310434a3c.rlib" "/home/ubuntu/distributary/target/debug/deps/libslab-1381e1711ce95cec.rlib" "/home/ubuntu/distributary/target/debug/deps/libregex-bf57a839db75dbae.rlib" "/home/ubuntu/distributary/target/debug/deps/libutf8_ranges-142806e76d52d8c6.rlib" "/home/ubuntu/distributary/target/debug/deps/libregex_syntax-8b74a2985735b213.rlib" "/home/ubuntu/distributary/target/debug/deps/libthread_local-a561abce7ea185f1.rlib" "/home/ubuntu/distributary/target/debug/deps/libthread_id-e41c347f28e6505f.rlib" "/home/ubuntu/distributary/target/debug/deps/libaho_corasick-c795bbd3a96f4a35.rlib" "/home/ubuntu/distributary/target/debug/deps/libmemchr-4c3682d5f0e14581.rlib" "/home/ubuntu/distributary/target/debug/deps/libnom-c11a5cbc9654b215.rlib" "/home/ubuntu/distributary/target/debug/deps/libmime_guess-837a1663a12e89bf.rlib" "/home/ubuntu/distributary/target/debug/deps/libphf-f336a4b1a1bdb730.rlib" "/home/ubuntu/distributary/target/debug/deps/libphf_shared-499238f4644c4820.rlib" "/home/ubuntu/distributary/target/debug/deps/libunicase-5cd5823de23f633f.rlib" "/home/ubuntu/distributary/target/debug/deps/libmime-f494f23336624a9a.rlib" "/home/ubuntu/distributary/target/debug/deps/libstrsim-61ec477beacb0d4b.rlib" "/home/ubuntu/distributary/target/debug/deps/libterm_size-49ef496404f3e5db.rlib" "/home/ubuntu/distributary/target/debug/deps/libcookie-0f4002eb04ad7b30.rlib" "/home/ubuntu/distributary/target/debug/deps/libtime-cd5e3a346d1a17b6.rlib" "/home/ubuntu/distributary/target/debug/deps/liburl-aa3392667e4f87a3.rlib" "/home/ubuntu/distributary/target/debug/deps/libidna-3bab7d99255950c3.rlib" "/home/ubuntu/distributary/target/debug/deps/libunicode_normalization-0297b14f098a4d93.rlib" "/home/ubuntu/distributary/target/debug/deps/libunicode_bidi-b21b1d9dc1833286.rlib" "/home/ubuntu/distributary/target/debug/deps/libmatches-8f1598a59712d6cc.rlib" "/home/ubuntu/distributary/target/debug/deps/libthread_local-c8755f64dce6c8cd.rlib" "/home/ubuntu/distributary/target/debug/deps/libunreachable-ebcc746f6a526ccc.rlib" "/home/ubuntu/distributary/target/debug/deps/libvoid-408bd2d66dde02c1.rlib" "/home/ubuntu/distributary/target/debug/deps/libthread_id-7c664cbece6d9f97.rlib" "/home/ubuntu/distributary/target/debug/deps/libhpack-cedaba108ae550f7.rlib" "/home/ubuntu/distributary/target/debug/deps/libisatty-02586bf5f6f35699.rlib" "/home/ubuntu/distributary/target/debug/deps/liblazy_static-82c2efae9a7bf732.rlib" "/home/ubuntu/distributary/target/debug/deps/libhdrsample-051edeac4ce98b92.rlib" "/home/ubuntu/distributary/target/debug/deps/libnum-6ce289b56f32382f.rlib" "/home/ubuntu/distributary/target/debug/deps/libnum_rational-0162ef58e267dc13.rlib" "/home/ubuntu/distributary/target/debug/deps/libnum_bigint-f41de0087edd8a71.rlib" "/home/ubuntu/distributary/target/debug/deps/librand-c9d9fbdab2355ee4.rlib" "/home/ubuntu/distributary/target/debug/deps/liblibc-5dc7b85e748840b4.rlib" "/home/ubuntu/distributary/target/debug/deps/libnum_complex-57a11a875ce86980.rlib" "/home/ubuntu/distributary/target/debug/deps/librustc_serialize-2c0b16b7ceb9fdcb.rlib" "/home/ubuntu/distributary/target/debug/deps/libnum_iter-e3d53b72a44dd492.rlib" "/home/ubuntu/distributary/target/debug/deps/libnum_integer-bbbfaf8dce75e1b6.rlib" "/home/ubuntu/distributary/target/debug/deps/libnum_traits-69f4129d46397118.rlib" "/home/ubuntu/distributary/target/debug/deps/libfutures-e55d45cfd50e0707.rlib" "/home/ubuntu/distributary/target/debug/deps/liblog-d4c0e5c2504fbbea.rlib" "/home/ubuntu/distributary/target/debug/deps/libcfg_if-5cf5b4dd25466da1.rlib" "/home/ubuntu/distributary/target/debug/deps/libarccstr-57c89c80b11e3cf6.rlib" "/home/ubuntu/distributary/target/debug/deps/libserde-e9bfb02f34c97433.rlib" "/home/ubuntu/distributary/target/debug/deps/libordermap-2bde98eb47fe8c07.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-9a66b6a343d52844.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-9d79f761aa668a33.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-2beb731af7a6faec.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-6bc49e032a89c77d.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcollections-a2a467c3ca3b6479.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-ce7b9706e1719f27.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-4b74d6f2808677d3.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-95af4192ed69a1c8.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_unicode-e54225ff8f33e08f.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-cd0ca85e71f914ca.rlib" "/home/ubuntu/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-0bf24067248742a8.rlib" "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "gcc_s" "-l" "pthread" "-l" "c" "-l" "m" "-l" "rt" "-l" "util"
  = note: /home/ubuntu/distributary/target/debug/deps/vote-30cc369bcc56fe7f.0.o: In function `distributary::flow::{{impl}}::send::{{closure}}::{{closure}}':
          /home/ubuntu/distributary/src/flow/mod.rs:288: undefined reference to `distributary::flow::Mutator::send::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::_FILE_LINE::h38cefdcb728fc9f0'
          collect2: error: ld returned 1 exit status

gcc 6.3.0 on Ubuntu 16.04.4

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/jfrg/distributary/target/debug/deps/vote-c8dd3585b6f697d3.0.o" "-o" "/home/jfrg/distributary/target/debug/deps/vote-c8dd3585b6f697d3" "-Wl,--gc-sections" "-pie" "-nodefaultlibs" "-L" "/home/jfrg/distributary/target/debug/deps" "-L" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "-Wl,-Bdynamic" "/home/jfrg/distributary/target/debug/deps/libclap-570827f233cbe1af.rlib" "/home/jfrg/distributary/target/debug/deps/libvec_map-ff093b9efea9abbb.rlib" "/home/jfrg/distributary/target/debug/deps/libbitflags-65ddff5d2b91509e.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_width-cde6328ef82d354d.rlib" "/home/jfrg/distributary/target/debug/deps/libdistributary-7dc3a7290006e587.rlib" "/home/jfrg/distributary/target/debug/deps/libtarpc-97342caa9ec927f2.rlib" "/home/jfrg/distributary/target/debug/deps/libnom_sql-b2603aa7c0d8c970.rlib" "/home/jfrg/distributary/target/debug/deps/libpetgraph-ef41f5ef103ce778.rlib" "/home/jfrg/distributary/target/debug/deps/libfixedbitset-069dd3bfb844d9ac.rlib" "/home/jfrg/distributary/target/debug/deps/libevmap-97d097ddc1387f0f.rlib" "/home/jfrg/distributary/target/debug/deps/libfnv-1953bcde9b6fff16.rlib" "/home/jfrg/distributary/target/debug/deps/libslog_term-7bf030caf0f7defe.rlib" "/home/jfrg/distributary/target/debug/deps/libslog_stream-173624b318b06bc5.rlib" "/home/jfrg/distributary/target/debug/deps/libslog_extra-6ea634c9e0a2043e.rlib" "/home/jfrg/distributary/target/debug/deps/librustful-d9e4a6982e0a6950.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_cpus-0f2241d72e65907e.rlib" "/home/jfrg/distributary/target/debug/deps/libhyper-3bdb1992536ae1e4.rlib" "/home/jfrg/distributary/target/debug/deps/libsolicit-57df9fdb4acc1156.rlib" "/home/jfrg/distributary/target/debug/deps/libtypeable-316885cdc9b7ff78.rlib" "/home/jfrg/distributary/target/debug/deps/libtraitobject-ab8a7d0301323955.rlib" "/home/jfrg/distributary/target/debug/deps/libmultipart-58c733ff28261c35.rlib" "/home/jfrg/distributary/target/debug/deps/libbuf_redux-31692a39107c7950.rlib" "/home/jfrg/distributary/target/debug/deps/libtempdir-0ee757a585f719dd.rlib" "/home/jfrg/distributary/target/debug/deps/libenv_logger-25d6e02029b27322.rlib" "/home/jfrg/distributary/target/debug/deps/libslog-7e4e4dcd4539ca87.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_cpus-40879e9ed1a40827.rlib" "/home/jfrg/distributary/target/debug/deps/libanymap-b16f3b3eb5741212.rlib" "/home/jfrg/distributary/target/debug/deps/libtokio_proto-d14ac39e5e51a7d7.rlib" "/home/jfrg/distributary/target/debug/deps/libtokio_service-0afbdb2e24f4af7f.rlib" "/home/jfrg/distributary/target/debug/deps/libtake-a2b6204a09f84dad.rlib" "/home/jfrg/distributary/target/debug/deps/libsmallvec-a2a54d79bf051b89.rlib" "/home/jfrg/distributary/target/debug/deps/libtokio_core-70b906545a29c574.rlib" "/home/jfrg/distributary/target/debug/deps/libmio-fc98e62c3823f86e.rlib" "/home/jfrg/distributary/target/debug/deps/libnet2-32f659e95deed84f.rlib" "/home/jfrg/distributary/target/debug/deps/liblazycell-f0c2d7897740574b.rlib" "/home/jfrg/distributary/target/debug/deps/libscoped_tls-01b0e693814db5aa.rlib" "/home/jfrg/distributary/target/debug/deps/libitertools-2c1f6d23e119647e.rlib" "/home/jfrg/distributary/target/debug/deps/libeither-7d89001e12282025.rlib" "/home/jfrg/distributary/target/debug/deps/libtimekeeper-a4a106e1f923691c.rlib" "/home/jfrg/distributary/target/debug/deps/libansi_term-e82d81861e7fcb5e.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_segmentation-a468118d80af9f84.rlib" "/home/jfrg/distributary/target/debug/deps/libhttparse-416a35ac04e93d93.rlib" "/home/jfrg/distributary/target/debug/deps/liblanguage_tags-6d1160a675955a17.rlib" "/home/jfrg/distributary/target/debug/deps/libchrono-7f6de010bb6656a2.rlib" "/home/jfrg/distributary/target/debug/deps/libbincode-16f840faeb16562d.rlib" "/home/jfrg/distributary/target/debug/deps/libbyteorder-240cc8a1e1423fad.rlib" "/home/jfrg/distributary/target/debug/deps/libspmc-8e8ca08310434a3c.rlib" "/home/jfrg/distributary/target/debug/deps/libslab-1381e1711ce95cec.rlib" "/home/jfrg/distributary/target/debug/deps/libregex-bf57a839db75dbae.rlib" "/home/jfrg/distributary/target/debug/deps/libutf8_ranges-142806e76d52d8c6.rlib" "/home/jfrg/distributary/target/debug/deps/libregex_syntax-8b74a2985735b213.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_local-a561abce7ea185f1.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_id-e41c347f28e6505f.rlib" "/home/jfrg/distributary/target/debug/deps/libaho_corasick-c795bbd3a96f4a35.rlib" "/home/jfrg/distributary/target/debug/deps/libmemchr-4c3682d5f0e14581.rlib" "/home/jfrg/distributary/target/debug/deps/libnom-c11a5cbc9654b215.rlib" "/home/jfrg/distributary/target/debug/deps/libmime_guess-837a1663a12e89bf.rlib" "/home/jfrg/distributary/target/debug/deps/libphf-f336a4b1a1bdb730.rlib" "/home/jfrg/distributary/target/debug/deps/libphf_shared-499238f4644c4820.rlib" "/home/jfrg/distributary/target/debug/deps/libunicase-5cd5823de23f633f.rlib" "/home/jfrg/distributary/target/debug/deps/libmime-f494f23336624a9a.rlib" "/home/jfrg/distributary/target/debug/deps/libstrsim-61ec477beacb0d4b.rlib" "/home/jfrg/distributary/target/debug/deps/libterm_size-49ef496404f3e5db.rlib" "/home/jfrg/distributary/target/debug/deps/libcookie-0f4002eb04ad7b30.rlib" "/home/jfrg/distributary/target/debug/deps/libtime-cd5e3a346d1a17b6.rlib" "/home/jfrg/distributary/target/debug/deps/liburl-aa3392667e4f87a3.rlib" "/home/jfrg/distributary/target/debug/deps/libidna-3bab7d99255950c3.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_normalization-0297b14f098a4d93.rlib" "/home/jfrg/distributary/target/debug/deps/libunicode_bidi-b21b1d9dc1833286.rlib" "/home/jfrg/distributary/target/debug/deps/libmatches-8f1598a59712d6cc.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_local-c8755f64dce6c8cd.rlib" "/home/jfrg/distributary/target/debug/deps/libunreachable-ebcc746f6a526ccc.rlib" "/home/jfrg/distributary/target/debug/deps/libvoid-408bd2d66dde02c1.rlib" "/home/jfrg/distributary/target/debug/deps/libthread_id-7c664cbece6d9f97.rlib" "/home/jfrg/distributary/target/debug/deps/libhpack-cedaba108ae550f7.rlib" "/home/jfrg/distributary/target/debug/deps/libisatty-02586bf5f6f35699.rlib" "/home/jfrg/distributary/target/debug/deps/liblazy_static-82c2efae9a7bf732.rlib" "/home/jfrg/distributary/target/debug/deps/libhdrsample-051edeac4ce98b92.rlib" "/home/jfrg/distributary/target/debug/deps/libnum-6ce289b56f32382f.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_rational-0162ef58e267dc13.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_bigint-f41de0087edd8a71.rlib" "/home/jfrg/distributary/target/debug/deps/librand-c9d9fbdab2355ee4.rlib" "/home/jfrg/distributary/target/debug/deps/liblibc-5dc7b85e748840b4.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_complex-57a11a875ce86980.rlib" "/home/jfrg/distributary/target/debug/deps/librustc_serialize-2c0b16b7ceb9fdcb.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_iter-e3d53b72a44dd492.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_integer-bbbfaf8dce75e1b6.rlib" "/home/jfrg/distributary/target/debug/deps/libnum_traits-69f4129d46397118.rlib" "/home/jfrg/distributary/target/debug/deps/libfutures-e55d45cfd50e0707.rlib" "/home/jfrg/distributary/target/debug/deps/liblog-d4c0e5c2504fbbea.rlib" "/home/jfrg/distributary/target/debug/deps/libcfg_if-5cf5b4dd25466da1.rlib" "/home/jfrg/distributary/target/debug/deps/libarccstr-57c89c80b11e3cf6.rlib" "/home/jfrg/distributary/target/debug/deps/libserde-e9bfb02f34c97433.rlib" "/home/jfrg/distributary/target/debug/deps/libordermap-2bde98eb47fe8c07.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-9a66b6a343d52844.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-9d79f761aa668a33.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-2beb731af7a6faec.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-6bc49e032a89c77d.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcollections-a2a467c3ca3b6479.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-ce7b9706e1719f27.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-4b74d6f2808677d3.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-95af4192ed69a1c8.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_unicode-e54225ff8f33e08f.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-cd0ca85e71f914ca.rlib" "/home/jfrg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-0bf24067248742a8.rlib" "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "gcc_s" "-l" "pthread" "-l" "c" "-l" "m" "-l" "rt" "-l" "util"
  = note: /home/jfrg/distributary/target/debug/deps/vote-c8dd3585b6f697d3.0.o: In function `distributary::flow::{{impl}}::send::{{closure}}::{{closure}}':
          /home/jfrg/distributary/src/flow/mod.rs:288: undefined reference to `distributary::flow::Mutator::send::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::_FILE_LINE::hef474460ee28811b'
          collect2: error: ld returned 1 exit status

Builds fine on two other machines running gcc 6.3.1 on Arch Linux

It sounds like this might be an Ubuntu issue?
Or the issue was magically fixed specifically in 6.3.1?

@jonhoo

This comment has been minimized.

Copy link
Contributor

jonhoo commented Mar 9, 2017

@eddyb Note also that this linking error happens between a binary and a library in the same crate.

@eddyb

This comment has been minimized.

Copy link
Member

eddyb commented Mar 9, 2017

@michaelwoerister @petrochenkov Anything jump out, any known limitations to symbol exports?

bors added a commit that referenced this issue Aug 14, 2017

Auto merge of #43857 - michaelwoerister:fix-impl-trait-closure-vis, r…
…=eddyb

Mark closures return via impl-trait as reachable.

This should fix some of the open `impl trait` issues, like #40839, #43135, and #35870.

r? @eddyb
@nikomatsakis

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Mar 15, 2018

Um, I presume this is fixed by now?

@jplatte jplatte closed this Feb 11, 2019

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