[tor-bugs] #28205 [Obfuscation/Snowflake]: linking against other libwebrtc binaries errors out on missing symbols

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Oct 25 19:57:18 UTC 2018


#28205: linking against other libwebrtc binaries errors out on missing symbols
-----------------------+---------------------------------------
 Reporter:  eighthave  |          Owner:  (none)
     Type:  defect     |         Status:  new
 Priority:  Medium     |      Component:  Obfuscation/Snowflake
  Version:             |       Severity:  Major
 Keywords:             |  Actual Points:
Parent ID:             |         Points:
 Reviewer:             |        Sponsor:
-----------------------+---------------------------------------
 I have a build where it builds libwebrtc from the chromium tree from
 scratch, but it seems to be missing symbols that snowflake needs.  My
 guess is that the symbols change often in libwebrtc given there is no
 release ever, so the go-webrtc build needs to be pinned against a very
 specific version of libwebrtc.

 Here's the build where I run go-webrtc's ./build.sh script:
 https://gitlab.com/eighthave/snowflake/-/jobs/112538917

 {{{
 $ go get ./...
 # github.com/keroserene/go-webrtc
 /tmp/go-build263677836/b053/_x008.o: In function `CGO_DeserializeSDP':
 /go/src/github.com/keroserene/go-webrtc/peerconnection.cc:379: undefined
 reference to
 `webrtc::JsepSessionDescription::JsepSessionDescription(std::string
 const&)'
 /go/src/github.com/keroserene/go-webrtc/peerconnection.cc:382: undefined
 reference to `webrtc::SdpDeserialize(std::string const&,
 webrtc::JsepSessionDescription*, webrtc::SdpParseError*)'
 /tmp/go-build263677836/b053/_x008.o: In function `CGO_AddIceCandidate':
 /go/src/github.com/keroserene/go-webrtc/peerconnection.cc:421: undefined
 reference to `webrtc::CreateIceCandidate(std::string const&, int,
 std::string const&, webrtc::SdpParseError*)'
 /tmp/go-build263677836/b053/_x008.o: In function `Peer::Initialize()':
 /go/src/github.com/keroserene/go-webrtc/peerconnection.cc:57: undefined
 reference to `rtc::Thread::SetName(std::string const&, void const*)'
 /go/src/github.com/keroserene/go-webrtc/peerconnection.cc:58: undefined
 reference to `rtc::Thread::SetName(std::string const&, void const*)'
 /tmp/go-build263677836/b053/_x008.o: In function `rtc::ArrayView<bool,
 -4711l>::ArrayView<bool>(bool*, unsigned long)':
 /go/src/github.com/keroserene/go-webrtc/./include/api/array_view.h:157:
 undefined reference to `rtc::FatalMessage::FatalMessage(char const*, int,
 std::string*)'
 /tmp/go-build263677836/b053/_x008.o: In function `rtc::ArrayView<int,
 -4711l>::ArrayView<int>(int*, unsigned long)':
 /go/src/github.com/keroserene/go-webrtc/./include/api/array_view.h:157:
 undefined reference to `rtc::FatalMessage::FatalMessage(char const*, int,
 std::string*)'
 }}}

 Then I ran a build against the official google libwebrtc binaries for
 Android, and that is missing many more symbols:
 https://gitlab.com/eighthave/snowflake/-/jobs/112339118

 {{{
 # github.com/keroserene/go-webrtc
 peerconnection.cc:379: error: undefined reference to
 'webrtc::JsepSessionDescription::JsepSessionDescription(std::__ndk1::basic_string<char,
 std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)'
 peerconnection.cc:382: error: undefined reference to
 'webrtc::SdpDeserialize(std::__ndk1::basic_string<char,
 std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&,
 webrtc::JsepSessionDescription*, webrtc::SdpParseError*)'
 peerconnection.cc:420: error: undefined reference to
 'webrtc::CreateIceCandidate(std::__ndk1::basic_string<char,
 std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&,
 int, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>,
 std::__ndk1::allocator<char> > const&, webrtc::SdpParseError*)'
 peerconnection.cc:55: error: undefined reference to
 'rtc::Thread::Thread()'
 peerconnection.cc:56: error: undefined reference to
 'rtc::Thread::Thread()'
 peerconnection.cc:57: error: undefined reference to
 'rtc::Thread::SetName(std::__ndk1::basic_string<char,
 std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&,
 void const*)'
 peerconnection.cc:58: error: undefined reference to
 'rtc::Thread::SetName(std::__ndk1::basic_string<char,
 std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&,
 void const*)'
 peerconnection.cc:59: error: undefined reference to
 'rtc::Thread::Start(rtc::Runnable*)'
 peerconnection.cc:60: error: undefined reference to
 'rtc::Thread::Start(rtc::Runnable*)'
 peerconnection.cc:62: error: undefined reference to
 'FakeAudioCaptureModule::Create()'
 peerconnection.cc:67: error: undefined reference to
 'webrtc::CreateBuiltinAudioEncoderFactory()'
 peerconnection.cc:68: error: undefined reference to
 'webrtc::CreateBuiltinAudioDecoderFactory()'
 /go/pkg/gomobile/ndk-toolchains/arm/bin/../lib/gcc/arm-linux-
 androideabi/4.9.x/../../../../include/c++/4.9.x/string:0: error: undefined
 reference to 'webrtc::MediaConstraintsInterface::kEnableDtlsSrtp'
 /go/pkg/gomobile/ndk-toolchains/arm/bin/../lib/gcc/arm-linux-
 androideabi/4.9.x/../../../../include/c++/4.9.x/string:0: error: undefined
 reference to 'webrtc::MediaConstraintsInterface::kEnableDtlsSrtp'
 ./include/api/peerconnectioninterface.h:1289: error: undefined reference
 to 'webrtc::CreatePeerConnectionFactory(rtc::Thread*, rtc::Thread*,
 rtc::Thread*, webrtc::AudioDeviceModule*,
 rtc::scoped_refptr<webrtc::AudioEncoderFactory>,
 rtc::scoped_refptr<webrtc::AudioDecoderFactory>,
 cricket::WebRtcVideoEncoderFactory*, cricket::WebRtcVideoDecoderFactory*)'
 ./include/rtc_base/copyonwritebuffer.h:49: error: undefined reference to
 'rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(unsigned int, unsigned int)'
 ./include/api/datachannelinterface.h:65: error: undefined reference to
 'rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(rtc::CopyOnWriteBuffer const&)'
 ./include/api/datachannelinterface.h:63: error: undefined reference to
 'rtc::CopyOnWriteBuffer::~CopyOnWriteBuffer()'
 datachannel.cc:20: error: undefined reference to
 'rtc::CopyOnWriteBuffer::~CopyOnWriteBuffer()'
 ./include/rtc_base/copyonwritebuffer.h:53: error: undefined reference to
 'rtc::CopyOnWriteBuffer::~CopyOnWriteBuffer()'
 ./include/api/datachannelinterface.h:63: error: undefined reference to
 'rtc::CopyOnWriteBuffer::~CopyOnWriteBuffer()'
 datachannel.cc:20: error: undefined reference to
 'rtc::CopyOnWriteBuffer::~CopyOnWriteBuffer()'
 ./include/rtc_base/copyonwritebuffer.h:49: error: undefined reference to
 'rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(unsigned int, unsigned int)'
 ./include/api/datachannelinterface.h:65: error: undefined reference to
 'rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(rtc::CopyOnWriteBuffer const&)'
 ./include/rtc_base/copyonwritebuffer.h:53: error: undefined reference to
 'rtc::CopyOnWriteBuffer::~CopyOnWriteBuffer()'
 ./include/rtc_base/buffer.h:126: error: undefined reference to
 'rtc::FatalMessage::FatalMessage(char const*, int)'
 ./include/rtc_base/buffer.h:126: error: undefined reference to
 'rtc::FatalMessage::~FatalMessage()'
 ./include/rtc_base/buffer.h:126: error: undefined reference to
 'rtc::FatalMessage::~FatalMessage()'
 ./include/rtc_base/buffer.h:126: error: undefined reference to
 'rtc::FatalMessage::~FatalMessage()'
 ./include/rtc_base/copyonwritebuffer.h:94: error: undefined reference to
 'rtc::FatalMessage::FatalMessage(char const*, int)'
 ./include/rtc_base/copyonwritebuffer.h:94: error: undefined reference to
 'rtc::FatalMessage::~FatalMessage()'
 ./include/rtc_base/buffer.h:141: error: undefined reference to
 'rtc::FatalMessage::FatalMessage(char const*, int)'
 ./include/rtc_base/copyonwritebuffer.h:102: error: undefined reference to
 'rtc::FatalMessage::FatalMessage(char const*, int)'
 clang70++: error: linker command failed with exit code 1 (use -v to see
 invocation)
 gomobile: go build -v -buildmode=c-shared -o=/tmp/gomobile-
 work-129978917/android/src/main/jniLibs/armeabi-v7a/libgojni.so gobind
 failed: exit status 2
 }}}

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


More information about the tor-bugs mailing list