flutter-tizen / plugins

Flutter plugins for Tizen
66 stars 47 forks source link

[flutter_webrtc] App crashes with SIGSEGV when closing #524

Closed swift-kim closed 1 year ago

swift-kim commented 1 year ago

How to reproduce:

  1. Launch the demo app.
  2. Close the app with the back key.

Stack trace:

Thread 1 "Runner.dll" received signal SIGSEGV, Segmentation fault.
0x00000101 in ?? ()
(gdb) bt
#0  0x00000101 in ?? ()
#1  0x988cc0e5 in webrtc::PeerConnectionFactoryProxyWithInternal<webrtc::PeerConnectionFactoryInterface>::~PeerConnectionFactoryProxyWithInternal() ()
   from target:/proc/7232/fd/26/lib/libwebrtc.so
#2  0x988cc14f in rtc::RefCountedObject<webrtc::PeerConnectionFactoryProxyWithInternal<webrtc::PeerConnectionFactoryInterface> >::~RefCountedObject() ()
   from target:/proc/7232/fd/26/lib/libwebrtc.so
#3  0x988cc022 in rtc::RefCountedObject<webrtc::PeerConnectionFactoryProxyWithInternal<webrtc::PeerConnectionFactoryInterface> >::Release() const ()
   from target:/proc/7232/fd/26/lib/libwebrtc.so
#4  0x9888a7d4 in libwebrtc::RTCPeerConnectionFactoryImpl::~RTCPeerConnectionFactoryImpl() () from target:/proc/7232/fd/26/lib/libwebrtc.so
#5  0x98884baf in libwebrtc::RefCountedObject<libwebrtc::RTCPeerConnectionFactoryImpl>::~RefCountedObject() () from target:/proc/7232/fd/26/lib/libwebrtc.so
#6  0x98884b82 in libwebrtc::RefCountedObject<libwebrtc::RTCPeerConnectionFactoryImpl>::Release() const () from target:/proc/7232/fd/26/lib/libwebrtc.so
#7  0x997f615c in libwebrtc::scoped_refptr<libwebrtc::RTCPeerConnectionFactory>::~scoped_refptr (this=0x814c8524)
    at third_party/libwebrtc/include/base/scoped_ref_ptr.h:95
#8  0x997f0a94 in flutter_webrtc_plugin::FlutterWebRTCBase::~FlutterWebRTCBase (this=0x814c8524) at src/flutter_webrtc_base.cc:25
#9  0x997d1b06 in flutter_webrtc_plugin::FlutterWebRTC::~FlutterWebRTC (this=0x814c8520) at src/flutter_webrtc.cc:20
#10 0x997d1b3c in flutter_webrtc_plugin::FlutterWebRTC::~FlutterWebRTC (this=0x814c8520) at src/flutter_webrtc.cc:20
#11 0x997fa5aa in std::default_delete<flutter_webrtc_plugin::FlutterWebRTC>::operator() (this=0x814bf918, __ptr=0x814c8520)
    at /home/swift/tizen-studio/tools/smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/include/c++/9.2.0/bits/unique_ptr.h:81
#12 0x997f9d3d in std::unique_ptr<flutter_webrtc_plugin::FlutterWebRTC, std::default_delete<flutter_webrtc_plugin::FlutterWebRTC> >::~unique_ptr (this=0x814bf918)
    at /home/swift/tizen-studio/tools/smart-build-interface/../i586-linux-gnueabi-gcc-9.2/lib/gcc/i586-tizen-linux-gnueabi/9.2.0/../../../../i586-tizen-linux-gnueabi/include/c++/9.2.0/bits/unique_ptr.h:284
#13 0x997f9dad in flutter_webrtc_plugin::FlutterWebRtcTizenPlugin::~FlutterWebRtcTizenPlugin (this=0x814bf910) at src/flutter_webrtc_tizen_plugin.cc:38
...

cc @xiaowei-guan

It's undesirable to update libwebrtc.so binaries frequently because they are large in size and the repository will grow too large if such minor updates are version controlled, so this bug might get fixed when there are other updates to the binaries.

xiaowei-guan commented 1 year ago

Full stack trace:


* thread #1, name = 'runner', stop reason = signal SIGSEGV
  * frame #0: 0x652e6d6f
    frame #1: 0xb5b2e371 libwebrtc.so`rtc::Thread::InvokeInternal(rtc::Location const&, rtc::FunctionView<void ()>) at thread.cc:1009
    frame #2: 0xb49367da libwebrtc.so`void rtc::Thread::Invoke<void, void>(rtc::Location const&, rtc::FunctionView<void ()>) at thread.h:402
    frame #3: 0xb4950b0c libwebrtc.so`libwebrtc::RTCPeerConnectionFactoryImpl::Terminate() at rtc_peerconnection_factory_impl.cc:90
    frame #4: 0xb4950632 libwebrtc.so`libwebrtc::RTCPeerConnectionFactoryImpl::~RTCPeerConnectionFactoryImpl() at rtc_peerconnection_factory_impl.cc:57
    frame #5: 0xb493c27f libwebrtc.so`libwebrtc::RefCountedObject<libwebrtc::RTCPeerConnectionFactoryImpl>::~RefCountedObject() at refcountedobject.h:54
    frame #6: 0xb493c2b7 libwebrtc.so`libwebrtc::RefCountedObject<libwebrtc::RTCPeerConnectionFactoryImpl>::~RefCountedObject() at refcountedobject.h:54
    frame #7: 0xb493c248 libwebrtc.so`libwebrtc::RefCountedObject<libwebrtc::RTCPeerConnectionFactoryImpl>::Release() const at refcountedobject.h:38
    frame #8: 0xb73c458c libflutter_webrtc_tizen_plugin.so`libwebrtc::scoped_refptr<libwebrtc::RTCPeerConnectionFactory>::~scoped_refptr(this=0x8172da64) at scoped_ref_ptr.h:95
    frame #9: 0xb73beec4 libflutter_webrtc_tizen_plugin.so`flutter_webrtc_plugin::FlutterWebRTCBase::~FlutterWebRTCBase(this=0x8172da64) at flutter_webrtc_base.cc:25
    frame #10: 0xb739ff36 libflutter_webrtc_tizen_plugin.so`flutter_webrtc_plugin::FlutterWebRTC::~FlutterWebRTC(this=0x8172da60) at flutter_webrtc.cc:20
    frame #11: 0xb739ff6c libflutter_webrtc_tizen_plugin.so`flutter_webrtc_plugin::FlutterWebRTC::~FlutterWebRTC(this=0x8172da60) at flutter_webrtc.cc:20
    frame #12: 0xb73c89da libflutter_webrtc_tizen_plugin.so`std::default_delete<flutter_webrtc_plugin::FlutterWebRTC>::operator(this=0x8172f578, __ptr=0x8172da60)(flutter_webrtc_plugin::FlutterWebRTC*) const at unique_ptr.h:81
    frame #13: 0xb73c816d libflutter_webrtc_tizen_plugin.so`std::unique_ptr<flutter_webrtc_plugin::FlutterWebRTC, std::default_delete<flutter_webrtc_plugin::FlutterWebRTC> >::~unique_ptr(this=0x8172f578) at unique_ptr.h:284
    frame #14: 0xb73c81dd libflutter_webrtc_tizen_plugin.so`flutter_webrtc_plugin::FlutterWebRtcTizenPlugin::~FlutterWebRtcTizenPlugin(this=0x8172f570) at flutter_webrtc_tizen_plugin.cc:38
    frame #15: 0xb73c823c libflutter_webrtc_tizen_plugin.so`flutter_webrtc_plugin::FlutterWebRtcTizenPlugin::~FlutterWebRtcTizenPlugin(this=0x8172f570) at flutter_webrtc_tizen_plugin.cc:38
    frame #16: 0xb73cc36a libflutter_webrtc_tizen_plugin.so`std::default_delete<flutter::Plugin>::operator(this=0x81598580, __ptr=0x8172f570)(flutter::Plugin*) const at unique_ptr.h:81
    frame #17: 0xb73c743d libflutter_webrtc_tizen_plugin.so`std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >::~unique_ptr(this=0x81598580) at unique_ptr.h:284
    frame #18: 0xb73d512d libflutter_webrtc_tizen_plugin.so`void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > > >::destroy<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >(this=0x8172f630, __p=0x81598580) at new_allocator.h:153
    frame #19: 0xb73d50a5 libflutter_webrtc_tizen_plugin.so`void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > > > >::destroy<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >(__a=0x8172f630, __p=0x81598580) at alloc_traits.h:497
    frame #20: 0xb73d4fe1 libflutter_webrtc_tizen_plugin.so`std::_Rb_tree<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >, std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >, std::_Identity<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >, std::less<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >, std::allocator<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > > >::_M_destroy_node(this=0x8172f630, __p=0x81598570) at stl_tree.h:642
    frame #21: 0xb73d4f5b libflutter_webrtc_tizen_plugin.so`std::_Rb_tree<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >, std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >, std::_Identity<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >, std::less<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >, std::allocator<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > > >::_M_drop_node(this=0x8172f630, __p=0x81598570) at stl_tree.h:650
    frame #22: 0xb73d4e73 libflutter_webrtc_tizen_plugin.so`std::_Rb_tree<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >, std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >, std::_Identity<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >, std::less<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >, std::allocator<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > > >::_M_erase(this=0x8172f630, __x=0x81598570) at stl_tree.h:1915
    frame #23: 0xb73d7980 libflutter_webrtc_tizen_plugin.so`std::_Rb_tree<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >, std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >, std::_Identity<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >, std::less<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >, std::allocator<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > > >::clear(this=0x8172f630) at stl_tree.h:1266
    frame #24: 0xb73d49e6 libflutter_webrtc_tizen_plugin.so`std::set<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> >, std::less<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > >, std::allocator<std::unique_ptr<flutter::Plugin, std::default_delete<flutter::Plugin> > > >::clear(this=0x8172f630) at stl_set.h:734
    frame #25: 0xb73d3ef9 libflutter_webrtc_tizen_plugin.so`flutter::PluginRegistrar::ClearPlugins(this=0x8172f620) at plugin_registrar.cc:43
    frame #26: 0xb73d3e29 libflutter_webrtc_tizen_plugin.so`flutter::PluginRegistrar::~PluginRegistrar(this=0x8172f620) at plugin_registrar.cc:32
    frame #27: 0xb73d3f2c libflutter_webrtc_tizen_plugin.so`flutter::PluginRegistrar::~PluginRegistrar(this=0x8172f620) at plugin_registrar.cc:30
    frame #28: 0xb73ce10a libflutter_webrtc_tizen_plugin.so`std::default_delete<flutter::PluginRegistrar>::operator(this=0x8172f614, __ptr=0x8172f620)(flutter::PluginRegistrar*) const at unique_ptr.h:81
    frame #29: 0xb73cc76d libflutter_webrtc_tizen_plugin.so`std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> >::~unique_ptr(this=0x8172f614) at unique_ptr.h:284
    frame #30: 0xb73cdf29 libflutter_webrtc_tizen_plugin.so`std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > >::~pair(this=0x8172f610) at stl_iterator.h:1286
    frame #31: 0xb73cdeed libflutter_webrtc_tizen_plugin.so`void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > >::destroy<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > >(this=0x81703760, __p=0x8172f610) at new_allocator.h:153
    frame #32: 0xb73cdeb5 libflutter_webrtc_tizen_plugin.so`void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > > >::destroy<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > >(__a=0x81703760, __p=0x8172f610) at alloc_traits.h:497
    frame #33: 0xb73cde61 libflutter_webrtc_tizen_plugin.so`std::_Rb_tree<FlutterDesktopPluginRegistrar*, std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > >, std::_Select1st<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > >, std::less<FlutterDesktopPluginRegistrar*>, std::allocator<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > >::_M_destroy_node(this=0x81703760, __p=0x8172f600) at stl_tree.h:642
    frame #34: 0xb73ccf7b libflutter_webrtc_tizen_plugin.so`std::_Rb_tree<FlutterDesktopPluginRegistrar*, std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > >, std::_Select1st<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > >, std::less<FlutterDesktopPluginRegistrar*>, std::allocator<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > >::_M_drop_node(this=0x81703760, __p=0x8172f600) at stl_tree.h:650
    frame #35: 0xb73d8343 libflutter_webrtc_tizen_plugin.so`std::_Rb_tree<FlutterDesktopPluginRegistrar*, std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > >, std::_Select1st<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > >, std::less<FlutterDesktopPluginRegistrar*>, std::allocator<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > >::_M_erase(this=0x81703760, __x=0x8172f600) at stl_tree.h:1915
    frame #36: 0xb73d8190 libflutter_webrtc_tizen_plugin.so`std::_Rb_tree<FlutterDesktopPluginRegistrar*, std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > >, std::_Select1st<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > >, std::less<FlutterDesktopPluginRegistrar*>, std::allocator<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > >::clear(this=0x81703760) at stl_tree.h:1266
    frame #37: 0xb73d7dfd libflutter_webrtc_tizen_plugin.so`std::_Rb_tree<FlutterDesktopPluginRegistrar*, std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > >, std::_Select1st<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > >, std::less<FlutterDesktopPluginRegistrar*>, std::allocator<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > >::_M_erase_aux(this=0x81703760, __first=std::_Rb_tree<FlutterDesktopPluginRegistrar *, std::pair<FlutterDesktopPluginRegistrar *const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > >, std::_Select1st<std::pair<FlutterDesktopPluginRegistrar *const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > >, std::less<FlutterDesktopPluginRegistrar *>, std::allocator<std::pair<FlutterDesktopPluginRegistrar *const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > >::const_iterator @ 0xbfcac614, __last=std::_Rb_tree<FlutterDesktopPluginRegistrar *, std::pair<FlutterDesktopPluginRegistrar *const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > >, std::_Select1st<std::pair<FlutterDesktopPluginRegistrar *const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > >, std::less<FlutterDesktopPluginRegistrar *>, std::allocator<std::pair<FlutterDesktopPluginRegistrar *const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > >::const_iterator @ 0xbfcac618) at stl_tree.h:2522
    frame #38: 0xb73d7a68 libflutter_webrtc_tizen_plugin.so`std::_Rb_tree<FlutterDesktopPluginRegistrar*, std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > >, std::_Select1st<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > >, std::less<FlutterDesktopPluginRegistrar*>, std::allocator<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > >::erase(this=0x81703760, __x=0xbfcac6c0) at stl_tree.h:2536
    frame #39: 0xb73d4a75 libflutter_webrtc_tizen_plugin.so`std::map<FlutterDesktopPluginRegistrar*, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> >, std::less<FlutterDesktopPluginRegistrar*>, std::allocator<std::pair<FlutterDesktopPluginRegistrar* const, std::unique_ptr<flutter::PluginRegistrar, std::default_delete<flutter::PluginRegistrar> > > > >::erase(this=0x81703760, __x=0xbfcac6c0) at stl_map.h:1068
    frame #40: 0xb73d411b libflutter_webrtc_tizen_plugin.so`flutter::PluginRegistrarManager::OnRegistrarDestroyed(registrar=0x816eeb30) at plugin_registrar.cc:59
    frame #41: 0xb74a3d19 libflutter_tizen_mobile.so`___lldb_unnamed_symbol411$$libflutter_tizen_mobile.so + 89
    frame #42: 0xb74a7961 libflutter_tizen_mobile.so`___lldb_unnamed_symbol476$$libflutter_tizen_mobile.so + 49
    frame #43: 0xb74a7a32 libflutter_tizen_mobile.so`___lldb_unnamed_symbol477$$libflutter_tizen_mobile.so + 34
    frame #44: 0xb74a2d35 libflutter_tizen_mobile.so`FlutterDesktopViewDestroy + 37
    frame #45: 0x80049d0f runner`FlutterApp::OnTerminate(this=0xbfcaca68) at flutter_app.cc:60
    frame #46: 0x8004a5d4 runner`FlutterApp::Run(this=0xaf3de4f9, data=0xbfcaca68)::$_3::operator()(void*) const at flutter_app.cc:101
    frame #47: 0x8004a597 runner`FlutterApp::Run(data=0xbfcaca68)::$_3::__invoke(void*) at flutter_app.cc:99
    frame #48: 0xb74602f2 libcapi-appfw-application.so.0`___lldb_unnamed_symbol5$$libcapi-appfw-application.so.0 + 114
    frame #49: 0xb09c9158 libappcore-common.so.1`appcore_base_fini + 104
    frame #50: 0xaf3df91a libappcore-ui.so.1`appcore_ui_base_fini + 314
    frame #51: 0xb09b87c7 libappcore-efl.so.1`appcore_efl_base_fini + 23
    frame #52: 0xb74608ad libcapi-appfw-application.so.0`ui_app_main + 221
    frame #53: 0x8004a1cc runner`FlutterApp::Run(this=0xbfcaca68, argc=26, argv=0xbfcacb54) at flutter_app.cc:145
    frame #54: 0x80048b31 runner`main(argc=26, argv=0xbfcacb54) at runner.cc:17
    frame #55: 0xb7567f55 libc.so.6`__libc_start_main + 261
    frame #56: 0x80048871 runner`_start at start.S:113
xiaowei-guan commented 1 year ago

we have fixed this issue, and we will also upgrade libwebrtc to reduce the number of updates.

swift-kim commented 1 year ago

@xiaowei-guan Thank you. The lib can be updated later when there's another important update. I'll close the issue for now.