[tor-bugs] #25306 [Core Tor/Tor]: tor_assertion_failed_(): Bug: ../src/or/hs_service.c:1985: rotate_all_descriptors: Assertion service->desc_current failed; aborting.
Tor Bug Tracker & Wiki
blackhole at torproject.org
Fri Feb 23 13:37:30 UTC 2018
#25306: tor_assertion_failed_(): Bug: ../src/or/hs_service.c:1985:
rotate_all_descriptors: Assertion service->desc_current failed; aborting.
------------------------------------------------+--------------------------
Reporter: cypherpunks | Owner: (none)
Type: defect | Status: new
Priority: Medium | Milestone: Tor:
| 0.3.3.x-final
Component: Core Tor/Tor | Version: Tor:
| 0.3.3.2-alpha
Severity: Normal | Resolution:
Keywords: tor-hs crash 033-must 032-backport | Actual Points:
Parent ID: | Points:
Reviewer: | Sponsor:
------------------------------------------------+--------------------------
Comment (by dgoulet):
Hmmmmmm there is something very weird in `rotate_all_descriptors()`.
See the comment in this code snippet:
{{{
/* Note for a service booting up: Both descriptors are NULL in that
case
* so this function might return true if we are in the timeframe for a
* rotation leading to basically swapping two NULL pointers which is
* harmless. However, the side effect is that triggering a rotation
will
* update the service state and avoid doing anymore rotations after
the
* two descriptors have been built. */
if (!should_rotate_descriptors(service, now)) {
continue;
}
tor_assert(service->desc_current);
tor_assert(service->desc_next);
}}}
We do rotation _before_ building descriptors (assuming we are booting up).
The comment mentions that it is possible to have NULL descriptors at first
and that is OK because we just swap NULL pointers.
But then why those asserts!? Comes from commit `cd07af60c9e` but it
doesn't tell me much why they were put there especially with such a
comment.
I think those asserts() should *not* be there and we haven't hit those yet
because when tor boots up, I bet we are able to build the descriptors
before we get the latest consensus so when we end up in a situation where
`should_rotate_descriptors()` returns true, we have the descriptors.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/25306#comment:6>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list