[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [tor-bugs] #21415 [Core Tor/Tor]: tor_bug_occurred_: Bug: src/or/entrynodes.c:1845: select_entry_guard_for_circuit: Non-fatal assertion !(!guard_has_descriptor(guard)) failed.



#21415: tor_bug_occurred_: Bug: src/or/entrynodes.c:1845:
select_entry_guard_for_circuit: Non-fatal assertion
!(!guard_has_descriptor(guard)) failed.
-----------------------------+------------------------------------
 Reporter:  cypherpunks      |          Owner:  nickm
     Type:  defect           |         Status:  needs_review
 Priority:  Medium           |      Milestone:  Tor: 0.3.0.x-final
Component:  Core Tor/Tor     |        Version:  Tor: 0.3.0.3-alpha
 Severity:  Normal           |     Resolution:
 Keywords:  review-group-16  |  Actual Points:
Parent ID:                   |         Points:
 Reviewer:  asn              |        Sponsor:
-----------------------------+------------------------------------

Comment (by asn):

 I think the bug has been found.

 Here it is:
 {{{
   const int num_primary =
 get_n_primary_guards_to_use(GUARD_USAGE_TRAFFIC);
 ...
   SMARTLIST_FOREACH_BEGIN(gs->primary_entry_guards, entry_guard_t *,
 guard) {
 ...
     n_considered++;
 ...
     if (n_considered >= num_primary)
       break;
   } SMARTLIST_FOREACH_END(guard);
 }}}

 In the above, it seems like `get_n_primary_guards_to_use()` returns 1
 (because of DFLT_N_PRIMARY_GUARDS_TO_USE), and then we only actually check
 the first primary guard for descriptor and `break` after that.

 This way it's possible that the second primary guard actually has no
 descriptor, and if for some reason we end up picking it (e.g. because we
 picked the first primary guard as the exit node) we will get the assert.

 What's the right fix here? Maybe to set `num_primary` to
 `smartlist_len(gs->primary_entry_guards)` and test all guards for
 descriptors before proceeding? What else?

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/21415#comment:14>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs