0

我正在为 Linux (Ubuntu) 编写本机 WebRTC 应用程序,代码在 webrtc::PeerConnectionInterface::RTCConfiguration 配置崩溃;

我有以下两个猜测

  1. 我可能会弄乱 rtc 线程,因为同一行在示例应用程序中运行良好。
  2. 在处理 C++ 字符串时是否有任何错误。不确定在变量声明期间它会如何影响。

下面是跟踪:

0 0x00007fbd841e6fdf 在 std::__cxx1998::vector, std::allocator >, std::allocator, std::allocator > >::~vector() () at /usr/include/c++/8/bits/stl_vector .h:567 1 0x00007fbd841e696e 在 std::__debug::vector、std::allocator >、std::allocator、std::allocator > > >::~vector() () at /usr/include/c++/8 /debug/vector:210 警告:找不到 DWO CU obj/api/libjingle_peerconnection_api/peer_connection_interface.dwo(0x88209d7623c67b6c) 由 CU 在偏移量 0xe2f950 [in module /opt/Citrix/ICAClient/libwebrpc.so] 引用

2 0x00007fbd8464272c in webrtc::PeerConnectionInterface::IceServer::~IceServer() () at ../../../api/peer_connection_interface.h:208 警告:找不到 DWO CU obj/pc/peerconnection/peer_connection_factory。 CU 在偏移量 0xe2f03c [在模块 /opt/Citrix/ICAClient/libwebrpc.so 中] 引用的 dwo(0xc714b8e7fa522831)

3 0x00007fbd84438068 in void std::_Destroy(webrtc::PeerConnectionInterface::IceServer*) () at /usr/include/c++/8/bits/stl_construct.h:98

4 0x00007fbd844370b3 in void std::_Destroy_aux::__destroy(webrtc::PeerConnectionInterface::IceServer*, webrtc::PeerConnectionInterface::IceServer*) () at /usr/include/c++/8/bits/stl_construct.h:108

5 0x00007fbd84435a85 in void std::_Destroy(webrtc::PeerConnectionInterface::IceServer*, webrtc::PeerConnectionInterface::IceServer*) () 在 /usr/include/c++/8/bits/stl_construct.h:137

6 0x00007fbd84433f1b in void std::_Destroy(webrtc::PeerConnectionInterface::IceServer*, webrtc::PeerConnectionInterface::IceServer*, std::allocator&) () at /usr/include/c++/8/bits/stl_construct.h: 206

7 0x00007fbd8464454f 在 std::__cxx1998::vector >::~vector() () 在 /usr/include/c++/8/bits/stl_vector.h:567

8 0x00007fbd84644192 在 std::__debug::vector >::~vector() () 在 /usr/include/c++/8/debug/vector:210

9 0x00007fbd84643132 在 webrtc::PeerConnectionInterface::RTCConfiguration::~RTCConfiguration() () 在 ../../../api/peer_connection_interface.h:292

4

1 回答 1

1

即使我已经观察到这个问题。发生此问题是因为默认情况下 webrtc 是使用 -D_GLIBCXX_DEBUG 编译的(请参阅文件 build//config/BUILD.GN)。如果你不使用这个标志编译你的程序,你会遇到问题,因为这个标志会导致向量的实现发生变化,以便吐出更好的调试消息。因此,如果您不使用此标志编译程序,则 std::vector 实现将不一致并导致段错误。https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53324

于 2020-01-30T11:22:19.203 回答