twilio / twilio-video-ios

Programmable Video SDK by Twilio
http://twilio.com/video
Other
65 stars 22 forks source link

CRASH twilio::Logger::getModuleLogLevel in 3.8.0 #199

Open vdovichenko opened 3 years ago

vdovichenko commented 3 years ago

Description

Application is randomly crashes, so I can't provide steps to reproduce. I found similar open ticket https://github.com/twilio/twilio-video-ios/issues/127 where it's said that crash should be fixed in 3.7.2 version, but we use 3.8.0 and it's still happening

Here's stack traces for some of the crashes:

Crashed: MediaFactoryImpl::signaling 0 TwilioVideo 0x10a0ab180 twilio::Logger::getModuleLogLevel(twilio::LogModule) const + 20 1 TwilioVideo 0x109ff3c18 twilio::signaling::MediaSignalingTransport::OnMessage(webrtc::DataBuffer const&) + 48 2 TwilioVideo 0x10a48cdf0 webrtc::DataChannel::OnDataReceived(cricket::ReceiveDataParams const&, rtc::CopyOnWriteBuffer const&) + 416 3 TwilioVideo 0x10a4bbad8 sigslot::signal_with_thread_policy<sigslot::single_threaded, cricket::ReceiveDataParams const&, rtc::CopyOnWriteBuffer const&>::emit(cricket::ReceiveDataParams const&, rtc::CopyOnWriteBuffer const&) + 68 4 TwilioVideo 0x10a10fe78 rtc::AsyncInvoker::OnMessage(rtc::Message) + 32 5 TwilioVideo 0x10a119fe0 rtc::MessageQueue::Dispatch(rtc::Message) + 196 6 TwilioVideo 0x10a1a9c60 rtc::Thread::ProcessMessages(int) + 88 7 TwilioVideo 0x10a1a9bdc rtc::Thread::PreRun(void*) + 104 8 libsystem_pthread.dylib 0x1eb90fc74 _pthread_start + 288 9 libsystem_pthread.dylib 0x1eb914878 thread_start + 8

Crashed: Thread 0 TwilioVideo 0x10803b180 twilio::Logger::getModuleLogLevel(twilio::LogModule) const + 20 1 TwilioVideo 0x108016c50 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue&) + 388 2 TwilioVideo 0x1080166cc boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) + 356 3 TwilioVideo 0x1080163a8 boost::asio::detail::scheduler::run(boost::system::error_code&) + 204 4 TwilioVideo 0x107e3d1b0 boost::asio::io_context::run() + 52 5 TwilioVideo 0x107e3ee74 void std::1::thread_proxy<std::1::tuple<std::1::unique_ptr<std::1::thread_struct, std::__1::default_delete >, boost::_bi::bind_t<unsigned long, boost::_mfi::mf0<unsigned long, boost::asio::io_context>, boost::_bi::list1<boost::_bi::value<boost::asio::io_context> > > > >(void*) + 64 6 libsystem_pthread.dylib 0x1d24a7c74 _pthread_start + 288 7 libsystem_pthread.dylib 0x1d24ac878 thread_start + 8

Crashed: MediaFactoryImpl::signaling 0 TwilioVideo 0x1080ff180 twilio::Logger::getModuleLogLevel(twilio::LogModule) const + 20 1 TwilioVideo 0x1081038e8 twilio::media::IceConnectionActivityMonitor::getPeerConnectionStats() + 36 2 TwilioVideo 0x108163e78 rtc::AsyncInvoker::OnMessage(rtc::Message) + 32 3 TwilioVideo 0x10816dfe0 rtc::MessageQueue::Dispatch(rtc::Message) + 196 4 TwilioVideo 0x1081fdc60 rtc::Thread::ProcessMessages(int) + 88 5 TwilioVideo 0x1081fdbdc rtc::Thread::PreRun(void*) + 104 6 libsystem_pthread.dylib 0x1e92d7cb0 _pthread_start + 320 7 libsystem_pthread.dylib 0x1e92e0778 thread_start + 8

Video iOS SDK

3.8.0 via CocoaPods

iOS Version

iOS 14+

eigenl commented 3 years ago

Can concur. Has been happening over a year with all versions.

Thread 14 [Crashed]:

0    TwilioVideo                              0x10551cbdc     twilio::Logger::getModuleLogLevel(twilio::LogModule) const + 8
1    TwilioVideo                              0x1056e413c     rtc::AsyncInvoker::OnMessage(rtc::Message*) + 31
2    TwilioVideo                              0x1056fc858     rtc::Thread::Dispatch(rtc::Message*) + 135
3    TwilioVideo                              0x1056fb894     rtc::Thread::ProcessMessages(int) + 123
4    TwilioVideo                              0x1056fcc30     rtc::Thread::PreRun(void*) + 79
5    libsystem_pthread.dylib                  0x1eed5fc9c     _pthread_start + 287
6    libsystem_pthread.dylib                  0x1eed64880     thread_start + 7
ceaglest commented 3 years ago

Hi @eigenl, @vdovichenko,

I believe we have a fix for this logger crash coming up in 4.5.0. I will double check with the team and get back to you.

Best, Chris

ceaglest commented 3 years ago

Hello,

I can confirm that the 4.5.0 release does include fixes for logging related crashes. I will update this issue with a link to the release when available (should be Monday).

Best, Chris

ceaglest commented 3 years ago

Hi @eigenl and @vdovichenko,

We have now released 4.5.0 which includes logger crash fixes. There were some cases of uninitialized memory and other memory management problems that the were diagnosed and resolved in our C++ core library.

Please give it a try and let us know if this fixes crashes for you. If you are using 3.8.0 we have a guide about migrating from 3.0 to 4.0, and if you are already using 4.0 then no code changes are needed to update to 4.5.0.

Thanks, Chris

vdovichenko commented 3 years ago

hi @ceaglest Thanks for the information!

eigenl commented 3 years ago

Seems to be still happening in some cases. Using TwilioVideo 4.5.0

Thread 32 [Crashed]:

0    TwilioVideo                              0x108f1359c     twilio::Logger::getModuleLogLevel(twilio::LogModule) const + 8
1    TwilioVideo                              0x108f3fbac     void boost_1_73_0::asio::detail::initiate_dispatch_with_executor<boost_1_73_0::asio::strand<boost_1_73_0::asio::io_context::executor_type> >::operator()<twilio::net::WebSocket::Implementation::write(boost_1_73_0::asio::const_buffer const&, std::__1::promise<unsigned long>&&)::'lambda'()>(twilio::net::WebSocket::Implementation::write(boost_1_73_0::asio::const_buffer const&, std::__1::promise<unsigned long>&&)::'lambda'()&&) const + 91
2    TwilioVideo                              0x108f29670     twilio::net::WebSocket::Implementation::write(boost_1_73_0::asio::const_buffer const&, std::__1::promise<unsigned long>&&) + 303
3    TwilioVideo                              0x108f294c0     twilio::net::WebSocket::Session::write(boost_1_73_0::asio::const_buffer const&) + 319
4    TwilioVideo                              0x108cc6600     twilio::insights::InsightsSocket::send(std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > const&) + 199
5    TwilioVideo                              0x108cc9314     twilio::insights::InsightsPublisher::sendMessage(twilio::insights::InsightsMessageBase const&) + 467
6    TwilioVideo                              0x108cc8df8     twilio::insights::InsightsPublisher::onStats(std::__1::vector<twilio::media::StatsReport, std::__1::allocator<twilio::media::StatsReport> > const&) + 403
7    TwilioVideo                              0x108eb7984     webrtc::webrtc_new_closure_impl::ClosureTask<twilio::signaling::RoomSignalingImpl::doGetStats(std::__1::weak_ptr<twilio::media::StatsObserver>, bool)::$_7::operator()(std::__1::vector<twilio::media::StatsReport, std::__1::allocator<twilio::media::StatsReport> > const&) const::'lambda'()>::Run() + 295
8    TwilioVideo                              0x1091d9dd8     webrtc::(anonymous namespace)::TaskQueueGcd::RunTask(void*) + 63
9    libdispatch.dylib                        0x1a9914298     _dispatch_client_callout + 15
10   libdispatch.dylib                        0x1a98bca40     _dispatch_lane_serial_drain$VARIANT$mp + 611
11   libdispatch.dylib                        0x1a98bd518     _dispatch_lane_invoke$VARIANT$mp + 419
12   libdispatch.dylib                        0x1a98c6fac     _dispatch_workloop_worker_thread + 711
13   libsystem_pthread.dylib                  0x1f21295bc     _pthread_wqthread + 271
14   libsystem_pthread.dylib                  0x1f212c86c     $start_wqthread + 7
vdovichenko commented 2 years ago

hi @ceaglest. Crash is still happening. Lib version is 4.6.3

Crashed: Thread #1 EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x5f5f73640000294c

Crashed: Thread 0 TwilioVideo 0x2e8af0 twilio::Logger::getModuleLogLevel(twilio::LogModule) const + 28 1 TwilioVideo 0x176c14 void boost_1_73_0::asio::detail::strand_executor_service::dispatch<boost_1_73_0::asio::io_context::executor_type const, boost_1_73_0::asio::executor::function, std::1::allocator >(std::1::shared_ptr const&, boost_1_73_0::asio::io_context::executor_type const&, boost_1_73_0::asio::executor::function&&, std::1::allocator const&) + 256 2 TwilioVideo 0x159d78 void boost_1_73_0::asio::executor::dispatch<boost_1_73_0::asio::detail::binder2<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy>::ops::transfer_op<true, boost_1_73_0::asio::mutable_buffers_1, boost_1_73_0::asio::ssl::detail::io_op<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy>, boost_1_73_0::asio::ssl::detail::read_op<boost_1_73_0::beast::detail::buffers_pair >, boost_1_73_0::beast::websocket::stream<boost_1_73_0::beast::ssl_stream<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy> >, true>::read_some_op<boost_1_73_0::beast::websocket::stream<boost_1_73_0::beast::ssl_stream<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy> >, true>::read_op<boost_1_73_0::asio::detail::coro_handler<boost_1_73_0::asio::executor_binder<void (*)(), boost_1_73_0::asio::executor>, unsigned long>, boost_1_73_0::beast::basic_multi_buffer<std::__1::allocator > >, boost_1_73_0::beast::basic_multi_buffer<std::1::allocator >::subrange > > >, boost_1_73_0::system::error_code, unsigned long>, std::1::allocator >(boost_1_73_0::asio::detail::binder2<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy>::ops::transfer_op<true, boost_1_73_0::asio::mutable_buffers_1, boost_1_73_0::asio::ssl::detail::io_op<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy>, boost_1_73_0::asio::ssl::detail::read_op<boost_1_73_0::beast::detail::buffers_pair >, boost_1_73_0::beast::websocket::stream<boost_1_73_0::beast::ssl_stream<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy> >, true>::read_some_op<boost_1_73_0::beast::websocket::stream<boost_1_73_0::beast::ssl_stream<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy> >, true>::read_op<boost_1_73_0::asio::detail::coro_handler<boost_1_73_0::asio::executor_binder<void (*)(), boost_1_73_0::asio::executor>, unsigned long>, boost_1_73_0::beast::basic_multi_buffer<std::1::allocator > >, boost_1_73_0::beast::basic_multi_buffer<std::1::allocator >::subrange > > >, boost_1_73_0::system::error_code, unsigned long>&&, std::1::allocator const&) const + 732 3 TwilioVideo 0x159694 boost_1_73_0::asio::detail::reactive_socket_recv_op<boost_1_73_0::beast::buffers_prefix_view, boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy>::ops::transfer_op<true, boost_1_73_0::asio::mutable_buffers_1, boost_1_73_0::asio::ssl::detail::io_op<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy>, boost_1_73_0::asio::ssl::detail::read_op<boost_1_73_0::beast::detail::buffers_pair >, boost_1_73_0::beast::websocket::stream<boost_1_73_0::beast::ssl_stream<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy> >, true>::read_some_op<boost_1_73_0::beast::websocket::stream<boost_1_73_0::beast::ssl_stream<boost_1_73_0::beast::basic_stream<boost_1_73_0::asio::ip::tcp, boost_1_73_0::asio::executor, boost_1_73_0::beast::unlimited_rate_policy> >, true>::read_op<boost_1_73_0::asio::detail::coro_handler<boost_1_73_0::asio::executor_binder<void ()(), boost_1_73_0::asio::executor>, unsigned long>, boost_1_73_0::beast::basic_multi_buffer<std::__1::allocator > >, boost_1_73_0::beast::basic_multi_buffer<std::__1::allocator >::subrange > > >, boost_1_73_0::asio::detail::io_object_executor >::do_complete(void, boost_1_73_0::asio::detail::scheduler_operation, boost_1_73_0::system::error_code const&, unsigned long) + 964 4 TwilioVideo 0x2b4338 boost_1_73_0::asio::detail::scheduler::do_run_one(boost_1_73_0::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost_1_73_0::asio::detail::scheduler_thread_info&, boost_1_73_0::system::error_code const&) + 700 5 TwilioVideo 0x2b3ef8 boost_1_73_0::asio::detail::scheduler::run(boost_1_73_0::system::error_code&) + 196 6 TwilioVideo 0x2ff1f0 boost_1_73_0::asio::io_context::run() + 52 7 TwilioVideo 0x300670 void std::1::thread_proxy<std::1::tuple<std::1::unique_ptr<std::1::thread_struct, std::__1::default_delete >, boost_1_73_0::_bi::bind_t<unsigned long, boost_1_73_0::_mfi::mf0<unsigned long, boost_1_73_0::asio::io_context>, boost_1_73_0::_bi::list1<boost_1_73_0::_bi::value<boost_1_73_0::asio::io_context> > > > >(void) + 64 8 libsystem_pthread.dylib 0x63a4 _pthread_start + 116 9 libsystem_pthread.dylib 0x49fc thread_start + 8