Travis cache sticky failures
It looks like there's at least one example of Travis caching corrupt artifacts in a way that causes "sticky" failures when attempting to rebuild that subjob. I had to clear the caches to get it to rebuild.
We should keep track of future instances of this kind of failure. We should also decide whether the speedup from the cache is worth the time spent diagnosing persistent failures that turn out to be cached.
gcc -std=gnu99 -ftrapv -fsanitize=address -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-all -Wstack-protector --param ssp-buffer-size=1 -fPIE -fno-omit-frame-pointer -fasynchronous-unwind-tables -Wall -fno-strict-aliasing -Waddress -Warray-bounds -Wdouble-promotion -Wextra -Winit-self -Wlogical-op -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-noreturn -Wnormalized=nfkc -Woverlength-strings -Woverride-init -Wshadow -Wstrict-overflow=1 -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wsync-nand -Wtrampolines -Wunused-but-set-parameter -Wunused-but-set-variable -Wunused-local-typedefs -Wvariadic-macros -W -Wfloat-equal -Wundef -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat=2 -Wwrite-strings -Wnested-externs -Wbad-function-cast -Wswitch-enum -Waggregate-return -Wpacked -Wunused -Wunused-parameter -Wold-style-definition -Wmissing-declarations -Werror -pie -z relro -z now -rdynamic -o src/test/test src/test/src_test_test-log_test_helpers.o src/test/src_test_test-hs_test_helpers.o src/test/src_test_test-rend_test_helpers.o src/test/src_test_test-test.o src/test/src_test_test-test_accounting.o src/test/src_test_test-test_addr.o src/test/src_test_test-test_address.o src/test/src_test_test-test_address_set.o src/test/src_test_test-test_bridges.o src/test/src_test_test-test_buffers.o src/test/src_test_test-test_bwmgt.o src/test/src_test_test-test_cell_formats.o src/test/src_test_test-test_cell_queue.o src/test/src_test_test-test_channel.o src/test/src_test_test-test_channelpadding.o src/test/src_test_test-test_channeltls.o src/test/src_test_test-test_checkdir.o src/test/src_test_test-test_circuitlist.o src/test/src_test_test-test_circuitmux.o src/test/src_test_test-test_circuitbuild.o src/test/src_test_test-test_circuituse.o src/test/src_test_test-test_circuitstats.o src/test/src_test_test-test_compat_libevent.o src/test/src_test_test-test_config.o src/test/src_test_test-test_connection.o src/test/src_test_test-test_conscache.o src/test/src_test_test-test_consdiff.o src/test/src_test_test-test_consdiffmgr.o src/test/src_test_test-test_containers.o src/test/src_test_test-test_controller.o src/test/src_test_test-test_controller_events.o src/test/src_test_test-test_crypto.o src/test/src_test_test-test_crypto_ope.o src/test/src_test_test-test_data.o src/test/src_test_test-test_dir.o src/test/src_test_test-test_dir_common.o src/test/src_test_test-test_dir_handle_get.o src/test/src_test_test-test_dos.o src/test/src_test_test-test_entryconn.o src/test/src_test_test-test_entrynodes.o src/test/src_test_test-test_geoip.o src/test/src_test_test-test_guardfraction.o src/test/src_test_test-test_extorport.o src/test/src_test_test-test_hs.o src/test/src_test_test-test_hs_common.o src/test/src_test_test-test_hs_config.o src/test/src_test_test-test_hs_cell.o src/test/src_test_test-test_hs_ntor.o src/test/src_test_test-test_hs_service.o src/test/src_test_test-test_hs_client.o src/test/src_test_test-test_hs_intropoint.o src/test/src_test_test-test_hs_control.o src/test/src_test_test-test_handles.o src/test/src_test_test-test_hs_cache.o src/test/src_test_test-test_hs_descriptor.o src/test/src_test_test-test_introduce.o src/test/src_test_test-test_keypin.o src/test/src_test_test-test_link_handshake.o src/test/src_test_test-test_logging.o src/test/src_test_test-test_mainloop.o src/test/src_test_test-test_microdesc.o src/test/src_test_test-test_nodelist.o src/test/src_test_test-test_oom.o src/test/src_test_test-test_oos.o src/test/src_test_test-test_options.o src/test/src_test_test-test_pem.o src/test/src_test_test-test_periodic_event.o src/test/src_test_test-test_policy.o src/test/src_test_test-test_procmon.o src/test/src_test_test-test_proto_http.o src/test/src_test_test-test_proto_misc.o src/test/src_test_test-test_protover.o src/test/src_test_test-test_pt.o src/test/src_test_test-test_relay.o src/test/src_test_test-test_relaycell.o src/test/src_test_test-test_relaycrypt.o src/test/src_test_test-test_rendcache.o src/test/src_test_test-test_replay.o src/test/src_test_test-test_router.o src/test/src_test_test-test_routerkeys.o src/test/src_test_test-test_routerlist.o src/test/src_test_test-test_routerset.o src/test/src_test_test-test_scheduler.o src/test/src_test_test-test_shared_random.o src/test/src_test_test-test_socks.o src/test/src_test_test-test_status.o src/test/src_test_test-test_storagedir.o src/test/src_test_test-test_threads.o src/test/src_test_test-test_tortls.o src/test/src_test_test-test_util.o src/test/src_test_test-test_util_format.o src/test/src_test_test-test_util_process.o src/test/src_test_test-test_voting_schedule.o src/test/src_test_test-test_x509.o src/test/src_test_test-test_helpers.o src/test/src_test_test-test_dns.o src/test/src_test_test-testing_common.o src/test/src_test_test-testing_rsakeys.o src/ext/src_test_test-tinytest.o src/test/src_test_test-test_crypto_openssl.o src/test/src_test_test-test_tortls_openssl.o src/core/libtor-app-testing.a src/lib/libtor-compress-testing.a src/lib/libtor-evloop-testing.a src/lib/libtor-tls-testing.a src/lib/libtor-crypt-ops-testing.a src/ext/keccak-tiny/libkeccak-tiny.a src/lib/libcurve25519_donna.a src/ext/ed25519/ref10/libed25519_ref10.a src/ext/ed25519/donna/libed25519_donna.a src/lib/libtor-process-testing.a src/lib/libtor-time-testing.a src/lib/libtor-fs-testing.a src/lib/libtor-encoding-testing.a src/lib/libtor-sandbox-testing.a src/lib/libtor-container-testing.a src/lib/libtor-net-testing.a src/lib/libtor-thread-testing.a src/lib/libtor-memarea-testing.a src/lib/libtor-math-testing.a src/lib/libtor-meminfo-testing.a src/lib/libtor-osinfo-testing.a src/lib/libtor-term-testing.a src/lib/libtor-log-testing.a src/lib/libtor-lock-testing.a src/lib/libtor-fdio-testing.a src/lib/libtor-string-testing.a src/lib/libtor-smartlist-core-testing.a src/lib/libtor-malloc-testing.a src/lib/libtor-wallclock-testing.a src/lib/libtor-err-testing.a src/lib/libtor-intmath.a src/lib/libtor-ctime-testing.a src/trunnel/libor-trunnel-testing.a src/lib/libtor-trace.a -lz -lm -levent -lssl -lcrypto -llzma -lscrypt -lseccomp -lcap -lpthread -ldl
src/core/libtor-app.a(connection.o): In function `connection_process_inbuf':
/home/travis/build/tlyu/tor/src/core/mainloop/connection.c:4582: undefined reference to `TO_EDGE_CONN'
src/core/libtor-app.a(connection.o): In function `connection_flushed_some':
/home/travis/build/tlyu/tor/src/core/mainloop/connection.c:4608: undefined reference to `TO_EDGE_CONN'
/home/travis/build/tlyu/tor/src/core/mainloop/connection.c:4608: undefined reference to `connection_edge_flushed_some'
This seems to have been something like a corrupted libtor-app.a or connection_edge.o that got cached.