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

Using impl trait across crates results in linker error #35870

Closed
jplatte opened this issue Aug 21, 2016 · 12 comments · Fixed by #37676
Closed

Using impl trait across crates results in linker error #35870

jplatte opened this issue Aug 21, 2016 · 12 comments · Fixed by #37676
Labels
A-impl-trait Area: `impl Trait`. Universally / existentially quantified anonymous types with static dispatch. A-linkage Area: linking into static, shared libraries and binaries C-bug Category: This is a bug.

Comments

@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
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
Copy link
Contributor

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
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
Copy link
Contributor

@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
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
sophiajt pushed a commit to sophiajt/rust that referenced this issue Aug 22, 2016
sophiajt pushed a commit to sophiajt/rust that referenced this issue Aug 22, 2016
bors added a commit that referenced this issue Nov 28, 2016
[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
@jonhoo
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
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
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
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
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
Copy link
Member

eddyb commented Mar 9, 2017

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

@Mark-Simulacrum Mark-Simulacrum added A-impl-trait Area: `impl Trait`. Universally / existentially quantified anonymous types with static dispatch. A-linkage Area: linking into static, shared libraries and binaries labels Jun 23, 2017
@Mark-Simulacrum Mark-Simulacrum added the C-bug Category: This is a bug. label Jul 26, 2017
bors added a commit that referenced this issue Aug 14, 2017
…=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
Copy link
Contributor

Um, I presume this is fixed by now?

@jplatte jplatte closed this as completed Feb 11, 2019
osa1 added a commit to osa1/rust that referenced this issue Feb 28, 2021
Apparently rust-lang#35870 caused a problem in this code (which originally
returned an impl trait) and `#[inline]` was added as a workaround, in
ade79d7.

The issue is now fixed and the comment and `#[inline]` can now be
removed.
bors added a commit to rust-lang-ci/rust that referenced this issue Mar 2, 2021
…mulacrum

Remove an old FIXME comment and inline attribute

Apparently rust-lang#35870 caused a problem in this code (which originally
returned an impl trait) and `#[inline]` was added as a workaround, in
ade79d7.

The issue is now fixed and the comment and `#[inline]` can now be
removed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-impl-trait Area: `impl Trait`. Universally / existentially quantified anonymous types with static dispatch. A-linkage Area: linking into static, shared libraries and binaries C-bug Category: This is a bug.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants