Something is super-inefficient in router_get_extrainfo_hash()
Directory authorities take many many seconds on startup. Here's a sample "caught in action" backtrace:
#0 __strlen_sse2 () at ../sysdeps/x86_64/multiarch/../strlen.S:42
#1 0x000000000044c559 in router_get_extrainfo_hash (
s=0x7f6b1d7f85d0 "91636480,181809152,232414208,266457088,206202880,157964288,194236416,99298304,117380096,129568768,180029440,295925760,168070144,218587136,144269312,166875136,209831936,219027456,345060352,452635648,24"...,
digest=0xfffffff8 <Address 0xfffffff8 out of bounds>) at routerparse.c:690
#2 0x000000000044c5e7 in extrainfo_parse_entry_from_string (
s=0x7f6b1c191433 "extra-info Acinonyx 00753CF56F75042D24F6E89281E8DDF283F3EFAA\npublished 2012-05-05 02:42:00\nwrite-history 2012-05-05 02:36:01 (900 s) 3520512,933888,854016,495616,362496,1203200,1422336,17627136,105410"...,
end=0x7f6b1c191cb0 "\nextra-info otherland ECFAA6900D5EDFEAD6E31236D9656BBC94E9DF57\npublished 2012-05-05 02:44:28\nwrite-history 2012-05-05 02:35:55 (900 s) 797696,72704,24576,43008,21504,21504,41984,16384,29696,29696,2150"...,
cache_copy=<value optimized out>, routermap=0x3) at routerparse.c:1646
#3 0x000000000044e23d in router_parse_list_from_string (s=0x7fffcc85ce98,
eos=0x7f6b1e3fe7e1 "", dest=<value optimized out>,
saved_location=SAVED_IN_CACHE, want_extrainfo=<value optimized out>,
allow_annotations=<value optimized out>, prepend_annotations=0x0)
at routerparse.c:1199
#4 0x0000000000445afd in router_load_extrainfo_from_string (
s=0x7f6b1c191433 "extra-info Acinonyx 00753CF56F75042D24F6E89281E8DDF283F3EFAA\npublished 2012-05-05 02:42:00\nwrite-history 2012-05-05 02:36:01 (900 s) 3520512,933888,854016,495616,362496,1203200,1422336,17627136,105410"...,
eos=0x7f6b1e3fe7e1 "", saved_location=SAVED_IN_CACHE,
requested_fingerprints=<value optimized out>,
descriptor_digests=<value optimized out>) at routerlist.c:3948
#5 0x0000000000445fb9 in router_reload_router_list_impl (store=0x22f9110)
at routerlist.c:847
#6 0x0000000000446229 in router_reload_router_list () at routerlist.c:903
#7 0x0000000000409f25 in do_main_loop () at main.c:1864
#8 0x000000000040a34d in tor_main (argc=<value optimized out>,
argv=0x7fffcc85d158) at main.c:2619
#9 0x00007f6b1f75ac8d in __libc_start_main (main=<value optimized out>,
argc=<value optimized out>, ubp_av=<value optimized out>,
init=<value optimized out>, fini=<value optimized out>,
rtld_fini=<value optimized out>, stack_end=0x7fffcc85d148)
at libc-start.c:228
#10 0x0000000000408839 in _start ()