[tor-bugs] #24977 [Core Tor/Tor]: Non-fatal assertion !(tor_mem_is_zero((const char*)node->hsdir_index->fetch, DIGEST256_LEN))

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu May 24 11:07:50 UTC 2018


#24977: Non-fatal assertion !(tor_mem_is_zero((const
char*)node->hsdir_index->fetch, DIGEST256_LEN))
-------------------------------------------------+-------------------------
 Reporter:  asn                                  |          Owner:  asn
     Type:  defect                               |         Status:
                                                 |  needs_revision
 Priority:  Medium                               |      Milestone:  Tor:
                                                 |  0.3.4.x-final
Component:  Core Tor/Tor                         |        Version:  Tor:
                                                 |  0.3.2.1-alpha
 Severity:  Normal                               |     Resolution:
 Keywords:  tor-hs, prop224,                     |  Actual Points:
  034-triage-20180328, 034-removed-20180502      |
Parent ID:                                       |         Points:  1
 Reviewer:  dgoulet                              |        Sponsor:
-------------------------------------------------+-------------------------

Comment (by asn):

 Replying to [comment:15 dgoulet]:
 > I think ideally we would like to do this if those two conditions are
 met:
 >
 > 1. Clock has jumped (at least the discrepancy from the code of 2+ sec)
 > 2. If we transition from "not live" to "live"
 >
 > Recomputing the voting timings and HSDir index only makes sense if we
 had a consensus before that we didn't think it was live and after the
 clock jump, it became live.
 >
 > I'm not sure how easily we can achieve (2) here. Probably something like
 two flags where one says "previous consensus was not live" and second says
 "the whole recalculation of a new live consensus needs to happen"...
 Becomes a bit non-trivial to correctly set those with our code flow...
 >

 Yeah the code flow is not very welcoming to this flag approach, because no
 particular event happens when we move from non-live to live, and we would
 probably have to check every second for the transition; otherwise if we
 miss the transition even for a second this bug can occur again I think. I
 wonder how to do this cleanly...

 > The other option is to possibly keep the `valid_after` time of the
 consensus that was used for the HSDir index computation. If that time is 0
 (unset) or smaller than the one we have in our *live* consensus and we
 detect the clock jump, we should readjust.
 >

 Hmm, I kinda get the idea here, but it seems a bit dirty to rely on
 whether HSDir index is set, to also readjust voting schedule etc. I wonder
 what else we could rely on here...

 > The whole point of the above I think is to avoid only recomputing with
 the >= 100 seconds clock jump since edge cases appear if for instance we
 correct for only 10 seconds.

 Hmm, I get the theoretical issue here, but it seems ultra unlikely we will
 miss the transition for 10 seconds skew, given the way consensus documents
 are propagated on the network. Because this can only happen if Alice
 fetches a consensus with `valid-after 12:00` at 12:00:05, but her system
 time is skewed at 11:59:56. It's very unlikely that Alice will fetch the
 consensus so early in its lifetime and also have so tiny skewed clock, but
 I guess the theoretical issue is there.

 Need to think of how to do this cleanly and without too much overhead.

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


More information about the tor-bugs mailing list