[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-bugs] #28970 [Core Tor/Tor]: tor_bug_occurred_(): Bug: ../src/or/hs_client.c:624: setup_intro_circ_auth_key: Non-fatal assertion
#28970: tor_bug_occurred_(): Bug: ../src/or/hs_client.c:624:
setup_intro_circ_auth_key: Non-fatal assertion
-------------------------------------------------+-------------------------
Reporter: torcrash | Owner: dgoulet
Type: defect | Status:
| assigned
Priority: High | Milestone: Tor:
| 0.4.2.x-final
Component: Core Tor/Tor | Version: Tor:
| 0.3.4.9
Severity: Critical | Resolution:
Keywords: tor-client, tor-hs, postfreeze-ok, | Actual Points: 0.1
040-unreached-must, network-team-roadmap- |
august, regression?, 041-unreached-must, |
042-should |
Parent ID: #29995 | Points: 5
Reviewer: asn | Sponsor:
| Sponsor27-must
-------------------------------------------------+-------------------------
Changes (by dgoulet):
* actualpoints: => 0.1
Comment:
Aaaaaaah!!!
`hs_client_purge_state()` is what is called on NEWNYM which purges _all_
descriptor from the client cache.
Which means that for an INTRO circuit being established, once it opens, we
lookup the descriptor to get the IP object but hey surprised, no more
descriptor.
And I bet you anything that the other case of this assert() in the ticket
are because of `hs_cache_clean_as_client()` that cleans up the descriptor
while an introduction is being made. Thin window for this race but a race
nonetheless.
I see three options:
1. Assume that because of the cache clean up, we can end up in this
situation and thus remove the `BUG()` with a fat comment and close the
circuit instead of keeping it around.
2. When cleaning up descriptors, keep them in the cache if a circuit is
being established. They should be removed from the cache at the next
iteration of the cleanup (mainloop event).
3. When purging a descriptor from the cache, we also close all related
intro circuits that are _not_ yet opened.
I went with (1) which is probably what we want since this is a race that
can happen and I wouldn't feel good about keeping out of date stuff in the
cache or even worst, lying with the NEWNYM that the cache has been
"purged-but-not-really-because-you-had-an-intro-circuit". (3) is also not
so bad but (1) is very minimal.
PR: https://github.com/torproject/tor/pull/1455
Branch: `ticket28970_042_01`
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/28970#comment:33>
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