[tor-bugs] #27471 [Core Tor/Tor]: HS intermittently fails: Non-fatal assertion failed in send_introduce1

Tor Bug Tracker & Wiki blackhole at torproject.org
Wed Oct 17 10:55:41 UTC 2018


#27471: HS intermittently fails: Non-fatal assertion failed in send_introduce1
-------------------------------------------+-------------------------------
 Reporter:  tgragnato                      |          Owner:  dgoulet
     Type:  defect                         |         Status:
                                           |  needs_revision
 Priority:  Very High                      |      Milestone:  Tor:
                                           |  0.3.5.x-final
Component:  Core Tor/Tor                   |        Version:  Tor:
                                           |  0.3.4.7-rc
 Severity:  Minor                          |     Resolution:
 Keywords:  tor-hs, regression?, 035-must  |  Actual Points:
Parent ID:                                 |         Points:
 Reviewer:  asn                            |        Sponsor:
-------------------------------------------+-------------------------------
Changes (by asn):

 * status:  needs_review => needs_revision


Comment:

 Replying to [comment:10 dgoulet]:
 > This adds the support to close client introduction circuits when a new
 descriptor is replacing an old one so we don't end up with unusable
 circuits leading to what I think the BUG() in this ticket is showing us.
 >
 > Branch: `ticket27471_035_01`
 > PR: https://github.com/torproject/tor/pull/400

 Not a huge fan of this patch. I feel like I don't understand enough to ACK
 or NACK it.

 The way I see it, is that this adds 100 non-trivial LoCs for a very
 unlikely edge-case that we think is causing the issue. Basically the
 assumption is that we just completed a rendezvous circuit, and between
 building the circuit and sending an `INTRODUCE1` we happen to have fetched
 a new HS descriptor. Sounds plausible, but I don't quite understand why
 this edge-case would happen to two people so quickly; it seems pretty
 rare. What do we think made the client fetch a new HS descriptor at that
 exact time?

 Another thing I don't like here is that we are adding a whole new
 "feature" of closing these useless connections that usually don't exist so
 all this new code will be unused 99.9% of the times.

 Instead of that I would try to handle the `BUG()` in question more
 gracefully, and in the edge-case where we can't find an `ip` object for
 the circuit, we close the intro circuit, and establish a new one. Seems to
 me like this is a more natural way to do it, and less lines of code. Then
 the useless introduction circuit would just timeout at some point and
 become a measurement circuit or something.

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


More information about the tor-bugs mailing list