[tahoe-lafs-trac-stream] [Tahoe-LAFS] #2837: create-node --listen=tor hangs with tor-0.2.8.8

Tahoe-LAFS trac at tahoe-lafs.org
Sun Oct 9 15:01:33 UTC 2016


#2837: create-node --listen=tor hangs with tor-0.2.8.8
---------------------------+---------------------------
 Reporter:  warner         |          Owner:
     Type:  defect         |         Status:  new
 Priority:  normal         |      Milestone:  undecided
Component:  code-network   |        Version:  1.11.0
 Keywords:  anonymity tor  |  Launchpad Bug:
---------------------------+---------------------------
 After finishing off #2490, I noticed during testing that `tahoe create-
 node --listen=tor` consistently hangs on one of my test machines (which is
 running debian/sid, with tor-0.2.8.8 git-!8d8a099454d994bd). This happens
 when the system Tor process has been running for a while, at least a few
 days. If I bounce the Tor process, then create-node finishes correctly in
 the 30-40 seconds that I expect it to take.

 This doesn't happen on an Ubuntu-16.04 box (running tor-0.2.7.6
 git-!605ae665009853bd). Both cases are using txtorcon-0.17.0 . I'm
 guessing that there's something broken with the Tor on my sid box, but
 maybe there's something about the tor-control-port command stream in the
 more recent Tor that's confusing txtorcon.

 Meejah suggested a patch like this to turn on command-stream debugging:

 {{{
 from txtorcon.log import debug_logging
 debug_logging()
 }}}

 and with that, I found differences between the two command streams.
 They're identical (modulo the random auth-cookie) through the following
 commands and their responses:

 {{{
 cmd: AUTHCHALLENGE SAFECOOKIE [cookie]
 cmd: AUTHENTICATE [cookie]
 cmd: GETINFO signal/names
 cmd: GETINFO version
 Connected to a Tor with VERSION [version]
 cmd: GETINFO events/names
 cmd: USEFEATURE EXTENDED_EVENTS
 cmd: GETINFO ns/all
 6278 named routers found.
 [list of duplicates]
 2494 GUARDs
 }}}

 At that point, both do a `cmd: GETINFO circuit-status`. The working case
 (with 0.2.7.6) gets back a bunch of `circuit_(new|extend|built)`
 responses, then does a series of `GETINFO ip-to-country/[ipaddr]`
 commands, then a `GETINFO stream-status`. The hanging case sends the
 circuit-status but never sees the `circuit_*` messages, and goes directly
 to the `GETINFO stream-status`.

 I don't know if this debugging includes the actual responses to each
 command, or if it's just logging async notifications.

--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2837>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list