[tor-bugs] #25386 [Core Tor/Tor]: Link Rust Tests to C Dependencies in Tor (allow integration testing from Rust to C)

Tor Bug Tracker & Wiki blackhole at torproject.org
Wed Aug 8 18:07:39 UTC 2018


#25386: Link Rust Tests to C Dependencies in Tor (allow integration testing from
Rust to C)
-------------------------------------------------+-------------------------
 Reporter:  Hello71                              |          Owner:  nickm
     Type:  defect                               |         Status:
                                                 |  accepted
 Priority:  High                                 |      Milestone:  Tor:
                                                 |  unspecified
Component:  Core Tor/Tor                         |        Version:  Tor:
                                                 |  0.3.3.1-alpha
 Severity:  Normal                               |     Resolution:
 Keywords:  rust, tor-test, 033-backport,        |  Actual Points:
  review-group-34, 034-triage-20180328,          |
  034-included-20180401, 035-removed-20180711    |
Parent ID:                                       |         Points:  3
 Reviewer:  isis                                 |        Sponsor:
                                                 |  SponsorQ
-------------------------------------------------+-------------------------

Comment (by Hello71):

 Replying to [comment:76 catalyst]:
 > I'm making a quick note here because it might be a while before I can do
 an up-to-date replication recipe.  `--enable-fragile-hardening` still
 results in link errors.
 >
 > This failed for me on Xenial amd64 with the OS Rust packages installed.
 I haven't built the failing configuration for a while, but see below.
 >
 > This also seems to still fail on Travis, e.g.,
 >
 > {{{
 > error: linking with `/home/travis/build/torproject/tor/link_rust.sh`
 failed: exit code: 1
 >   |
 >   = note: "/home/travis/build/torproject/tor/link_rust.sh" "-Wl,--as-
 needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/travis/.rustup/toolchains
 /stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/crypto-
 ace3d04d5d6c7104.1y16o1qfye96o7m0.rcgu.o"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/crypto-
 ace3d04d5d6c7104.3rngp6bm2u2q5z0y.rcgu.o"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/crypto-
 ace3d04d5d6c7104.4mjvrpa5so4so4jc.rcgu.o"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/crypto-
 ace3d04d5d6c7104.4oc10dk278mpk1vy.rcgu.o"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/crypto-
 ace3d04d5d6c7104.oa3rad818d8sgn4.rcgu.o" "-o"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/crypto-
 ace3d04d5d6c7104"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/crypto-
 ace3d04d5d6c7104.crate.allocator.rcgu.o" "-Wl,--gc-sections" "-pie"
 "-Wl,-z,relro,-z,now" "-nodefaultlibs" "-L"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps" "-L"
 "/home/travis/build/torproject/tor/src/lib" "-L"
 "/home/travis/build/torproject/tor/src/ext/keccak-tiny" "-L"
 "/home/travis/build/torproject/tor/src/ext/ed25519/ref10" "-L"
 "/home/travis/build/torproject/tor/src/ext/ed25519/donna" "-L"
 "/home/travis/build/torproject/tor/src/trunnel" "-L"
 "/home/travis/.rustup/toolchains/stable-x86_64-unknown-linux-
 gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "-Wl,--whole-
 archive" "-l" "tor-crypt-ops-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-sandbox-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-encoding-testing" "-Wl,--no-whole-archive"
 "-Wl,--whole-archive" "-l" "tor-fs-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-time-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-net-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-thread-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-memarea-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-log-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-lock-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-fdio-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-container-testing" "-Wl,--no-whole-archive"
 "-Wl,--whole-archive" "-l" "tor-smartlist-core-testing" "-Wl,--no-whole-
 archive" "-Wl,--whole-archive" "-l" "tor-string-testing" "-Wl,--no-whole-
 archive" "-Wl,--whole-archive" "-l" "tor-malloc" "-Wl,--no-whole-archive"
 "-Wl,--whole-archive" "-l" "tor-wallclock" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-err-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-intmath-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "tor-ctime-testing" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "curve25519_donna" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "keccak-tiny" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "ed25519_ref10" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "ed25519_donna" "-Wl,--no-whole-archive" "-Wl
 ,--whole-archive" "-l" "or-trunnel-testing" "-Wl,--no-whole-archive"
 "-Wl,-Bdynamic" "-l" "z" "-l" "m" "-l" "ssl" "-l" "crypto" "-l" "event"
 "-l" "lzma" "-l" "scrypt" "-l" "seccomp" "-l" "cap" "-l" "pthread" "-l"
 "dl" "-Wl,-Bstatic" "/home/travis/.rustup/toolchains/stable-x86_64
 -unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest-
 b66ae0f7ceefd4a4.rlib" "/home/travis/.rustup/toolchains/stable-x86_64
 -unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libterm-
 d827f4b0e7afdcf0.rlib" "/home/travis/.rustup/toolchains/stable-x86_64
 -unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgetopts-
 beedc388f272415a.rlib"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/libexternal-
 b51270571fdbe9aa.rlib"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps
 /libsmartlist-bef593dabcf59f69.rlib"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/librand-
 dcbd058a5a82c6a4.rlib"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps
 /librand_core-ffccd4631e4e00cb.rlib"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/liblibc-
 212792d827b59ce3.rlib"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/libdigest-
 7a6c0b2ac402fc2f.rlib"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps
 /libgeneric_array-433158e47fbb9822.rlib"
 "/home/travis/build/torproject/tor/src/rust/target/debug/deps/libtypenum-
 4ef63ac97eea58b4.rlib" "-Wl,--start-group"
 "/home/travis/.rustup/toolchains/stable-x86_64-unknown-linux-
 gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-0cce0e0e34e933aa.rlib"
 "/home/travis/.rustup/toolchains/stable-x86_64-unknown-linux-
 gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-
 7bed87070cafeede.rlib" "/home/travis/.rustup/toolchains/stable-x86_64
 -unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib
 /liballoc_jemalloc-e76963fdf0c94daa.rlib" "/home/travis/.rustup/toolchains
 /stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib
 /libunwind-8cd3b0417a81fb26.rlib" "/home/travis/.rustup/toolchains/stable-
 x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib
 /liballoc_system-387bd949d1b36a91.rlib" "/home/travis/.rustup/toolchains
 /stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib
 /liblibc-453d825a151d7dec.rlib" "/home/travis/.rustup/toolchains/stable-
 x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib
 /liballoc-5235bf36189564a3.rlib" "/home/travis/.rustup/toolchains/stable-
 x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-
 5725e7f9b84bd931.rlib" "-Wl,--end-group" "/home/travis/.rustup/toolchains
 /stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib
 /libcompiler_builtins-874d313336916306.rlib" "-Wl,-Bdynamic" "-l" "util"
 "-l" "util" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "pthread" "-l" "gcc_s"
 "-l" "c" "-l" "m" "-l" "rt" "-l" "pthread" "-l" "util" "-l" "util"
 >   = note: /home/travis/build/torproject/tor/src/lib/libtor-crypt-ops-
 testing.a(src_lib_libtor_crypt_ops_testing_a-crypto_rand.o): In function
 `crypto_strongest_rand_raw':
 >
 /home/travis/build/torproject/tor/src/lib/crypt_ops/crypto_rand.c:276:
 undefined reference to `__asan_handle_no_return'
 > }}}
 >
 > Full log in https://api.travis-ci.org/v3/job/413659207/log.txt
 >
 > Note: Travis is still on Trusty last I checked.

 I think the correct incantation might actually be `-fsanitize=address
 -static-libasan` (and similar for ubsan). nickm, do you know what versions
 of gcc, clang, Rust you tested with?

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/25386#comment:78>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list