[tor-bugs] #15236 [Tor]: Identify functions most in need of testing, and hardest to test

Tor Bug Tracker & Wiki blackhole at torproject.org
Sun Mar 15 20:52:04 UTC 2015


#15236: Identify functions most in need of testing, and hardest to test
------------------------+--------------------------------
     Reporter:  nickm   |      Owner:
         Type:  task    |     Status:  new
     Priority:  normal  |  Milestone:  Tor: 0.2.7.x-final
    Component:  Tor     |    Version:
   Resolution:          |   Keywords:  SponsorS
Actual Points:          |  Parent ID:
       Points:          |
------------------------+--------------------------------

Comment (by nickm):

 In order to try to figure out the "hardest-to-test" functions, I've been
 looking through the Tor callgraph.

 (How do you get a callgraph? Make sure you have "clang" and "opt"
 installed, then run:
 {{{
 for f in src/common/*.c src/or/*.c ; do clang -S -emit-llvm $f -std=gnu99
 -DHAVE_CONFIG_H -I.  -I./src/ext -Isrc/ext -I./src/ext/trunnel
 -I./src/trunnel -I./src/common -Isrc/common -I./src/ext/trunnel
 -I./src/trunnel -I./src/or -Isrc/or -DSHARE_DATADIR="\"/usr/local/share\""
 -DLOCALSTATEDIR="\"/usr/local/var\"" -DBINDIR="\"/usr/local/bin\""
 -I./src/common | opt -analyze -print-callgraph 2>$f.callgraph ; done
 }}}
 Then post-process the data with a little python script, and then you're
 set.)

 If you want to see the callgraph data I got for approximately-current
 master, head over to https://people.torproject.org/~nickm/volatile/call-
 graph-stuff/ .

 Anyway, it looks as though our call-graph breaks down so that about 85% of
 our functions are nice sensible functions from which only a smaller number
 of functions are reachable... but the rest of our functions can reach
 *nearly any other function in or called by Tor*.  These are likely to be
 among the hardest to debug, given how complex their potential behavior is.

 Here is the list of the top 25 offenders, and the number of other
 functions reachable from them:
 {{{
 3157 command_process_created_cell
 3157 connection_about_to_close_connection
 3158 dns_resolve
 3158 evdns_callback
 3159 connection_exit_begin_resolve
 3161 connection_unlink
 3161 dirserv_generate_networkstatus_vote_obj
 3164 conn_close_if_marked
 3165 close_closeable_connections
 3165 dirvote_compute_consensuses
 3166 conn_read_callback
 3166 conn_write_callback
 3167 dirvote_perform_vote
 3169 connection_exit_begin_conn
 3170 command_process_create_cell
 3172 rend_process_relay_cell
 3200 dirvote_act
 3201 tor_main
 3202 main
 3266 connection_edge_process_relay_cell
 3274 circuit_receive_relay_cell
 3276 command_process_relay_cell
 3306 command_process_cell
 3355 run_scheduled_events
 3367 second_elapsed_callback
 }}}

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


More information about the tor-bugs mailing list