[tor-bugs] #25483 [Obfuscation/Snowflake]: Windows reproducible build of snowflake

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue May 1 19:45:20 UTC 2018


#25483: Windows reproducible build of snowflake
-----------------------------------+--------------------------
 Reporter:  arlolra                |          Owner:  sukhbir
     Type:  project                |         Status:  assigned
 Priority:  High                   |      Milestone:
Component:  Obfuscation/Snowflake  |        Version:
 Severity:  Normal                 |     Resolution:
 Keywords:  TorbrowserTeam201804   |  Actual Points:
Parent ID:  #19001                 |         Points:
 Reviewer:                         |        Sponsor:
-----------------------------------+--------------------------

Comment (by sukhbir):

 As an update to this ticket, I have been trying to get the Windows build
 to work, the latest progress of which is at https://github.com/azadi/tor-
 browser-build/commits/go-webrtc ... it's not much and mostly builds on the
 work of dcf and others to try to fix the error below.

 Currently, the status is that we are hitting a linking error when trying
 to build `go-webrtc` (`mingw-w64`) with `webrtc` (`clang`). The exact
 error is:

 {{{
     /var/tmp/dist/mingw-w64/x86_64-w64-mingw32/include/malloc.h:183:0:
 note: this is the location of the previous definition
      #define alloca(x) __builtin_alloca((x))
      ^
     # github.com/keroserene/go-webrtc
 /var/tmp/dist/mingw-w64/lib/gcc/x86_64-w64-mingw32/5.4.0/../../../../x86_64-w64-mingw32/lib/../lib/libstdc++.a
 (cow-stdexcept.o): In function `std::string::_M_data() const':
 /var/tmp/build/gcc/x86_64-w64-mingw32/libstdc++-v3/src/c++11/../../../../gcc-5.4.0/libstdc++-v3/src/c++11
 /cow-stdexcept.cc:44: multiple definition of
 `std::logic_error::logic_error(std::logic_error const&)'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/peerconnection.cc.o:peerconnection.cc:(.text$_ZNSt11logic_errorC2ERKS_[_ZNSt11logic_errorC2ERKS_]+0x0):
 first defined here
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x5a9): undefined
 reference to `cricket::AudioCodec::ToString() const'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x6de): undefined
 reference to `webrtc::RtpExtension::ToString() const'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x813): undefined
 reference to `cricket::DataCodec::ToString() const'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x8f5): undefined
 reference to `rtc::FatalMessage::FatalMessage(char const*, int)'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x96a): undefined
 reference to `rtc::FatalMessage::~FatalMessage()'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xa1b): undefined
 reference to `rtc::FatalMessage::~FatalMessage()'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xbf8): undefined
 reference to `rtc::FatalMessage::FatalMessage(char const*, int)'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xc6d): undefined
 reference to `rtc::FatalMessage::~FatalMessage()'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xd20): undefined
 reference to `rtc::FatalMessage::~FatalMessage()'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xdb1): undefined
 reference to `rtc::FatalMessage::FatalMessage(char const*, int)'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xe26): undefined
 reference to `rtc::FatalMessage::~FatalMessage()'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xed5): undefined
 reference to `rtc::FatalMessage::~FatalMessage()'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xf6d): undefined
 reference to `rtc::FatalMessage::FatalMessage(char const*, int)'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xfe2): undefined
 reference to `rtc::FatalMessage::~FatalMessage()'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x1094): undefined
 reference to `rtc::FatalMessage::~FatalMessage()'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x112c): undefined
 reference to `rtc::FatalMessage::FatalMessage(char const*, int)'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x11a1): undefined
 reference to `rtc::FatalMessage::~FatalMessage()'
     /tmp/go-build868110800/github.com/keroserene/go-
 webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x1254): undefined
 reference to `rtc::FatalMessage::~FatalMessage()'
 /var/tmp/dist/mingw-w64/lib/gcc/x86_64-w64-mingw32/5.4.0/../../../../x86_64-w64-mingw32/bin/ld:
 $WORK/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o: bad reloc
 address 0xc0 in section `.rdata'
     collect2: error: ld returned 1 exit status
 }}}

 I have tried different things but mostly focusing on the `webrtc` library
 to start with but it seems like that is not the problem since it has the
 missing symbols (which other than the usual symbol lookup, we also
 confirmed by writing a small program that calls them.) It was suggested
 that this can be due to C++ ABI (in)compatibility between `mingw-w64` and
 `clang` but at least one mingw-w64 person I talked with disagreed with
 that assumption.

 A [https://groups.google.com/forum/#!topic/discuss-webrtc/UbQ602XSB10
 post] made on the discuss-webrtc Google group was also not helpful and
 even though there are similar (not same) posts with this problem, there
 seem to be no solutions that actually work; I have tried incorporating the
 other suggestions as well in the various threads, but to no effect.

 As suggested by Hooman, I have started looking recently into using the
 [https://github.com/asicerik/go-webrtc asicerik go-webrtc] (this wrapper
 is for native compiling on Windows using Visual Studio and not cross-
 compiling using Linux) but it doesn't link against `webrtc` currently.

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


More information about the tor-bugs mailing list