[tor-bugs] #33336 [Circumvention/Snowflake]: Trial deployment of Snowflake with Turbo Tunnel

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Feb 27 07:52:25 UTC 2020


#33336: Trial deployment of Snowflake with Turbo Tunnel
-------------------------------------+--------------------------
 Reporter:  dcf                      |          Owner:  dcf
     Type:  task                     |         Status:  accepted
 Priority:  Medium                   |      Milestone:
Component:  Circumvention/Snowflake  |        Version:
 Severity:  Normal                   |     Resolution:
 Keywords:  turbotunnel              |  Actual Points:
Parent ID:                           |         Points:
 Reviewer:                           |        Sponsor:
-------------------------------------+--------------------------

Comment (by dcf):

 Replying to [comment:20 arma]:
 > I browsed for a while. It worked fine. I disabled my wireless on the
 laptop,

 You have a knack for thinking of interesting tests :) Killing the wireless
 would not only break the WebRTC connection to the proxy, it would also
 prevent snowflake-client from contacting the broker to get a new one. But
 my guess is that it should handle even this gracefully, attempting every
 10 seconds to contact the broker until it starts working again.

 {{{
 Feb 25 14:36:24.457 [notice] Closing OR conn. Considering blaming guard.
 }}}
 {{{
 2020/02/25 14:36:24 copying WebRTC to SOCKS resulted in error: write tcp
 [scrubbed]->[scrubbed]: write: broken pipe
 2020/02/25 14:36:24 WebRTC: closing DataChannel
 2020/02/25 14:36:24 WebRTC: closing PeerConnection
 2020/02/25 14:36:24 Error writing to SOCKS pipe
 }}}

 What I see here is tor closing its SOCKS connection to snowflake-client,
 and snowflake-client noticing the closed connection and tearing down its
 own proxy connection. That part all looks fine.

 {{{
 Feb 25 14:36:24.458 [warn] Pluggable Transport process terminated with
 status code 512
 }}}

 The weird part is that in the same second the snowflake-client process is
 terminated. It's an abnormal termination; otherwise you would see another
 log line with
 [https://gitweb.torproject.org/user/dcf/snowflake.git/tree/client/snowflake.go?h=turbotunnel&id=47312dd1eccc8456652853bd66f8ed396e9ba6ec#n215
 ""snowflake is done""]. Failure to write to the SOCKS connection shouldn't
 cause snowflake-client to exit anyway; its
 [https://gitweb.torproject.org/user/dcf/snowflake.git/tree/client/snowflake.go?h=turbotunnel&id=47312dd1eccc8456652853bd66f8ed396e9ba6ec#n48
 socksAcceptLoop] function should keep running and accepting new SOCKS
 connections.

 Two possible explanations for what's happening are
 1. snowflake-client is panicking or crashing in an uncontrolled way.
 2. tor is killing snowflake-client rather than signaling it to exit
 gracefully.

 In case (1), I would expect a stack trace to make its way into the tor log
 via tor's PT stderr handler. Is there anything in the "Closing OR conn"
 code path that would make tor kill the PT process?

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


More information about the tor-bugs mailing list