[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-bugs] #27471 [Core Tor/Tor]: HS intermittently fails: Non-fatal assertion failed in send_introduce1
#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
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs