Opened 11 years ago

Last modified 7 years ago

#915 closed defect (Fixed)

Directory authority retries parsing incorrect vote infinitely

Reported by: karsten Owned by:
Priority: Low Milestone:
Component: Core Tor/Tor Version: 0.2.1.10-alpha
Severity: Keywords:
Cc: karsten, nickm Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

This morning, I found gabelmoo filling its logs with these warnings
(info-level logs only included where it seemed useful):

Jan 22 11:19:46.397 [notice] Tor 0.2.1.11-alpha (r18193) opening log file.
[...]
Jan 23 01:50:01.080 [notice] Time to vote.
Jan 23 01:50:01.108 [notice] Choosing valid-after time in vote as 2009-01-23 01:00:00:

consensus_set=1, last_interval=3600

Jan 23 01:50:01.359 [notice] Vote posted.
Jan 23 01:50:19.559 [warn] Got a vote from an authority (nickname rgnx, address

208.83.223.34) with authority key ID 0F06AD141

ABB617AEA5A51663BB2F295DCB13521. This key ID is not recognized. Known v3 key IDs are: E2A2AF570166665D738736D0DD58169CC61D8A8B, 14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4, E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58, 27B6B5996C426270A5C95488AA5BCEB6BCC86956, 81349FC1F2DBA2C2C11B45CB9706637D480AB913, 585769C78764D58426B8B52B6651A5A71137189A
Jan 23 01:50:59.743 [notice] Uploaded a vote to dirserver 80.190.246.100:80
Jan 23 01:50:59.866 [notice] Uploaded a vote to dirserver 194.109.206.212:80
Jan 23 01:51:00.072 [notice] Uploaded a vote to dirserver 128.31.0.34:9031
Jan 23 01:51:00.161 [notice] Uploaded a vote to dirserver 216.224.124.114:9030
Jan 23 01:51:12.885 [notice] Uploaded a vote to dirserver 86.59.21.38:80
Jan 23 01:52:31.246 [notice] Time to fetch any votes that we're missing.
Jan 23 01:52:31.246 [notice] We're missing votes from 2 authorities. Asking every other

authority for a copy.

Jan 23 01:52:31.452 [info] connection_dir_client_reached_eof(): Got votes (size 913169)

from server 86.59.21.38:80

Jan 23 01:52:31.508 [warn] Error decoding descriptor digest "UpcKF+KfBAgnHr+IyNP009-01-2"
Jan 23 01:52:31.522 [warn] Error reading network-status vote: signature does not match.
Jan 23 01:52:31.524 [warn] Couldn't parse vote: length was 457268
Jan 23 01:52:31.533 [warn] Error decoding descriptor digest "UpcKF+KfBAgnHr+IyNP009-01-2"
Jan 23 01:52:31.547 [warn] Error reading network-status vote: signature does not match.
Jan 23 01:52:31.548 [warn] Couldn't parse vote: length was 457268
Jan 23 01:52:31.557 [warn] Error decoding descriptor digest "UpcKF+KfBAgnHr+IyNP009-01-2"
Jan 23 01:52:31.571 [warn] Error reading network-status vote: signature does not match.
Jan 23 01:52:31.572 [warn] Couldn't parse vote: length was 457268
[...]
Jan 23 12:03:23.635 [warn] Error decoding descriptor digest "UpcKF+KfBAgnHr+IyNP009-01-2"
Jan 23 12:03:23.648 [warn] Error reading network-status vote: signature does not match.
Jan 23 12:03:23.650 [warn] Couldn't parse vote: length was 457268

This problem recurred at a rate of about 42 times per second (!) until I
killed it at 12:03. gabelmoo was unresponsive at that time: Tor weather
reported it couldn't ping it, gabelmoo didn't vote, and the Tor process had
to be killed with -9.

In the last votes that gabelmoo wrote (at 00:55), there is the correct line
that probably should have been parsed:

r Unnamed St3/Fe5maZRmmctLe/Mh9jU0rYk UpcKF+KfBAgnHr+IyNPOYbOzMCA 2009-01-22 13:10:15

99.21.76.207 9001 9030

The first question is where the ten characters # in
"UpcKF+KfBAgnHr+IyNP##########009-01-2" went missing.

The second, and more important question is why gabelmoo tries to re-parse
the incorrect vote over and over again.

[Automatically added by flyspray2trac: Operating System: Other Linux]

Child Tickets

Change History (6)

comment:1 Changed 11 years ago by karsten

An investigation of the votes that tor26 has seen for the 01:00 UTC
consensus has shown that gabelmoo couldn't parse dannenberg's vote.
However, dannenberg's vote on tor26 is correct, including the r-line which
caused the problem on gabelmoo. So, gabelmoo has downloaded dannenberg's
vote from tor26 where it was still correct. This means that the vote must
have been corrupted in transit or on gabelmoo.

grep -h "UpcK" *-vote-*
r Unnamed St3/Fe5maZRmmctLe/Mh9jU0rYk UpcKF+KfBAgnHr+IyNPOYbOzMCA 2009-01-22 13:10:15 99.21.76.207 9001 9030
r Unnamed St3/Fe5maZRmmctLe/Mh9jU0rYk UpcKF+KfBAgnHr+IyNPOYbOzMCA 2009-01-22 13:10:15 99.21.76.207 9001 9030
r Unnamed St3/Fe5maZRmmctLe/Mh9jU0rYk UpcKF+KfBAgnHr+IyNPOYbOzMCA 2009-01-22 13:10:15 99.21.76.207 9001 9030
r Unnamed St3/Fe5maZRmmctLe/Mh9jU0rYk UpcKF+KfBAgnHr+IyNPOYbOzMCA 2009-01-22 13:10:15 99.21.76.207 9001 9030
r Unnamed St3/Fe5maZRmmctLe/Mh9jU0rYk UpcKF+KfBAgnHr+IyNPOYbOzMCA 2009-01-22 13:10:15 99.21.76.207 9001 9030
r Unnamed St3/Fe5maZRmmctLe/Mh9jU0rYk UpcKF+KfBAgnHr+IyNPOYbOzMCA 2009-01-22 13:10:15 99.21.76.207 9001 9030

comment:2 Changed 11 years ago by nickm

Oh hey. Networkstatus_parse_vote_from_string() sets the *eos_out parameter to the end of the current vote (and
presumably the start of the next vote) on success only, and dirvote_add_vote() checks the end_of_vote parameter
[set by networkstatus_parse_vote_from_string()] on success or failure. That's not so good. If you get two
votes and the second is corrupt, this bug triggers.

comment:3 Changed 11 years ago by nickm

Fix checked in to r18354; backported in r18354.

(I've solved one possible cause of this; I don't know if there are others lurking around.)

comment:4 Changed 11 years ago by nickm

Nobody has seen this in a month; I'm calling it gone.

comment:5 Changed 11 years ago by nickm

flyspray2trac: bug closed.

comment:6 Changed 7 years ago by nickm

Component: Tor RelayTor
Note: See TracTickets for help on using tickets.