SIGSEGV on setFrameSize
Issue
During a rendez-vous swarm call, my Jami client (Linux, QT) crashed. Scenario couldn't be reproduced.
Log (with debug and gdb backtrace)
[1668178916.495|58024|sinkclient.cpp :495 ] [Sink:0x7ffe702e7880] Change crop to [160x90 at (400, 0)]
[1668178916.495|58024|sinkclient.cpp :495 ] [Sink:0x7ffe700458a0] Change crop to [160x90 at (560, 0)]
[1668178916.495|58024|sinkclient.cpp :495 ] [Sink:0x7ffe70045af0] Change crop to [160x90 at (720, 0)]
[1668178916.495|58024|sinkclient.cpp :495 ] [Sink:0x7ffe70061760] Change crop to [1120x630 at (80, 90)]
[1668178916.495|58024|sinkclient.cpp :495 ] [Sink:0x7ffd503bed50] Change crop to [120x90 at (1060, 0)]
[1668178916.495|58024|sinkclient.cpp :482 ] [Sink:0x7ffe7004d300] Stopped - size=0x0, mixer=No
[1668178916.495|58024|sinkclient.cpp :495 ] [Sink:0x7ffe7004d300] Change crop to [0x0 at (0, 0)]
[Thread 0x7ffc7affd700 (LWP 20104) exited]
[Thread 0x7ffc7b7fe700 (LWP 20103) exited]
[Thread 0x7ffc7bfff700 (LWP 20102) exited]
Removing sink: 0x000055555cd56470 from subscribers for id: 2715417316521891_video_0
[1668178916.500|55414|sinkclient.cpp :474 ] [Sink:0x7ffd503bed50] Started - size=120x90, mixer=No
QVideoFrame reset to QSize(120, 90)
[1668178916.500|55414|sinkclient.cpp :474 ] [Sink:0x7ffe700458a0] Started - size=160x90, mixer=No
QVideoFrame reset to QSize(160, 90)
[1668178916.500|55414|sinkclient.cpp :474 ] [Sink:0x7ffe70045af0] Started - size=160x90, mixer=No
QVideoFrame reset to QSize(160, 90)
[1668178916.500|55414|sinkclient.cpp :474 ] [Sink:0x7ffe70061760] Started - size=1120x630, mixer=No
QVideoFrame reset to QSize(1120, 630)
[1668178916.500|55414|sinkclient.cpp :474 ] [Sink:0x7ffe700657c0] Started - size=160x89, mixer=No
QVideoFrame reset to QSize(160, 89)
[1668178916.501|55414|sinkclient.cpp :474 ] [Sink:0x7ffe701d5880] Started - size=160x89, mixer=No
--Type <RET> for more, q to quit, c to continue without paging--
Thread 211 "jami" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff2b5ea700 (LWP 4184182)]
tcache_get (tc_idx=<optimized out>) at malloc.c:2937
2937 malloc.c: No such file or directory.
(gdb) bt
#0 tcache_get (tc_idx=<optimized out>) at malloc.c:2937
#1 __GI___libc_malloc (bytes=48) at malloc.c:3051
#2 0x00007fffe8cf3b39 in operator new(unsigned long) () at /lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00005555557e8c70 in lrc::AVModelPimpl::addRenderer(QString const&, QSize const&, QString const&) ()
#4 0x00005555557e920e in lrc::AVModelPimpl::onDecodingStarted(QString const&, QString const&, int, int) ()
#5 0x00007fffeaae976f in () at /usr/lib/libqt-jami/lib/libQt6Core.so.6
#6 0x00005555556ef77e in lrc::CallbacksHandler::decodingStarted(QString const&, QString const&, int, int) ()
#7 0x00007fffeaae976f in () at /usr/lib/libqt-jami/lib/libQt6Core.so.6
#8 0x000055555580ac4d in VideoManagerInterface::decodingStarted(QString const&, QString const&, int, int, bool) ()
#9 0x0000555555813d02 in std::_Function_handler<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, bool), VideoManagerInterface::VideoManagerInterface()::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, bool)#2}>::_M_invoke(std::_Any_data const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int&&, std::_Any_data const&, bool&&) ()
#10 0x00007fffe93be92f in void jami::emitSignal<libjami::VideoSignal::DecodingStarted, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int, bool>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, int, bool) () at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#11 0x00007fffe93bc58e in jami::video::SinkClient::setFrameSize(int, int) () at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#12 0x00007fffe93be043 in jami::video::SinkClient::update(jami::Observable<std::shared_ptr<libjami::MediaFrame> >*, std::shared_ptr<libjami::MediaFrame> const&) ()
at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#13 0x00007fffe93bdf13 in jami::video::SinkClient::update(jami::Observable<std::shared_ptr<libjami::MediaFrame> >*, std::shared_ptr<libjami::MediaFrame> const&) ()
at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#14 0x00007fffe9391780 in jami::Observable<std::shared_ptr<libjami::MediaFrame> >::notify(std::shared_ptr<libjami::MediaFrame>) () at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#15 0x00007fffe93c1565 in jami::video::VideoGenerator::publishFrame(std::shared_ptr<libjami::VideoFrame>) () at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#16 0x00007fffe93e65a8 in std::_Function_handler<void (std::shared_ptr<libjami::MediaFrame>&&), jami::video::VideoReceiveThread::setup()::{lambda(std::shared_ptr<libjami::MediaFrame> const&)#1}>::_M_invoke(std::_Any_data const&, std::shared_ptr<libjami::MediaFrame>&&) () at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#17 0x00007fffe9352134 in jami::MediaDecoder::decode(AVPacket&) () at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#18 0x00007fffe935079d in jami::MediaDemuxer::decode() () at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#19 0x00007fffe9350a90 in jami::MediaDecoder::decode() () at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#20 0x00007fffe93e7dd8 in jami::video::VideoReceiveThread::decodeFrame() () at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#21 0x00007fffe911cf9d in jami::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>) ()
at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#22 0x00007fffe911d80c in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (jami::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>), jami::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()> > > >::_M_run() ()
at /home/tballasi/sfl/jami-project/daemon/src/.libs/libjami.so.0
#23 0x00007fffe8d1fde4 in () at /lib/x86_64-linux-gnu/libstdc++.so.6
#24 0x00007fffe8e35609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#25 0x00007fffe8a0c133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb)
Edited by Thomas Ballasi