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

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue Mar 13 21:02:45 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 arlolra):

 > Here's a server-webrtc segfault from gdb.

 From the timeline in comment:29, maybe it's a race between the datachannel
 close on the server and reading from the OR (I'm assuming the logs never
 make it because they're async and the segfaults prevents them from being
 written).

 You can try something like,

 {{{
 --- a/server-webrtc/snowflake.go
 +++ b/server-webrtc/snowflake.go
 @@ -52,7 +52,9 @@ func (c *webRTCConn) Read(b []byte) (int, error) {
  func (c *webRTCConn) Write(b []byte) (int, error) {
         // log.Printf("webrtc Write %d %+q", len(b), string(b))
         log.Printf("Write %d bytes --> WebRTC", len(b))
 -       c.dc.Send(b)
 +       if c.dc != nil } {
 +               c.dc.Send(b)
 +       }
         return len(b), nil
  }

 @@ -127,6 +129,7 @@ func makePeerConnectionFromOffer(sdp
 *webrtc.SessionDescription, config *webrtc.
                 dc.OnClose = func() {
                         log.Println("OnClose channel")
                         pw.Close()
 +                       conn.dc = nil
                         pc.DeleteDataChannel(dc)
                 }
                 dc.OnMessage = func(msg []byte) {
 }}}

 The client has something similar where if the transport isn't available to
 be written to, it buffers the data.

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


More information about the tor-bugs mailing list