[tor-bugs] #7157 [Tor]: "Low circuit success rate %u/%u for guard %s=%s."

Tor Bug Tracker & Wiki torproject-admin at torproject.org
Thu Nov 1 01:54:22 UTC 2012


#7157: "Low circuit success rate %u/%u for guard %s=%s."
-----------------------------------------+----------------------------------
 Reporter:  arma                         |          Owner:                    
     Type:  enhancement                  |         Status:  needs_review      
 Priority:  normal                       |      Milestone:  Tor: 0.2.4.x-final
Component:  Tor                          |        Version:                    
 Keywords:  tor-client, MikePerry201210  |         Parent:                    
   Points:                               |   Actualpoints:  8                 
-----------------------------------------+----------------------------------
Changes (by mikeperry):

  * keywords:  tor-client => tor-client, MikePerry201210
  * status:  needs_revision => needs_review
  * type:  defect => enhancement
  * actualpoints:  => 8


Comment:

 Replying to [comment:3 nickm]:
 > quick review:
 >
 >   * I have a hard time understanding why the code does "%" in
 "((mult_factor * foo) % scale_factor) == 0". I guess that you're trying to
 avoid integer truncation, but won't this prevent scaling entirely?
 Suppose scale_factor is 100. It seems to me that unless first_hops and
 circuit_successes are both divisible by 100 at the same time, they'll
 never get scaled.  Can't we just reserve scaling for when the values are
 "big enough" that integer truncation won't matter?

 In my testing, any amount of integer truncation eventually led to the
 accumulation of enough roundoff error for us to either overcount or
 undercount. It was only a matter of time for larger values.

 I commented the scale_factor and mult_factor functions to be more clear
 about the fact that we only scale if there is no integer truncation, and
 that this means we should be careful when changing those parameters.

 >   * The "your guard %s=%s" code should probably get refactored to use
 the same format as node_describe , and probably to be an independent
 function.

 I looked at node_describe and router_describe, and they seemed overkill
 for this. Both functions output a bunch of info we simply do not have
 available for entry_guard_t (since we might not have a node_t or a
 routerinfo_t for the guard).. Effectively I'd be writing a custom utility
 function just to do "%s=%s" in this case, which seemed silly.


 Everything else you mentioned has been pushed to that branch. I'll try to
 test a build with this code and #3443 soon.

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


More information about the tor-bugs mailing list