[tor-bugs] #21027 [Core Tor/Tor]: tor_bug_occurred_(): Bug: src/or/entrynodes.c:816: entry_guard_add_to_sample_impl: Non-fatal assertion !(have_sampled_guard_with_id(gs, rsa_id_digest)) failed. (on Tor 0.3.0.0-alpha-dev 8b75261b6dc341de)

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue Feb 14 12:29:57 UTC 2017


#21027: tor_bug_occurred_(): Bug: src/or/entrynodes.c:816:
entry_guard_add_to_sample_impl: Non-fatal assertion
!(have_sampled_guard_with_id(gs, rsa_id_digest)) failed. (on Tor 0.3.0.0
-alpha-dev 8b75261b6dc341de)
-------------------------------------------------+-------------------------
 Reporter:  asn                                  |          Owner:  nickm
     Type:  defect                               |         Status:
                                                 |  needs_review
 Priority:  High                                 |      Milestone:  Tor:
                                                 |  0.3.0.x-final
Component:  Core Tor/Tor                         |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  tor-guard, tor-guards-revamp,        |  Actual Points:
  regression                                     |
Parent ID:                                       |         Points:  1
 Reviewer:                                       |        Sponsor:
-------------------------------------------------+-------------------------

Comment (by asn):

 Replying to [comment:16 nickm]:
 > Oh. Now I think I get it.  There's a possibility that the same bridge is
 listed twice among our bridges in bridge_list_get().  If that happens, if
 we go to add two bridges at a time for some reason, we'll add that bridge
 twice.
 >
 > Does my branch `bug21027_testing` branch make this bug go away?  Or does
 it change the warning at all?

 I think this is a good hypothesis!

 I managed to reproduce this non-fatal assert by using the following three
 Bridge lines  in my Tor Browser (which are actually the same underlying
 bridge with different PTs):
 {{{
 obfs3 83.212.101.3:80 A09D536DD1752D542E1FBB3C9CE4449D51298239
 scramblesuit 83.212.101.3:443 A09D536DD1752D542E1FBB3C9CE4449D51298239
 password=XTCXLG2JAMJKZW2POLBAOWOQETQSMASH
 obfs4 83.212.101.3:50000 A09D536DD1752D542E1FBB3C9CE4449D51298239
 cert=lPRQ/MXdD1t5SRZ9MquYQNT9m5DV757jtdXdlePmRCudUU9CFUOX1Tm7/meFSyPOsud7Cw
 iat-mode=0
 }}}

 I can confirm that your patch silences the non-fatal assert, but I wonder
 if it implements the right behavior. What does a user expect by putting
 the above lines in their torrc?

 IMO a user would expect that each of those three Bridge lines will be
 treated as a separate entry guard and get sampled; whereas I think your
 patch will only add one of them to the sampled set.

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


More information about the tor-bugs mailing list