WebRT C cra sh в строке webrt c :: PeerConnectionInterface :: RTCConfiguration config; для родного Linux приложения - PullRequest
0 голосов
/ 27 января 2020

Я пишу приложение Native WebRT C для Linux (Ubuntu), код вылетает на webrt c :: PeerConnectionInterface :: RTCConfiguration config;

У меня есть два предположения ниже

  1. Возможно, я путаюсь с потоками rt c, так как в примере приложения та же строка работает нормально.
  2. Есть ли ошибки в обработке строк C ++. Не уверен, как это может повлиять при объявлении переменной.

Ниже приведена трассировка:

0 0x00007fbd841e6fdf в std :: __cxx1998 :: vector, std :: allocator>, std :: allocator, std :: allocator>>>: : ~ vector () () в /usr/include/c++/8/bits/stl_vector.h:567 1 0x00007fbd841e696e в std :: __ debug :: vector, std :: allocator>, std :: allocator, std :: allocator >>> :: ~ vector () () в / usr / include / c ++ / 8 / debug / vector: 210 предупреждение: не удалось найти DWO CU obj / api / libjingle_peerconnection_api / peer_connection_interface.dwo (0x88209d7623c67b6 c), на который ссылается CU по смещению 0xe2f950 [в модуле /opt/Citrix/ICAClient/libwebrpc.so]

2 0x00007fbd8464272 c в webrt c :: PeerConnectionInterface :: IceServer :: ~ IceServer () ( ) at ../../../api/peer_connection_interface.h:208 предупреждение: не удалось найти DWO CU obj / pc / peerconnection / peer_connection_factory.dwo (0xc714b8e7fa522831), на который ссылается CU по смещению 0xe2f03 c [в модуле / opt / Citrix / ICAClient / libwebrp c .so]

3 0x00007fbd84438068 в void std :: _ Destroy (webrt c :: PeerCo nnectionInterface :: IceServer *) () в /usr/include/c++/8/bits/stl_construct.h:98

4 0x00007fbd844370b3 в пустом std :: _ Destroy_aux :: __ destroy (webrt c :: PeerConnectionInter :: IceServer *, webrt c :: PeerConnectionInterface :: IceServer *) () в /usr/include/c++/8/bits/stl_construct.h:108

5 0x00007fbd84435a85 в void std :: _ Destroy (webrt c :: PeerConnectionInterface :: IceServer *, webrt c :: PeerConnectionInterface :: IceServer *) () в /usr/include/c++/8/bits/stl_construct.h:137

6 0x00007fbd84433f1b в void std :: _ Destroy (webrt c :: PeerConnectionInterface :: IceServer *, webrt c :: PeerConnectionInterface :: IceServer *, std :: allocator &) () в / 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 в веб-файле c :: PeerConnectionInterface :: RTCConfiguration :: ~ RTCConfiguration () () в ../../../api/peer_connection_interface.h:292

1 Ответ

1 голос
/ 30 января 2020

Даже я наблюдал эту проблему. Эта проблема возникает из-за того, что по умолчанию webrt c компилируется с -D_GLIBCXX_DEBUG (см. Файл build // config / BUILD.GN). Если вы не скомпилируете свою программу с этим флагом, вы получите проблемы, потому что этот флаг заставляет реализацию вектора измениться, чтобы выплевывать лучшие сообщения отладки. Поэтому, если вы не скомпилируете свою программу с этим флагом, реализация std :: vector будет непоследовательной и приведет к ошибкам сегмента. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53324

...