double-free of MyFamily lines
Run a relay under valgrind with "myfamily moria1", and then ctrl-C it once it bootstraps. Upon exit, you'll get:
==17604== Invalid free() / delete / delete[] / realloc()
==17604== at 0x4C29E90: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==17604== by 0x277E75: config_free_lines (confline.c:323)
==17604== by 0x1F56F2: or_options_free (config.c:898)
==17604== by 0x1F6583: config_free_all (config.c:907)
==17604== by 0x157CCC: tor_free_all (main.c:3238)
==17604== by 0x157DB0: tor_cleanup (main.c:3310)
==17604== by 0x2614E5: hibernate_begin (hibernate.c:818)
==17604== by 0x1584E9: process_signal (main.c:2686)
==17604== by 0x1584E9: signal_callback (main.c:2663)
==17604== by 0x5361A14: event_base_loop (in /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5.1.9)
==17604== by 0x156E23: run_main_loop_once (main.c:2594)
==17604== by 0x156E23: run_main_loop_until_done (main.c:2648)
==17604== by 0x156E23: do_main_loop (main.c:2561)
==17604== by 0x15A664: tor_main (main.c:3745)
==17604== by 0x152628: main (tor_main.c:34)
==17604== Address 0x668f9a0 is 0 bytes inside an unallocated block of size 16 in arena "client"
User DeS originally found this bug on legacy/trac#22255 (moved), with this stack trace:
==33656== Invalid free() / delete / delete[] / realloc()
==33656== at 0x4C2BDEC: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==33656== by 0x1A4378: routerinfo_free (routerlist.c:3172)
==33656== by 0x199BF6: router_rebuild_descriptor (router.c:2449)
==33656== by 0x199CD2: router_get_my_routerinfo (router.c:2013)
==33656== by 0x1D183E: channel_tls_process_netinfo_cell (channeltls.c:1679)
==33656== by 0x1D183E: channel_tls_handle_cell (channeltls.c:1133)
==33656== by 0x2137A0: connection_or_process_cells_from_inbuf (connection_or.c:2085)
==33656== by 0x20ABE4: connection_handle_read_impl (connection.c:3451)
==33656== by 0x153CB0: conn_read_callback (main.c:736)
==33656== by 0x5363F23: event_base_loop (in /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5.1.9)
==33656== by 0x154DDC: run_main_loop_once (main.c:2594)
==33656== by 0x154DDC: run_main_loop_until_done (main.c:2648)
==33656== by 0x154DDC: do_main_loop (main.c:2561)
==33656== by 0x158594: tor_main (main.c:3745)
==33656== by 0x1507C8: main (tor_main.c:34)
==33656== Address 0x6453720 is 0 bytes inside a block of size 42 free'd
==33656== at 0x4C2BDEC: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==33656== by 0x1995BC: router_build_fresh_descriptor (router.c:2327)
==33656== by 0x199BE2: router_rebuild_descriptor (router.c:2445)
==33656== by 0x199CD2: router_get_my_routerinfo (router.c:2013)
==33656== by 0x1D183E: channel_tls_process_netinfo_cell (channeltls.c:1679)
==33656== by 0x1D183E: channel_tls_handle_cell (channeltls.c:1133)
==33656== by 0x2137A0: connection_or_process_cells_from_inbuf (connection_or.c:2085)
==33656== by 0x20ABE4: connection_handle_read_impl (connection.c:3451)
==33656== by 0x153CB0: conn_read_callback (main.c:736)
==33656== by 0x5363F23: event_base_loop (in /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5.1.9)
==33656== by 0x154DDC: run_main_loop_once (main.c:2594)
==33656== by 0x154DDC: run_main_loop_until_done (main.c:2648)
==33656== by 0x154DDC: do_main_loop (main.c:2561)
==33656== by 0x158594: tor_main (main.c:3745)
==33656== by 0x1507C8: main (tor_main.c:34)
==33656==
==33656== Invalid free() / delete / delete[] / realloc()
==33656== at 0x4C2BDEC: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==33656== by 0x1995BC: router_build_fresh_descriptor (router.c:2327)
==33656== by 0x199BE2: router_rebuild_descriptor (router.c:2445)
==33656== by 0x199CD2: router_get_my_routerinfo (router.c:2013)
==33656== by 0x19A358: router_my_exit_policy_is_reject_star (router.c:1963)
==33656== by 0x247025: dns_resolve_impl.constprop.9 (dns.c:720)
==33656== by 0x249A68: dns_resolve (dns.c:614)
==33656== by 0x2101BA: connection_exit_begin_conn (connection_edge.c:3292)
==33656== by 0x17B4A0: connection_edge_process_relay_cell (relay.c:1648)
==33656== by 0x17CCD8: circuit_receive_relay_cell (relay.c:328)
==33656== by 0x1EF725: command_process_relay_cell (command.c:542)
==33656== by 0x1EF725: command_process_cell (command.c:196)
==33656== by 0x1D19A2: channel_tls_handle_cell (channeltls.c:1152)
==33656== Address 0x6452e10 is 80 bytes inside a block of size 128 alloc'd
==33656== at 0x4C2CE8E: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==33656== by 0x5858E68: CRYPTO_realloc (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0)
==33656== by 0x58DF3B9: sk_dup (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0)
==33656== by 0x55D900D: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==33656== by 0x55D13B3: SSL_set_cipher_list (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==33656== by 0x29407E: tor_tls_session_secret_cb (tortls.c:1599)
==33656== by 0x55AD7D5: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==33656== by 0x55B1DAC: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==33656== by 0x55BF863: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==33656== by 0x2973A2: tor_tls_handshake (tortls.c:1901)
==33656== by 0x216D7F: connection_tls_continue_handshake (connection_or.c:1420)
==33656== by 0x217137: connection_tls_start_handshake (connection_or.c:1372)
==33656==
==33656== Invalid read of size 8
==33656== at 0x58E41E1: EVP_MD_CTX_cleanup (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0)
==33656== by 0x58E463D: EVP_MD_CTX_destroy (in /lib/x86_64-linux-gnu/libcrypto.so.1.0.0)
==33656== by 0x55BA0D0: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==33656== by 0x55B789B: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==33656== by 0x55D44DA: SSL_free (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==33656== by 0x295BD5: tor_tls_free (tortls.c:1794)
==33656== by 0x204EA7: connection_free_ (connection.c:572)
==33656== by 0x1536BD: conn_close_if_marked (main.c:908)
==33656== by 0x1536BD: close_closeable_connections (main.c:700)
==33656== by 0x153FE0: run_scheduled_events (main.c:1474)
==33656== by 0x153FE0: second_elapsed_callback (main.c:2175)
==33656== by 0x5363F23: event_base_loop (in /usr/lib/x86_64-linux-gnu/libevent-2.0.so.5.1.9)
==33656== by 0x154DDC: run_main_loop_once (main.c:2594)
==33656== by 0x154DDC: run_main_loop_until_done (main.c:2648)
==33656== by 0x154DDC: do_main_loop (main.c:2561)
==33656== by 0x158594: tor_main (main.c:3745)
==33656== Address 0x699aeaf2 is not stack'd, malloc'd or (recently) free'd
Once we've resolved this ticket, we should take a closer look at that last "Invalid read of size 8" stanza, and open a new ticket for it if needed.