[tor-bugs] #21312 [Obfuscation/Snowflake]: snowflake-client is pegged at 100% cpu

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue Mar 13 18:57:17 UTC 2018


#21312: snowflake-client is pegged at 100% cpu
-----------------------------------+--------------------------------
 Reporter:  arlolra                |          Owner:  arlolra
     Type:  defect                 |         Status:  needs_revision
 Priority:  High                   |      Milestone:
Component:  Obfuscation/Snowflake  |        Version:
 Severity:  Major                  |     Resolution:
 Keywords:                         |  Actual Points:
Parent ID:                         |         Points:
 Reviewer:                         |        Sponsor:
-----------------------------------+--------------------------------

Comment (by cypherpunks):

 Replying to [comment:27 dcf]:
 > @cypherpunks which change do you mean? The patches in comment:21 (go-
 webrtc), comment:22 (snowflake-client), and comment:24 (proxy-go) are by
 arlolra. If you mean comment:25, all I did was recompile with the patch
 from command:24 and deploy the public proxy-go instances.

 I meant the changes on the server side, i.e. comment:24.

 > I too have noticed some occasional short delays, but I assumed they were
 because of the client closing connections after 30 seconds (#25429). Maybe
 I'm wrong, but your log line `No messages received for 30 seconds --
 closing stale connection.` is consistent with that assumption.

 Maybe that change didn't produce a bug by itself but only exacerbated some
 other bug. Also note that this sometimes happens even when I'm not
 "pausing" activity, for example with a long download (which ends up
 failing), and would even result in a "Secure Connection Failed" while an
 iframe was loading, or a tab endlessly loading.

 I also tried to have a download in place while browsing, and at some point
 the download failed as well as the sites that were loading. So I think
 this rules out that #25429 is the only bug here, from the logs:

 {{{
 33:44 WebRTC: At capacity [1/1]  Retrying in 10 seconds...
 33:45 Traffic Bytes (in|out): 1888447 | 58143 -- (346 OnMessages, 73
 Sends)
 33:50 Traffic Bytes (in|out): 2297595 | 71457 -- (397 OnMessages, 89
 Sends)
 33:54 WebRTC: At capacity [1/1]  Retrying in 10 seconds...
 34:03 Traffic Bytes (in|out): 941820 | 33542 -- (152 OnMessages, 40 Sends)
 34:04 WebRTC: At capacity [1/1]  Retrying in 10 seconds...
 34:14 WebRTC: At capacity [1/1]  Retrying in 10 seconds...
 34:16 Traffic Bytes (in|out): 0 | 3200 -- (0 OnMessages, 4 Sends)
 34:22 WebRTC: No messages received for 30 seconds -- closing stale
 connection.
 34:22 WebRTC: closing DataChannel
 34:22 WebRTC: DataChannel.OnClose [locally]
 34:22 WebRTC: closing PeerConnection
 34:22 WebRTC: Closing
 34:22 copy loop ended
 }}}

 > If you know how to compile Go code, you could try changing
 `SnowflakeTimeout` in snowflake.go from `30` to `3600`, replacing
 Browser/TorBrowser/Tor/PluggableTransports/snowflake-client in your Tor
 Browser, and leaving a note at #25429 to say if it improved the situation.
 I had initially hopped that putting `ConnectionPadding 1` in the `torrc`
 would turn out to be an easy solution, but given what I said above it's
 not #25429 that is the only problem. And I don't think upping the timeout
 would solve the issue.

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


More information about the tor-bugs mailing list