jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2024-01-09T19:32:29Zhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/906PACKAGE_VERSION of win is inconsistent with PACKAGE_VERSION of linux2024-01-09T19:32:29ZLanius-collarisPACKAGE_VERSION of win is inconsistent with PACKAGE_VERSION of linux[CMakeLists.txt L4](https://git.jami.net/savoirfairelinux/jami-daemon/-/blob/master/CMakeLists.txt?ref_type=heads#L4) \
[compat/msvc/config.h L164](https://git.jami.net/savoirfairelinux/jami-daemon/-/blob/master/compat/msvc/config.h?ref_...[CMakeLists.txt L4](https://git.jami.net/savoirfairelinux/jami-daemon/-/blob/master/CMakeLists.txt?ref_type=heads#L4) \
[compat/msvc/config.h L164](https://git.jami.net/savoirfairelinux/jami-daemon/-/blob/master/compat/msvc/config.h?ref_type=heads#L164)Andreas TraczykAndreas Traczykhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/905Client that invites never gets peer's name and picture2023-10-12T21:09:50ZWear GuxjClient that invites never gets peer's name and picture- Alice send an invitation to Bob
- Bob accepts
- Bob gets name and picture from Alice
- Same does not happen to Alice, it's still Bob's jami id that is displayed to Alice and no picture
The reason might be that when the invitation is a...- Alice send an invitation to Bob
- Bob accepts
- Bob gets name and picture from Alice
- Same does not happen to Alice, it's still Bob's jami id that is displayed to Alice and no picture
The reason might be that when the invitation is accepted, it does not send back an automatic counter invitation, as it usually does.
Nevertheless, the peers can successfully exchange text messages in both directions and also call each other.
Client version: Android 20230928https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/904(Android -> Desktop) Calls don't work / quit call does not work during a file...2023-10-04T12:39:58ZElys(Android -> Desktop) Calls don't work / quit call does not work during a file transfer?Maybe related to https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/903 (after unblock)
1. You've previously tried to send a few files Android -\> desktop but you cancled this
2. Exit all apps (desktop and Android)
3. Now after ...Maybe related to https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/903 (after unblock)
1. You've previously tried to send a few files Android -\> desktop but you cancled this
2. Exit all apps (desktop and Android)
3. Now after a few minutes open all apps again
4. Jami will try to download the file (Android -\> Desktop) again
If you try to make a call during the download progress (or before?)
* calls Android -\> Desktop will stuck / don't work (not even showing "Searching" and/or "Connecting")
* the call Android -\> Desktop will work but if you quit the call on desktop the call will proceed on Android
* everything will work? didn't always reproducehttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/903Blocked contact: Toggling own account "Allow calls from unknown contact" duri...2023-11-17T16:30:12ZElysBlocked contact: Toggling own account "Allow calls from unknown contact" during a call / file transfer will create two times the same blocked contact each timerelated: https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/886
<table>
<tr>
<th>
EDIT: Same issue if the Android user previously tried to send an attachment (and/or a text message?) BEFORE the desktop user blocked the Android ...related: https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/886
<table>
<tr>
<th>
EDIT: Same issue if the Android user previously tried to send an attachment (and/or a text message?) BEFORE the desktop user blocked the Android user
If it is file transfer: Every time the desktop user disables and enables the settings "Allow calls from unknown contact" (although it is not a call) the desktop user gets the same contact twice (so 2 -\> 4 -\> 6 -\> 8 etc.) for another time
</th>
</tr>
</table>
Use the beta newest version of Jami (Desktop and Android) with patch: https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/886#note_45676
Steps to reproduce:
1. You can make a call (Jami account 1 (Android) -\> Jami account 2(desktop))
2. Now on desktop (using Jami account 2) block Jami account 1
3. If the desktop user goes to settings he can view the blocked contact (only 1 times the same contact)
4. Now try to make a call Jami account 1 (Android) -\> Jami account 2(desktop)
5. During the Android user makes a call the desktop user turns off the option "Allow calls from unknown contacts" and immediately turns on the option "Allow calls from unknown contacts" again
6. Although the Android user can't call the desktop user anymore, the desktop user will get the same contact twice in the settings "blocked contact"
7. Each time the desktop user repeats these steps he gets the same contact twice again (so in total you'll view the Android user 5 times (1) blocked, 2) two times the same contact: Toggling own account "Allow contacts from unknown contact" 3) two times the same contact: Toggling own account "Allow contacts from unknown contact")
![blockedsamecontact.png](/uploads/72c27565420cdd495194bb7e22a29135/blockedsamecontact.png)
---
Next issue:
If the desktop user just unblocks one of the five / ten same contacts (/Jami account 1 (Android) he'll get the contact in the contact list back again showing call "Finished"
![Finished.png](/uploads/a6d120a453fa66c081136d19c43c3fd2/Finished.png)
---
Next issue:
If the desktop user unblocks all (same) blocked contact it still does not work:
All users (Desktop and Android) have to exit Jami and enter Jami again.
Then the Android user that has been blocked is not listed under "blocked contact" on Jami desktop anymore and communication works.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/902Crash in AudioRtpSession (audioInput_ can be nullptr)2023-10-26T17:59:46ZSébastien BlinCrash in AudioRtpSession (audioInput_ can be nullptr)Crash:
```plaintext
[Thread 0x7ffed47f8640 (LWP 248414) exited]
Thread 5606 "ut_conference" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff3a7fc640 (LWP 248286)]
___pthread_mutex_lock (mutex=0x8) at ./nptl/pthr...Crash:
```plaintext
[Thread 0x7ffed47f8640 (LWP 248414) exited]
Thread 5606 "ut_conference" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff3a7fc640 (LWP 248286)]
___pthread_mutex_lock (mutex=0x8) at ./nptl/pthread_mutex_lock.c:80
80 ./nptl/pthread_mutex_lock.c: No such file or directory.
(gdb) bt
#0 ___pthread_mutex_lock (mutex=0x8) at ./nptl/pthread_mutex_lock.c:80
#1 0x00005555556ad59b in __gthread_mutex_lock (__mutex=0x8) at /usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h:749
#2 0x00005555556cbd04 in std::mutex::lock (this=0x8) at /usr/include/c++/11/bits/std_mutex.h:100
#3 0x00005555556d089c in std::lock_guard<std::mutex>::lock_guard (this=0x7fff3a7f8c40, __m=...) at /usr/include/c++/11/bits/std_mutex.h:229
#4 0x0000555555711689 in jami::Observable<std::shared_ptr<libjami::MediaFrame> >::attach (this=0x0, o=0x7fff10090010) at ./observer.h:77
#5 0x0000555555c7489b in jami::AudioRtpSession::attachLocalRecorder (this=0x7fffb119a920, ms=...) at ./media/audio/audio_rtp_session.cpp:385
#6 0x0000555555c748f0 in operator() (__closure=0x7fff341062d0, ms=...) at ./media/audio/audio_rtp_session.cpp:399
#7 0x0000555555c76a09 in std::__invoke_impl<void, jami::AudioRtpSession::initRecorder()::<lambda(const jami::MediaStream&)>&, const jami::MediaStream&>(std::__invoke_other, struct {...} &) (__f=...)
at /usr/include/c++/11/bits/invoke.h:61
#8 0x0000555555c764a5 in std::__invoke_r<void, jami::AudioRtpSession::initRecorder()::<lambda(const jami::MediaStream&)>&, const jami::MediaStream&>(struct {...} &) (__fn=...)
at /usr/include/c++/11/bits/invoke.h:111
#9 0x0000555555c75b3f in std::_Function_handler<void(const jami::MediaStream&), jami::AudioRtpSession::initRecorder()::<lambda(const jami::MediaStream&)> >::_M_invoke(const std::_Any_data &, const jami::MediaStream &) (__functor=..., __args#0=...) at /usr/include/c++/11/bits/std_function.h:290
#10 0x00005555559ef0d7 in std::function<void (jami::MediaStream const&)>::operator()(jami::MediaStream const&) const (this=0x7fff341062d0, __args#0=...) at /usr/include/c++/11/bits/std_function.h:590
#11 0x00005555559e8e47 in jami::AudioInput::readFromDevice (this=0x7fff34105f20) at ./media/audio/audio_input.cpp:141
#12 0x00005555559e88c2 in jami::AudioInput::process (this=0x7fff34105f20) at ./media/audio/audio_input.cpp:74
#13 0x00005555559e7e83 in operator() (__closure=0x7fff3a7f8fd0) at ./media/audio/audio_input.cpp:52
#14 0x00005555559ecd06 in std::__invoke_impl<void, jami::AudioInput::AudioInput(const string&)::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/11/bits/invoke.h:61
#15 0x00005555559ec49a in std::__invoke_r<void, jami::AudioInput::AudioInput(const string&)::<lambda()>&>(struct {...} &) (__fn=...) at /usr/include/c++/11/bits/invoke.h:111
#16 0x00005555559ebcba in std::_Function_handler<void(), jami::AudioInput::AudioInput(const string&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
at /usr/include/c++/11/bits/std_function.h:290
#17 0x00005555556d13c0 in std::function<void ()>::operator()() const (this=0x7fff3a7f8fd0) at /usr/include/c++/11/bits/std_function.h:590
#18 0x0000555555b8698a in jami::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>) (this=0x7fff34106228, tid=..., setup=..., process=...,
cleanup=...) at threadloop.cpp:38
#19 0x0000555555b8832a in std::__invoke_impl<void, 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 ()> >(std::__invoke_memfun_deref, 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 ()>&&) (
__f=@0x7fffc81ea608: (void (jami::ThreadLoop::*)(jami::ThreadLoop * const, std::thread::id &, std::function<bool()>, std::function<void()>, std::function<void()>)) 0x555555b8693c <jami::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>)>, __t=@0x7fffc81ea600: 0x7fff34106228) at /usr/include/c++/11/bits/invoke.h:74
#20 0x0000555555b88120 in std::__invoke<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 ()> >(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 ()>&&) (
__fn=@0x7fffc81ea608: (void (jami::ThreadLoop::*)(jami::ThreadLoop * const, std::thread::id &, std::function<bool()>, std::function<void()>, std::function<void()>)) 0x555555b8693c <jami::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>)>) at /usr/include/c++/11/bits/invoke.h:96
#21 0x0000555555b87f7f in 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_invoke<0ul, 1ul, 2ul, 3ul, 4ul, 5ul>(std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul>) (
this=0x7fffc81ea598) at /usr/include/c++/11/bits/std_thread.h:259
#22 0x0000555555b87ec4 in 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 ()> > >::operator()() (this=0x7fffc81ea598) at /usr/include/c++/11/bits/std_thread.h:266
#23 0x0000555555b87ea4 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() (this=0x7fffc81ea590)
at /usr/include/c++/11/bits/std_thread.h:211
#24 0x00007ffff6edc253 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#25 0x00007ffff6a94b43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#26 0x00007ffff6b26a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/901MediaRecorder: segfault for videoFilter_2023-10-26T17:59:42ZSébastien BlinMediaRecorder: segfault for videoFilter_Crash:
```plaintext
Thread 5745 "ut_conference" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff1d7fa640 (LWP 241057)]
0x00007ffff6f4bf95 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator...Crash:
```plaintext
Thread 5745 "ut_conference" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff1d7fa640 (LWP 241057)]
0x00007ffff6f4bf95 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) bt
#0 0x00007ffff6f4bf95 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_assign(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /lib/x86_64-linux-gnu/libstdc++.so.6
#1 0x00007ffff6f4c4ad in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /lib/x86_64-linux-gnu/libstdc++.so.6
#2 0x0000555555a50bdb in jami::MediaFilter::initialize (this=0x0,
filterDesc="[v:remote] fps=30/1, scale=-2:720 [v:m]; [v:local] fps=30/1, scale=-2:144 [v:o]; [v:m] [v:o] overlay=main_w-overlay_w:main_h-overlay_h, format=pix_fmts=yuv420p",
msps=std::vector of length 2, capacity 2 = {...}) at media/media_filter.cpp:56
#3 0x0000555555a5dced in jami::MediaRecorder::setupVideoOutput (this=0x7fff80a94b30) at media/media_recorder.cpp:517
#4 0x0000555555a5bd85 in jami::MediaRecorder::addStream (this=0x7fff80a94b30, ms=...) at media/media_recorder.cpp:283
#5 0x0000555555c86594 in jami::video::VideoRtpSession::attachLocalRecorder (this=0x7fff802e6ab0, ms=...) at ./media/video/video_rtp_session.cpp:792
#6 0x0000555555c86618 in operator() (__closure=0x5555577a9438, ms=...) at ./media/video/video_rtp_session.cpp:808
#7 0x0000555555c89531 in std::__invoke_impl<void, jami::video::VideoRtpSession::initRecorder()::<lambda(const jami::MediaStream&)>&, const jami::MediaStream&>(std::__invoke_other, struct {...} &) (
__f=...) at /usr/include/c++/11/bits/invoke.h:61
#8 0x0000555555c88da7 in std::__invoke_r<void, jami::video::VideoRtpSession::initRecorder()::<lambda(const jami::MediaStream&)>&, const jami::MediaStream&>(struct {...} &) (__fn=...)
at /usr/include/c++/11/bits/invoke.h:111
#9 0x0000555555c8801f in std::_Function_handler<void(const jami::MediaStream&), jami::video::VideoRtpSession::initRecorder()::<lambda(const jami::MediaStream&)> >::_M_invoke(const std::_Any_data &, const jami::MediaStream &) (__functor=..., __args#0=...) at /usr/include/c++/11/bits/std_function.h:290
#10 0x00005555559ef0d7 in std::function<void (jami::MediaStream const&)>::operator()(jami::MediaStream const&) const (this=0x5555577a9438, __args#0=...) at /usr/include/c++/11/bits/std_function.h:590
#11 0x0000555555a2cd76 in operator() (__closure=0x7ffeac32d508) at ./media/video/video_input.cpp:266
#12 0x0000555555a303bc in std::__invoke_impl<void, jami::video::VideoInput::setRecorderCallback(const std::function<void(const jami::MediaStream&)>&)::<lambda()>&>(std::__invoke_other, struct {...} &) (
__f=...) at /usr/include/c++/11/bits/invoke.h:61
#13 0x0000555555a2fda1 in std::__invoke_r<void, jami::video::VideoInput::setRecorderCallback(const std::function<void(const jami::MediaStream&)>&)::<lambda()>&>(struct {...} &) (__fn=...)
at /usr/include/c++/11/bits/invoke.h:111
#14 0x0000555555a2f9c8 in std::_Function_handler<void(), jami::video::VideoInput::setRecorderCallback(const std::function<void(const jami::MediaStream&)>&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/11/bits/std_function.h:290
#15 0x00005555556d13c0 in std::function<void ()>::operator()() const (this=0x7ffeac32d508) at /usr/include/c++/11/bits/std_function.h:590
#16 0x0000555555a490db in jami::MediaDecoder::decode (this=0x7ffeac32d300, packet=...) at media/media_decoder.cpp:701
#17 0x0000555555a47d1c in operator() (__closure=0x7ffeac0f1b90, packet=...) at media/media_decoder.cpp:492
#18 0x0000555555a4a88f in std::__invoke_impl<jami::DecodeStatus, jami::MediaDecoder::setup(AVMediaType)::<lambda(AVPacket&)>&, AVPacket&>(std::__invoke_other, struct {...} &) (__f=...)
at /usr/include/c++/11/bits/invoke.h:61
#19 0x0000555555a4a511 in std::__invoke_r<jami::DecodeStatus, jami::MediaDecoder::setup(AVMediaType)::<lambda(AVPacket&)>&, AVPacket&>(struct {...} &) (__fn=...) at /usr/include/c++/11/bits/invoke.h:114
#20 0x0000555555a49f9a in std::_Function_handler<jami::DecodeStatus(AVPacket&), jami::MediaDecoder::setup(AVMediaType)::<lambda(AVPacket&)> >::_M_invoke(const std::_Any_data &, AVPacket &) (
__functor=..., __args#0=...) at /usr/include/c++/11/bits/std_function.h:290
#21 0x0000555555a4bb15 in std::function<jami::DecodeStatus (AVPacket&)>::operator()(AVPacket&) const (this=0x7ffeac0f1b90, __args#0=...) at /usr/include/c++/11/bits/std_function.h:590
#22 0x0000555555a472d6 in jami::MediaDemuxer::decode (this=0x7ffeac32c080) at media/media_decoder.cpp:403
#23 0x0000555555a491b0 in jami::MediaDecoder::decode (this=0x7ffeac32d300) at media/media_decoder.cpp:717
#24 0x0000555555a2c987 in jami::video::VideoInput::captureFrame (this=0x5555577a90d0) at ./media/video/video_input.cpp:212
#25 0x0000555555a2c845 in jami::video::VideoInput::process (this=0x5555577a90d0) at ./media/video/video_input.cpp:183
#26 0x0000555555a32ddf in std::__invoke_impl<void, void (jami::video::VideoInput::*&)(), jami::video::VideoInput*&> (
__f=@0x7fffc8134020: (void (jami::video::VideoInput::*)(jami::video::VideoInput * const)) 0x555555a2c78a <jami::video::VideoInput::process()>, __t=@0x7fffc8134030: 0x5555577a90d0)
at /usr/include/c++/11/bits/invoke.h:74
#27 0x0000555555a32cae in std::__invoke<void (jami::video::VideoInput::*&)(), jami::video::VideoInput*&> (
__fn=@0x7fffc8134020: (void (jami::video::VideoInput::*)(jami::video::VideoInput * const)) 0x555555a2c78a <jami::video::VideoInput::process()>) at /usr/include/c++/11/bits/invoke.h:96
#28 0x0000555555a32bd7 in std::_Bind<void (jami::video::VideoInput::*(jami::video::VideoInput*))()>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (this=0x7fffc8134020, __args=...)
at /usr/include/c++/11/functional:420
#29 0x0000555555a32a69 in std::_Bind<void (jami::video::VideoInput::*(jami::video::VideoInput*))()>::operator()<, void>() (this=0x7fffc8134020) at /usr/include/c++/11/functional:503
#30 0x0000555555a327be in std::__invoke_impl<void, std::_Bind<void (jami::video::VideoInput::*(jami::video::VideoInput*))()>&>(std::__invoke_other, std::_Bind<void (jami::video::VideoInput::*(jami::video::VideoInput*))()>&) (__f=...) at /usr/include/c++/11/bits/invoke.h:61
#31 0x0000555555a3244e in std::__invoke_r<void, std::_Bind<void (jami::video::VideoInput::*(jami::video::VideoInput*))()>&>(std::_Bind<void (jami::video::VideoInput::*(jami::video::VideoInput*))()>&) (
__fn=...) at /usr/include/c++/11/bits/invoke.h:111
#32 0x0000555555a31e80 in std::_Function_handler<void (), std::_Bind<void (jami::video::VideoInput::*(jami::video::VideoInput*))()> >::_M_invoke(std::_Any_data const&) (__functor=...)
at /usr/include/c++/11/bits/std_function.h:290
--Type <RET> for more, q to quit, c to continue without paging--
#33 0x00005555556d13c0 in std::function<void ()>::operator()() const (this=0x7fff1d7f6fd0) at /usr/include/c++/11/bits/std_function.h:590
#34 0x0000555555b8698a in jami::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>) (this=0x5555577a9378, tid=..., setup=..., process=...,
cleanup=...) at threadloop.cpp:38
#35 0x0000555555b8832a in std::__invoke_impl<void, 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 ()> >(std::__invoke_memfun_deref, 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 ()>&&) (
__f=@0x7fffc818cba8: (void (jami::ThreadLoop::*)(jami::ThreadLoop * const, std::thread::id &, std::function<bool()>, std::function<void()>, std::function<void()>)) 0x555555b8693c <jami::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>)>, __t=@0x7fffc818cba0: 0x5555577a9378) at /usr/include/c++/11/bits/invoke.h:74
#36 0x0000555555b88120 in std::__invoke<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 ()> >(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 ()>&&) (
__fn=@0x7fffc818cba8: (void (jami::ThreadLoop::*)(jami::ThreadLoop * const, std::thread::id &, std::function<bool()>, std::function<void()>, std::function<void()>)) 0x555555b8693c <jami::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>)>) at /usr/include/c++/11/bits/invoke.h:96
#37 0x0000555555b87f7f in 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_invoke<0ul, 1ul, 2ul, 3ul, 4ul, 5ul>(std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul>) (
this=0x7fffc818cb38) at /usr/include/c++/11/bits/std_thread.h:259
#38 0x0000555555b87ec4 in 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 ()> > >::operator()() (this=0x7fffc818cb38) at /usr/include/c++/11/bits/std_thread.h:266
#39 0x0000555555b87ea4 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() (this=0x7fffc818cb30)
at /usr/include/c++/11/bits/std_thread.h:211
#40 0x00007ffff6edc253 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#41 0x00007ffff6a94b43 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#42 0x00007ffff6b26a00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
```
mutexes for videoFilter\_ seems to be incorrectSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/900ut_conference segfault since some days2023-10-26T17:59:38ZSébastien Blinut_conference segfault since some daysStacktrace:
```plaintext
�[0m�[22;36m[1695969528.280|21249|sipcall.cpp :1089] �[22;36mAddressSanitizer:DEADLYSIGNAL
[1695969528.280|20699|socket_pair.cpp :337 ] �[0m=================================================...Stacktrace:
```plaintext
�[0m�[22;36m[1695969528.280|21249|sipcall.cpp :1089] �[22;36mAddressSanitizer:DEADLYSIGNAL
[1695969528.280|20699|socket_pair.cpp :337 ] �[0m=================================================================
Creating rtp socket for uri rtp://172.17.0.11:49404 on port 60378
�[0m�[0m[call:4008112576292348] Successfully answered the media change request
�[0m�[22;36m[1695969528.280|20697|sip_utils.cpp :221 ] �[0mAdd header to SIP message: "User-Agent: Jami Daemon 13.9.0-09bfe85330-dirty (linux)"
�[0m�[22;36m[1695969528.280|20699|socket_pair.cpp :174 ] �[0muse local address: 0.0.0.0:60378
�[0m==20697==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000038 (pc 0x55853e0f604a bp 0x7fa7477e7f70 sp 0x7fa7477e7f40 T589)
�[22;36m[1695969528.280|20699|socket_pair.cpp :174 ] �[0muse local address: 0.0.0.0:60379
�[0m�[22;36m�[22;36m[1695969528.280|20699|socket_pair.cpp :361 ] �[0m�[01;33mSocketPair: local{60378,60379} / 172.17.0.11{49404,49405}
�[0m[1695969528.280|21293|media_decoder.cpp :150 ] �[0mTrying to open device dummyFilename with format sdp, pixel format , size 0x0, rate 0.000000
==20697==The signal is caused by a READ memory access.
�[0m�[22;36m[1695969528.280|21250|sipvoiplink.cpp :1120] �[0m[call:7411818913851632] INVITE@0x61900042c2a8 media update: status 0
�[0m�[22;36m[1695969528.280|20697|conference.cpp :561 ] �[0m�[01;33mTake over [AUDIO] control from call 3129400994883713 - current local source state [muted]
�[0m==20697==Hint: address points to the zero page.
�[22;36m[1695969528.280|20699|video_rtp_session.cpp :118 ] �[0m[0x61d000413c90] Start video RTP sender: input [] - muted [NO]
�[0m�[22;36m[1695969528.280|20697|conference.cpp :567 ] �[0m�[01;33mTake over [VIDEO] control from call 3129400994883713 - current local source state [muted]
�[0m�[22;36m[1695969528.280|21250|sdp.cpp :134 ] �[0mSet active local session to [0x619000306ba8]. Was [(nil)]
�[0m�[22;36m[1695969528.280|20699|media_encoder.cpp :62 ] �[0m[0x61500129a380] New instance created
�[0m�[22;36m[1695969528.280|20697|sipcall.cpp :3081] �[0m[call:3129400994883713] Entering conference [5406518273839043]
�[0m�[22;36m[1695969528.280|21250|sdp.cpp :498 ] �[0m[SDP OFFER] Local active session:
v=0
o=b7b6580484b9 3904958326 2 IN IP4 172.17.0.11
s=Call ID 1702131012226992
c=IN IP4 172.17.0.11
t=0 0
m=audio 29248 RTP/SAVP 104 101
a=rtpmap:104 opus/48000/2
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=rtcp:29249 IN IP4 172.17.0.11
a=sendrecv
m=video 58824 RTP/SAVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=428029
a=rtcp:58825 IN IP4 172.17.0.11
a=sendrecv
�[0m�[22;36m[1695969528.280|20699|media_encoder.cpp :93 ] �[0m�[22;31mInvalid options
�[0m�[22;36m[1695969528.280|21293|media_decoder.cpp :170 ] �[0mUsing format sdp and resolution 0x0
�[0m�[22;36m�[22;36m[1695969528.280|21250|sdp.cpp :142 ] �[0mSet active remote session to [0x619000505aa8]. Was [(nil)]
�[0m[1695969528.280|20697|video_rtp_session.cpp :557 ] �[0m[0x61d00047fe90] enterConference (conf: 5406518273839043)
�[0m�[22;36m[1695969528.280|20699|media_encoder.cpp :189 ] �[0m[0x61500129a380] Created new coding instance for H264 @ index 0
�[0m�[22;36m[1695969528.280|21250|sdp.cpp :498 ] �[0m[SDP OFFER] Remote active session:
v=0
o=b7b6580484b9 3904958326 3 IN IP4 172.17.0.11
s=Call ID 4008112576292348
c=IN IP4 172.17.0.11
t=0 0
m=audio 22278 RTP/SAVP 104 101
a=rtpmap:104 opus/48000/2
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=rtcp:22279 IN IP4 172.17.0.11
a=sendrecv
m=video 54988 RTP/SAVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=428029
a=rtcp:54989 IN IP4 172.17.0.11
a=sendrecv
�[0m�[22;36m[1695969528.280|20697|conference.cpp :977 ] �[0mBind participant 3129400994883713 to conference 5406518273839043
�[0m�[22;36m[1695969528.280|20697|ringbufferpool.cpp :174 ] �[0mBind call 3129400994883713 to call 7411818913851632
�[0m�[22;36m[1695969528.280|20697|ringbufferpool.cpp :155 ] �[0mBind rbuf '3129400994883713' to callid '7411818913851632'
�[0m�[22;36m[1695969528.280|20697|ringbufferpool.cpp :155 ] �[0mBind rbuf '7411818913851632' to callid '3129400994883713'
�[0m�[22;36m[1695969528.280|20697|ringbufferpool.cpp :155 ] �[0mBind rbuf '3129400994883713' to callid 'audiolayer_id'
�[0m�[22;36m[1695969528.280|20697|manager.cpp :611 ] �[0m----- Switch current call id to '5406518273839043' -----
�[0m�[22;36m[1695969528.280|20697|conference.cpp :344 ] �[0m[conf 5406518273839043] Set state to [ACTIVE_ATTACHED] (was [ACTIVE_ATTACHED])
�[0m�[22;36m[1695969528.281|20697|conference.cpp :346 ] �[0mStop conference
�[0m�[22;36m[1695969528.281|20697|manager.cpp :1433] �[0mHangup conference 5406518273839043
�[0m�[22;36m[1695969528.281|20697|manager.cpp :1717] �[0m[call:3129400994883713] Remove local audio
�[0m�[22;36m[1695969528.281|20697|ringbufferpool.cpp :262 ] �[0mUnbind call 3129400994883713 from all bound calls
�[0m�[22;36m[1695969528.281|20697|manager.cpp :1607] �[0mRemove participant 3129400994883713
�[0m�[22;36m[1695969528.281|20697|conference.cpp :880 ] �[0mRemove call 3129400994883713 in conference 5406518273839043
�[0m�[22;36m[1695969528.281|20697|sipcall.cpp :3101] �[0m[call:3129400994883713] Leaving conference
�[0m�[22;36m[1695969528.281|20697|ringbufferpool.cpp :174 ] �[0mBind call 3129400994883713 to call audiolayer_id
�[0m�[22;36m[1695969528.281|20697|ringbufferpool.cpp :155 ] �[0mBind rbuf '3129400994883713' to callid 'audiolayer_id'
�[0m�[22;36m[1695969528.281|20697|ringbufferpool.cpp :155 ] �[0mBind rbuf 'audiolayer_id' to callid '3129400994883713'
�[0m�[22;36m[1695969528.281|20697|video_rtp_session.cpp :577 ] �[0m[0x61d00047fe90] exitConference (conf: 5406518273839043)
�[0m�[22;36m[1695969528.281|20697|manager.cpp :1717] �[0m[call:3129400994883713] Remove local audio
�[0m�[22;36m[1695969528.281|20697|ringbufferpool.cpp :262 ] �[0mUnbind call 3129400994883713 from all bound calls
�[0m�[22;36m[1695969528.281|20697|manager.cpp :544 ] �[0mProcess remaining 1 participant(s) from conference 5406518273839043
�[0m�[22;36m[1695969528.281|20697|manager.cpp :611 ] �[0m----- Switch current call id to '7411818913851632' -----
�[0m�[22;36m[1695969528.281|20697|manager.cpp :580 ] �[0mNo remaining participants, remove conference
�[0m�[22;36m[1695969528.281|20697|sipcall.cpp :759 ] �[0m[call:3129400994883713] Terminate SIP session
�[0m�[22;36m[1695969528.281|20697|sip_utils.cpp :221 ] �[0mAdd header to SIP message: "User-Agent: Jami Daemon 13.9.0-09bfe85330-dirty (linux)"
�[0m�[22;36m[1695969528.281|20697|sipcall.cpp :733 ] �[0m[call:3129400994883713] Delete current invite session
�[0m�[22;36m[1695969528.281|20697|sipcall.cpp :2227] �[0m[call:3129400994883713] Stopping all media
�[0m�[22;36m[1695969528.281|20697|audio_rtp_session.cpp :228 ] �[0m[0x61c0000d8090] Stopping receiver
�[0m�[22;36m[1695969528.281|20697|video_rtp_session.cpp :245 ] �[0m[0x61d00047fe90] Stop video RTP sender: input [] - muted [NO]
�[0m�[22;36m[1695969528.281|20697|video_rtp_session.cpp :319 ] �[0m[0x61d00047fe90] Stopping receiver
�[0m�[22;36m[1695969528.281|20697|call.cpp :241 ] �[0m[call:3129400994883713] state change 1/1, cnx 4/0, code 0
�[0m�[22;36m[1695969528.282|20697|call.cpp :275 ] �[0m[call:3129400994883713] emit client call state change HUNGUP, code 0
�[0m�[22;36m[1695969528.282|20697|manager.cpp :1717] �[0m[call:7411818913851632] Remove local audio
�[0m�[22;36m[1695969528.282|20697|ringbufferpool.cpp :262 ] �[0mUnbind call 7411818913851632 from all bound calls
�[0m�[22;36m[1695969528.282|20761|sipcall.cpp :1592] �[0m[call:3129400994883713] removeCall()
�[0m�[22;36m[1695969528.282|20697|manager.cpp :1607] �[0mRemove participant 7411818913851632
�[0m�[22;36m[1695969528.282|20761|call_factory.cpp :72 ] �[0mRemoving call 3129400994883713
�[0m�[22;36m[1695969528.282|20697|conference.cpp :880 ] �[0mRemove call 7411818913851632 in conference 5406518273839043
�[0m�[22;36m[1695969528.282|20761|call_factory.cpp :75 ] �[0mRemaining 3 call
�[0m�[22;36m[1695969528.282|20761|call.cpp :241 ] �[0m[call:3129400994883713] state change 1/6, cnx 0/0, code 0
�[0m�[22;36m[1695969528.282|20697|sipcall.cpp :3101] �[0m[call:7411818913851632] Leaving conference
�[0m�[22;36m[1695969528.282|20697|ringbufferpool.cpp :174 ] �[0mBind call 7411818913851632 to call audiolayer_id
�[0m�[22;36m[1695969528.282|20761|contact_list.cpp :163 ] �[0m�[01;33m[Contacts] contact '90d20919eec87c2de5c4559df9eeb269f000eec3' not found
�[0m�[22;36m[1695969528.282|20697|ringbufferpool.cpp :155 ] �[0mBind rbuf '7411818913851632' to callid 'audiolayer_id'
�[0m�[22;36m[1695969528.282|20697|ringbufferpool.cpp :155 ] �[0mBind rbuf 'audiolayer_id' to callid '7411818913851632'
�[0m�[22;36m[1695969528.282|20761|sipcall.cpp :3255] �[0m- Call 3129400994883713 with 90d20919eec87c2de5c4559df9eeb269f000eec3:
�[0m�[22;36m[1695969528.282|20697|video_rtp_session.cpp :577 ] �[0m[0x61d0002fb290] exitConference (conf: 5406518273839043)
�[0m�[22;36m[1695969528.282|20761|sipcall.cpp :3256] �[0m - Duration: 10 ms
�[0m�[22;36m[1695969528.282|20697|video_mixer.cpp :203 ] �[0mDetaching video of call 7411818913851632
�[0m�[22;36m[1695969528.282|20761|sipcall.cpp :3258] �[0m - Media: type [AUDIO] enabled [YES] muted [NO] label [audio_0] source [] secure [YES]
�[0m�[22;36m[1695969528.282|20697|video_mixer.cpp :237 ] �[0mRemove source [0x60b0001317b0]
�[0m�[22;36m[1695969528.282|20761|sipcall.cpp :3258] �[0m - Media: type [VIDEO] enabled [YES] muted [NO] label [video_0] source [] secure [YES]
�[0m�[22;36m[1695969528.282|20697|video_mixer.cpp :239 ] �[0mTotal sources: 0
�[0m�[22;36m[1695969528.282|20761|call.cpp :275 ] �[0m[call:3129400994883713] emit client call state change OVER, code 0
�[0m�[22;36m[1695969528.282|20697|video_receive_thread.cpp:285 ] �[0m[0x61a000702680] Starting sink
�[0m�[22;36m[1695969528.282|20761|sipcall.cpp :459 ] �[0m[call:3129400994883713] Setting transport to [(nil)]
�[0m�[22;36m[1695969528.282|20697|manager.cpp :1717] �[0m[call:7411818913851632] Remove local audio
�[0m�[22;36m[1695969528.283|20697|ringbufferpool.cpp :262 ] �[0mUnbind call 7411818913851632 from all bound calls
�[0m�[22;36m[1695969528.283|20697|manager.cpp :544 ] �[0mProcess remaining 0 participant(s) from conference 5406518273839043
�[0m�[22;36m[1695969528.283|20697|manager.cpp :584 ] �[0mNo remaining participants, remove conference
�[0m�[22;36m[1695969528.283|20697|sipcall.cpp :759 ] �[0m[call:7411818913851632] Terminate SIP session
�[0m�[22;36m[1695969528.283|20697|sip_utils.cpp :221 ] �[0mAdd header to SIP message: "User-Agent: Jami Daemon 13.9.0-09bfe85330-dirty (linux)"
�[0m�[22;36m[1695969528.283|20697|sipcall.cpp :733 ] �[0m[call:7411818913851632] Delete current invite session
�[0m�[22;36m[1695969528.283|20697|sipcall.cpp :2227] �[0m[call:7411818913851632] Stopping all media
�[0m�[22;36m[1695969528.283|20697|audio_rtp_session.cpp :228 ] �[0m[0x61c0000d5890] Stopping receiver
�[0m�[22;36m[1695969528.283|20697|socket_pair.cpp :313 ] �[0m[0x6160013aa380] Read operations in blocking mode [NO]
�[0m�[22;36m[1695969528.283|20697|socket_pair.cpp :300 ] �[0m�[01;33m[0x6160013aa380] Interrupting RTP sockets
�[0m�[22;36m[1695969528.283|21249|sipvoiplink.cpp :891 ] �[0m[call:4008112576292348] INVITE@0x6190001987a8 state changed to 6 (DISCONNCTD): cause=200, tsx@0x61d000035328 status 200 (OK)
�[0m�[22;36m[1695969528.283|21281|media_decoder.cpp :547 ] �[0mUsing libopus Opus (libopus) decoder for audio
�[0m�[22;36m[1695969528.283|21281|media_decoder.cpp :558 ] �[0m�[01;33mNot using hardware decoding for opus
�[0m #0 0x55853e0f6049 in jami::MediaDecoder::getStream(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const media/media_decoder.cpp:835
#1 0x55853e9198dc in jami::AudioReceiveThread::getInfo() const media/audio/audio_receive_thread.cpp:152
#2 0x55853e820fe3 in jami::AudioRtpSession::setMuted(bool, jami::RtpSession::Direction) media/audio/audio_rtp_session.cpp:262
#3 0x55853e3e46fe in jami::SIPCall::peerMuted(bool, int) sip/sipcall.cpp:3615
#4 0x55853e499d54 in handleMediaControl sip/sipvoiplink.cpp:1241
#5 0x55853e49c508 in onRequestInfo sip/sipvoiplink.cpp:1323
#6 0x55853e49d2fa in transaction_state_changed_cb sip/sipvoiplink.cpp:1390
#7 0x55853e9c5467 in mod_inv_on_tsx_state (/foo/test/unitTest/ut_conference+0x40de467)
#8 0x55853ea025ec in pjsip_dlg_on_tsx_state (/foo/test/unitTest/ut_conference+0x411b5ec)
#9 0x55853e9fb6eb in tsx_set_state (/foo/test/unitTest/ut_conference+0x41146eb)
#10 0x55853e9fbef8 in tsx_on_state_null (/foo/test/unitTest/ut_conference+0x4114ef8)
#11 0x55853e9ff6b1 in pjsip_tsx_recv_msg (/foo/test/unitTest/ut_conference+0x41186b1)
#12 0x55853ea02304 in pjsip_dlg_on_rx_request (/foo/test/unitTest/ut_conference+0x411b304)
#13 0x55853ea03a62 in mod_ua_on_rx_request (/foo/test/unitTest/ut_conference+0x411ca62)
#14 0x55853e9e897a in pjsip_endpt_process_rx_data (/foo/test/unitTest/ut_conference+0x410197a)
#15 0x55853e9e8bb5 in endpt_on_rx_msg (/foo/test/unitTest/ut_conference+0x4101bb5)
#16 0x55853e9efbde in pjsip_tpmgr_receive_packet (/foo/test/unitTest/ut_conference+0x4108bde)
#17 0x55853e6379bd in operator() jamidht/channeled_transport.cpp:172
#18 0x55853e63ac21 in _M_invoke /usr/include/c++/9/bits/std_function.h:285
#19 0x55853e9611c3 in dhtnet::ChannelSocket::onRecv(std::vector<unsigned char, std::allocator<unsigned char> >&&) (/foo/test/unitTest/ut_conference+0x407a1c3)
#20 0x55853e961025 in dhtnet::MultiplexedSocket::Impl::handleChannelPacket(unsigned short, std::vector<unsigned char, std::allocator<unsigned char> >&&) (/foo/test/unitTest/ut_conference+0x407a025)
#21 0x55853e9658f2 in dhtnet::MultiplexedSocket::Impl::eventLoop() (/foo/test/unitTest/ut_conference+0x407e8f2)
#22 0x55853e969437 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dhtnet::MultiplexedSocket::Impl::Impl(dhtnet::MultiplexedSocket&, std::shared_ptr<asio::io_context>, dht::Hash<32ul> const&, std::unique_ptr<dhtnet::TlsSocketEndpoint, std::default_delete<dhtnet::TlsSocketEndpoint> >, std::shared_ptr<dht::log::Logger>)::{lambda()#1}> > >::_M_run() (/foo/test/unitTest/ut_conference+0x4082437)
#23 0x7fa771d9fdf3 (/lib/x86_64-linux-gnu/libstdc++.so.6+0xd6df3)
#24 0x7fa7724b9608 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8608)
#25 0x7fa771a8c132 in __clone (/lib/x86_64-linux-gnu/libc.so.6+0x11f132)
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/899Sync contacts doesn't work for JAMS2023-10-02T18:48:51ZSébastien BlinSync contacts doesn't work for JAMS# Scenario
+ Remove or re-add a contact on a JAMS account (Note: Just adding the contact is not enough to trigger the error).
# Current result
```
[1695241407.656|13426|server_account_manager.cpp:395 ] [Auth] Got contact sync request ...# Scenario
+ Remove or re-add a contact on a JAMS account (Note: Just adding the contact is not enough to trigger the error).
# Current result
```
[1695241407.656|13426|server_account_manager.cpp:395 ] [Auth] Got contact sync request callback with status code=500
[1695241407.657|13426] [http:request:55] end with error: stream truncated
[1695241407.657|13426] [http:request:55] can't parse response to json
```
JAMS is not updated
# Code:
```
sendDeviceRequest(std::make_shared<Request>(
*Manager::instance().ioContext(),
urlContacts,
jsonContacts,
[w=weak_from_this()](Json::Value json, const dht::http::Response& response) {
JAMI_DBG("[Auth] Got contact sync request callback with status code=%u",
response.status_code);
auto this_ = std::static_pointer_cast<ServerAccountManager>(w.lock());
if (!this_) return;
if (response.status_code >= 200 && response.status_code < 300) {
try {
JAMI_WARN("[Auth] Got server response: %s", response.body.c_str());
if (not json.isArray()) {
JAMI_ERR("[Auth] Can't parse server response: not an array");
} else {
for (unsigned i = 0, n = json.size(); i < n; i++) {
const auto& e = json[i];
Contact contact(e);
this_->info_->contacts
->updateContact(dht::InfoHash {e["uri"].asString()}, contact);
}
this_->info_->contacts->saveContacts();
}
} catch (const std::exception& e) {
JAMI_ERR("Error when iterating contact list: %s", e.what());
}
} else if (response.status_code == 401)
this_->authError(TokenScope::Device);
this_->clearRequest(response.request);
},
logger_));
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/898plugins: macos: arm64: should only show plugins if they support arm64 mac2023-09-21T10:03:24ZAline Gondim Santosplugins: macos: arm64: should only show plugins if they support arm64 macPlugins are not yet build and tested for Mac arm64, so the plugins appearing in the plugin-store should actually **not appear**.Plugins are not yet build and tested for Mac arm64, so the plugins appearing in the plugin-store should actually **not appear**.Aline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/897plugin-store: cannot install plugin in macos2023-09-21T10:03:17ZAline Gondim Santosplugin-store: cannot install plugin in macos```
[1695128895.356|0x700002c52000|jamipluginmanager.cpp :273 ] The complexity of an attempted match against a regular expression exceeded a pre-set level.
[1695128895.367|0x1127dce00|pluginsutils.cpp :222 ] Can't read file: /Us...```
[1695128895.356|0x700002c52000|jamipluginmanager.cpp :273 ] The complexity of an attempted match against a regular expression exceeded a pre-set level.
[1695128895.367|0x1127dce00|pluginsutils.cpp :222 ] Can't read file: /Users/aline/Library/Application Support/jami/plugins/AutoAnswer/AutoAnswer.crt
[1695128895.367|0x1127dce00|jamipluginmanager.cpp :63 ] Could not read plugin certificate
```Aline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/896plugin-store: cannot install plugin in windows2023-09-21T10:03:10ZAline Gondim Santosplugin-store: cannot install plugin in windows Jami.exe!gnutls_x509_trust_list_add_cas(gnutls_x509_trust_list_st * list, gnutls_x509_crt_int * const * clist, unsigned int clist_size, unsigned int flags) Line 286 C
[External Code]
Jami.exe!jami::JamiPluginManager::checkPluginC... Jami.exe!gnutls_x509_trust_list_add_cas(gnutls_x509_trust_list_st * list, gnutls_x509_crt_int * const * clist, unsigned int clist_size, unsigned int flags) Line 286 C
[External Code]
Jami.exe!jami::JamiPluginManager::checkPluginCertificateValidity(dht::crypto::Certificate * cert) Line 125 C++
Jami.exe!jami::JamiPluginManager::checkPluginCertificate(const std::string & jplPath, bool force) Line 211 C++
Jami.exe!jami::JamiPluginManager::installPlugin(const std::string & jplPath, bool force) Line 230 C++
Jami.exe!PluginManagerInterface::installPlugin(const QString & jplPath, bool force) Line 54 C++
Jami.exe!lrc::api::PluginModel::installPlugin(const QString & jplPath, bool force) Line 121 C++
[External Code]
Exception thrown: read access violation.
**list** was nullptr.Aline Gondim SantosAndreas TraczykAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/931Message cannot be sent2024-03-23T15:49:25Zsession 21Message cannot be sentI have two accounts, one logged in on my computer and the other on my phone. After logging in to my computer for more than a period of time, my phone starts the software, and then my computer cannot receive messages sent by my phone.
Mo...I have two accounts, one logged in on my computer and the other on my phone. After logging in to my computer for more than a period of time, my phone starts the software, and then my computer cannot receive messages sent by my phone.
Mobile version: 379 (376)
Equipment model: Samsung s20+5g
Android 12
Computer version: 202307111203
Win 10 (22H2)
I think I have reproduced this error. On September 16th, when I was in version 376, I encountered this error and it reappeared tonight. I give these two examples because I have the Jami logs on my phone during these two errors.
In the previous time, I encountered this error at least ten times, but it was all between computers, and the computer's records were not complete. I hoped to - d start, but this error will not reappear after restarting.
**The important thing is that this error may not occur until the computer's client is started for an hour (if that happens, the log will be large, so I did not attempt to record the log on the computer)**
**Actual result: My computer cannot receive any messages.**
**Expected results: Message transmission should be normal.**
**Public network dynamic ipv6 is working normally.**
Yesterday, I thought it might be an issue with the Android version being too low, so I didn't provide any feedback on this issue because I heard from a friend that Jami seemed to have fixed an error that could cause abnormal messages.
However, today I encountered this problem again.
And I have two days of logs, so I decided to upload it.
[log0.log](/uploads/2d1ef596bfeabf76eaaabb538c4a15a5/log0.log)
[log1.log](/uploads/240c35be47e58df87db612c0930256a2/log1.log)
In the two logs, there is a description of "message sent successfully", but in reality it is not.
In the second log paragraph, it was not until my account received a message from the computer that both parties' information reception and transmission resumed normal.
The reason for returning to normal is that I performed the "close account and then re enable account" operation on my computer.
During this period, the abnormal state of the message lasted for 20 minutes.
**I can't find how to upload the file, so if there is any sensitive information, could you please help me cover it up.**
**Thank you. I admire your hard work.**Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/895windows: UT: make and run unit tests in windows2023-11-17T16:34:28ZAline Gondim Santoswindows: UT: make and run unit tests in windowshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/892When kicked out of a Swarm, conversations still appears and make it like you ...2024-01-26T12:42:50ZThomas BallasiWhen kicked out of a Swarm, conversations still appears and make it like you can still discussThis would probably require the daemon to be able to put Swarm into an "archive" state that is read-only.
This behaviour has been observed in both client-qt and client-android:
![image](/uploads/55e741ab8b9a35d575822785560b8e22/image.p...This would probably require the daemon to be able to put Swarm into an "archive" state that is read-only.
This behaviour has been observed in both client-qt and client-android:
![image](/uploads/55e741ab8b9a35d575822785560b8e22/image.png) ![image](/uploads/043cf50d9609dbb57808e4d6e7b3a065/image.png)
(for some reason my name doesn't appear in client-qt)
Sending a message returns the following error:
```
[1693497329.637|56019|conversationrepository.cpp:1715] Invalid parent path (not in members or admins
[1693497329.637|56019|conversation_module.cpp :1077] Failed to send message to conversation 9d864ebe6712f18d1790b70d8ba7b605f78e63ac
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/891build fails on armhf, aarch64 and i686 for version 20230619.1 due to "to_guil...2024-02-14T14:03:59ZMaxim Cournoyerbuild fails on armhf, aarch64 and i686 for version 20230619.1 due to "to_guile(long int&)" ambiguous callHi,
The native armhf-linux build of libjami has broken since the upgrade to 20230619.1:
```plaintext
libtool: compile: g++ -std=gnu++17 -DHAVE_CONFIG_H -I. -I../.. -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fvisibility=hidden -DLIBJA...Hi,
The native armhf-linux build of libjami has broken since the upgrade to 20230619.1:
```plaintext
libtool: compile: g++ -std=gnu++17 -DHAVE_CONFIG_H -I. -I../.. -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fvisibility=hidden -DLIBJAMI_BUILD -Djami_EXPORTS -DASIO_STANDALONE -DMSGPACK_NO_BOOST -I/tmp/guix-build-libjami-20230619.1.drv-0/jami-20230619.1/daemon/src -I/tmp/guix-build-libjami-20230619.1.drv-0/jami-20230619.1/daemon/src/config -I/tmp/guix-build-libjami-20230619.1.drv-0/jami-20230619.1/daemon/src/media -I/tmp/guix-build-libjami-20230619.1.drv-0/jami-20230619.1/daemon/test -I/tmp/guix-build-libjami-20230619.1.drv-0/jami-20230619.1/daemon/src/jami -DPREFIX=\"/gnu/store/snhlmq7k9lgmjx5h24rzz69phlfxc0zy-libjami-20230619.1\" -DJAMI_DATADIR=\"/gnu/store/snhlmq7k9lgmjx5h24rzz69phlfxc0zy-libjami-20230619.1/share/jami\" -DENABLE_TRACE -DJAMI_REVISION=\"\" -DJAMI_DIRTY_REPO=\"dirty\" -DPJSIP_MAX_PKT_LEN=8000 -DPJ_AUTOCONF=1 -g -fno-omit-frame-pointer -Wall -Wextra -Wnon-virtual-dtor -Wno-deprecated -Wno-deprecated-declarations -Wno-unknown-pragmas -Wformat=2 -O0 -I../../src -I./src -I/gnu/store/da6ikq281d235hvb1cil2ls3iq80ni2m-guile-3.0.9/include/guile/3.0 -MT src/bindings/bindings.lo -MD -MP -MF src/bindings/.deps/bindings.Tpo -c src/bindings/bindings.cpp -o src/bindings/bindings.o >/dev/null 2>&1
In file included from ./src/bindings/bindings.h:27,
from src/bindings/signal.cpp:42:
./src/utils.h: In instantiation of ‘scm_unused_struct* pack_to_guile(Args ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<unsigned char, std::allocator<unsigned char> >, long int}; SCM = scm_unused_struct*]’:
./src/utils.h:147:31: required from ‘scm_unused_struct* apply_to_guile(SCM, Args ...) [with Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<unsigned char, std::allocator<unsigned char> >, long int}; SCM = scm_unused_struct*]’
src/bindings/signal.cpp:83:37: required from ‘void Handler<Args>::doExecuteInGuile(Args ...) [with Args = {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 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<unsigned char, std::allocator<unsigned char> >&, long int}]’
src/bindings/signal.cpp:103:37: required from ‘static void* Handler<Args>::executeInGuile(void*) [with Args = {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 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<unsigned char, std::allocator<unsigned char> >&, long int}]’
src/bindings/signal.cpp:117:23: required from ‘void Handler<Args>::execute(Args ...) [with Args = {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 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<unsigned char, std::allocator<unsigned char> >&, long int}]’
src/bindings/signal.cpp:159:24: required from ‘void add_handler(std::map<std::__cxx11::basic_string<char>, std::shared_ptr<libjami::CallbackWrapperBase> >&, const char*) [with T = libjami::ConfigurationSignal::IncomingTrustRequest; Args = {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 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::vector<unsigned char, std::allocator<unsigned char> >&, long int}]’
src/bindings/signal.cpp:317:24: required from here
./src/utils.h:129:40: error: call of overloaded ‘to_guile(long int&)’ is ambiguous
129 | std::vector<SCM> values = {to_guile(args)...};
| ~~~~~~~~^~~~~~
./src/utils.h:28:1: note: candidate: ‘scm_unused_struct* to_guile(bool)’
28 | to_guile(bool b)
| ^~~~~~~~
./src/utils.h:40:1: note: candidate: ‘scm_unused_struct* to_guile(uint8_t)’
40 | to_guile(uint8_t x)
| ^~~~~~~~
./src/utils.h:46:1: note: candidate: ‘scm_unused_struct* to_guile(uint16_t)’
46 | to_guile(uint16_t x)
| ^~~~~~~~
./src/utils.h:52:1: note: candidate: ‘scm_unused_struct* to_guile(uint32_t)’
52 | to_guile(uint32_t x)
| ^~~~~~~~
./src/utils.h:58:1: note: candidate: ‘scm_unused_struct* to_guile(uint64_t)’
58 | to_guile(uint64_t x)
| ^~~~~~~~
./src/utils.h:64:1: note: candidate: ‘scm_unused_struct* to_guile(int8_t)’
64 | to_guile(int8_t x)
| ^~~~~~~~
./src/utils.h:70:1: note: candidate: ‘scm_unused_struct* to_guile(int16_t)’
70 | to_guile(int16_t x)
| ^~~~~~~~
./src/utils.h:76:1: note: candidate: ‘scm_unused_struct* to_guile(int32_t)’
76 | to_guile(int32_t x)
| ^~~~~~~~
./src/utils.h:82:1: note: candidate: ‘scm_unused_struct* to_guile(int64_t)’
82 | to_guile(int64_t x)
| ^~~~~~~~
./src/utils.h:88:1: note: candidate: ‘scm_unused_struct* to_guile(double)’
88 | to_guile(double x)
| ^~~~~~~~
./src/utils.h:129:22: error: could not convert ‘{<expression error>}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<scm_unused_struct*>’
129 | std::vector<SCM> values = {to_guile(args)...};
| ^~~~~~
| |
| <brace-enclosed initializer list>
make[3]: *** [Makefile:652: src/bindings/signal.lo] Error 1
make[3]: Leaving directory '/tmp/guix-build-libjami-20230619.1.drv-0/jami-20230619.1/daemon/test/agent'
make[2]: *** [Makefile:458: all-recursive] Error 1
make[2]: Leaving directory '/tmp/guix-build-libjami-20230619.1.drv-0/jami-20230619.1/daemon/test'
make[1]: *** [Makefile:593: all-recursive] Error 1
make[1]: Leaving directory '/tmp/guix-build-libjami-20230619.1.drv-0/jami-20230619.1/daemon'
make: *** [Makefile:499: all] Error 2
error: in phase 'build': uncaught exception:
%exception #<&invoke-error program: "make" arguments: ("-j" "8" "V=1") exit-status: 2 term-signal: #f stop-signal: #f>
phase `build' failed after 576.2 seconds
command "make" "-j" "8" "V=1" failed with status 2
```
The full build log can be seen at: https://bordeaux.guix.gnu.org/build/1b4804ec-87df-4a7c-bd37-aab493e3bca7/loghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/890Call-Swarm fix audio binding2023-09-14T17:39:14ZSébastien BlinCall-Swarm fix audio binding# Scenario
+ Alice hosts a call-swarm between Alice/Bob/Carla
# Expected result
+ Bob should hear carla
# Current result
+ Carla and Bob can't communicate by audio, but Alice got all audio# Scenario
+ Alice hosts a call-swarm between Alice/Bob/Carla
# Expected result
+ Bob should hear carla
# Current result
+ Carla and Bob can't communicate by audio, but Alice got all audioCapucine BerthetSébastien BlinCapucine Berthethttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/889DBUS: plugins: not saving preferences changes2023-09-06T15:40:01ZAline Gondim SantosDBUS: plugins: not saving preferences changesAline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/888Pulse use-after-free2023-08-29T16:47:28ZSébastien BlinPulse use-after-free```
=================================================================
==926351==ERROR: AddressSanitizer: heap-use-after-free on address 0x60c0000a6728 at pc 0x555555aa2313 bp 0x7fffefff78a0 sp 0x7fffefff7890
READ of size 8 at 0x60c0000a6...```
=================================================================
==926351==ERROR: AddressSanitizer: heap-use-after-free on address 0x60c0000a6728 at pc 0x555555aa2313 bp 0x7fffefff78a0 sp 0x7fffefff7890
READ of size 8 at 0x60c0000a6728 thread T5 (threaded-ml)
[1691760278.218|9099|accel.cpp :209 ] -- Starting decoding init for cuda with default device.
[1691760278.218|9099|accel.cpp :209 ] -- Starting decoding init for vaapi with default device.
[1691760278.221|9099|accel.cpp :185 ] Device type vaapi successfully created.
[1691760278.221|9099|accel.cpp :218 ] -- Init passed for vaapi with default device.
[AVHWFramesContext @ 0x60e002153a40] [IMGUTILS @ 0x7fffcd1e4040] Picture size 0x0 is invalid
[1691760278.221|9099|accel.cpp :344 ] Failed to initialize hardware frame context: Invalid argument (-22)
[1691760278.222|9099|accel.cpp :209 ] -- Starting decoding init for vdpau with default device.
[1691760278.222|9099|media_decoder.cpp :548 ] Using H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (h264) decoder for video
[1691760278.222|9099|media_decoder.cpp :559 ] Not using hardware decoding for h264
[New Thread 0x7fffd9388640 (LWP 926606)]
[1691760278.338|9092|media_decoder.cpp :171 ] Using format video4linux2 and resolution 960x540
#0 0x555555aa2312 in std::_Function_base::_M_empty() const /usr/include/c++/11/bits/std_function.h:247
#1 0x555555ff005e in std::function<void (bool)>::operator()(bool) const /usr/include/c++/11/bits/std_function.h:588
#2 0x5555567e6cbb in operator() media/audio/pulseaudio/audiostream.cpp:221
#3 0x5555567e6d60 in _FUN media/audio/pulseaudio/audiostream.cpp:222
#4 0x7ffff73cb76f (/lib/x86_64-linux-gnu/libpulse.so.0+0x2076f)
#5 0x7ffff66d4382 (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-15.99.so+0x40382)
#6 0x7ffff66d55be in pa_pdispatch_run (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-15.99.so+0x415be)
#7 0x7ffff73bf082 (/lib/x86_64-linux-gnu/libpulse.so.0+0x14082)
#8 0x7ffff66da486 (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-15.99.so+0x46486)
#9 0x7ffff66db1d7 (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-15.99.so+0x471d7)
#10 0x7ffff66db599 (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-15.99.so+0x47599)
#11 0x7ffff66df739 (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-15.99.so+0x4b739)
#12 0x7ffff73d2a72 in pa_mainloop_dispatch (/lib/x86_64-linux-gnu/libpulse.so.0+0x27a72)
#13 0x7ffff73d30c9 in pa_mainloop_iterate (/lib/x86_64-linux-gnu/libpulse.so.0+0x280c9)
#14 0x7ffff73d316f in pa_mainloop_run (/lib/x86_64-linux-gnu/libpulse.so.0+0x2816f)
#15 0x7ffff73e337c (/lib/x86_64-linux-gnu/libpulse.so.0+0x3837c)
#16 0x7ffff66edcb2 (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-15.99.so+0x59cb2)
#17 0x7ffff6094b42 in start_thread nptl/pthread_create.c:442
#18 0x7ffff61269ff (/lib/x86_64-linux-gnu/libc.so.6+0x1269ff)
0x60c0000a6728 is located 104 bytes inside of 120-byte region [0x60c0000a66c0,0x60c0000a6738)
freed by thread T1 here:
#0 0x7ffff74b724f in operator delete(void*, unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:172
#1 0x555556788eec in std::default_delete<jami::AudioStream>::operator()(jami::AudioStream*) const /usr/include/c++/11/bits/unique_ptr.h:85
#2 0x55555678aa79 in std::__uniq_ptr_impl<jami::AudioStream, std::default_delete<jami::AudioStream> >::reset(jami::AudioStream*) (/home/sblin/Projects/jami-project/client-qt/daemon/test/unitTest/ut_ice_media_cand_exchange+0x1236a79)
#3 0x555556788605 in std::unique_ptr<jami::AudioStream, std::default_delete<jami::AudioStream> >::reset(jami::AudioStream*) (/home/sblin/Projects/jami-project/client-qt/daemon/test/unitTest/ut_ice_media_cand_exchange+0x1234605)
#4 0x55555677fefc in jami::PulseLayer::stopStream(jami::AudioDeviceType) media/audio/pulseaudio/pulselayer.cpp:482
#5 0x555555b14e0b in jami::AudioDeviceGuard::~AudioDeviceGuard() /home/sblin/Projects/jami-project/client-qt/daemon/src/manager.cpp:2234
#6 0x555555b563f7 in std::default_delete<jami::AudioDeviceGuard>::operator()(jami::AudioDeviceGuard*) const /usr/include/c++/11/bits/unique_ptr.h:85
#7 0x555555b42224 in std::unique_ptr<jami::AudioDeviceGuard, std::default_delete<jami::AudioDeviceGuard> >::~unique_ptr() /usr/include/c++/11/bits/unique_ptr.h:361
#8 0x55555667cf22 in jami::AudioInput::~AudioInput() media/audio/audio_input.cpp:69
#9 0x555556498105 in void __gnu_cxx::new_allocator<jami::AudioInput>::destroy<jami::AudioInput>(jami::AudioInput*) /usr/include/c++/11/ext/new_allocator.h:168
#10 0x55555649800a in void std::allocator_traits<std::allocator<jami::AudioInput> >::destroy<jami::AudioInput>(std::allocator<jami::AudioInput>&, jami::AudioInput*) /usr/include/c++/11/bits/alloc_traits.h:535
#11 0x555556497aea in std::_Sp_counted_ptr_inplace<jami::AudioInput, std::allocator<jami::AudioInput>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/11/bits/shared_ptr_base.h:528
#12 0x555555aaea2b in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/11/bits/shared_ptr_base.h:168
#13 0x555555aa7001 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/include/c++/11/bits/shared_ptr_base.h:705
#14 0x555555b3dc03 in std::__shared_ptr<jami::AudioInput, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/11/bits/shared_ptr_base.h:1154
#15 0x555556407fad in std::__shared_ptr<jami::AudioInput, (__gnu_cxx::_Lock_policy)2>::reset() /usr/include/c++/11/bits/shared_ptr_base.h:1272
#16 0x55555668eeda in jami::AudioRtpSession::stop() media/audio/audio_rtp_session.cpp:250
[1691760278.631|9092|accel.cpp :209 ] -- Starting decoding init for cuda with default device.
[1691760278.631|9092|media_decoder.cpp :548 ] Using MJPEG (Motion JPEG) (mjpeg) decoder for video
[1691760278.631|9092|media_decoder.cpp :559 ] Not using hardware decoding for mjpeg
[1691760278.635|9092|video_input.cpp :346 ] created decoder with video params : size=960X536, fps=30.000000 pix=yuvj422p
[1691760278.635|9092|sinkclient.cpp :498 ] [Sink:0x613000005b50] Started - size=960x540, mixer=No
#17 0x5555562c5dc2 in jami::SIPCall::stopAllMedia() sip/sipcall.cpp:2247
#18 0x5555562bb546 in jami::SIPCall::peerHungup() sip/sipcall.cpp:1488
#19 0x555555b12746 in jami::Manager::peerHungupCall(jami::Call&) /home/sblin/Projects/jami-project/client-qt/daemon/src/manager.cpp:1970
#20 0x5555562be19c in operator() sip/sipcall.cpp:1646
#21 0x5555562dd01b in operator() manager.h:906
#22 0x5555562ea33d in __invoke_impl<void, jami::runOnMainThread<jami::SIPCall::onClosed()::<lambda()> >(jami::SIPCall::onClosed()::<lambda()>&&, char const*, uint32_t)::<lambda()>&> /usr/include/c++/11/bits/invoke.h:61
#23 0x5555562e841d in __invoke_r<void, jami::runOnMainThread<jami::SIPCall::onClosed()::<lambda()> >(jami::SIPCall::onClosed()::<lambda()>&&, char const*, uint32_t)::<lambda()>&> /usr/include/c++/11/bits/invoke.h:111
#24 0x5555562e55a8 in _M_invoke /usr/include/c++/11/bits/std_function.h:290
#25 0x555555aa7c6f in std::function<void ()>::operator()() const /usr/include/c++/11/bits/std_function.h:590
#26 0x555555c30039 in jami::ScheduledExecutor::loop() /home/sblin/Projects/jami-project/client-qt/daemon/src/scheduled_executor.cpp:145
#27 0x555555c2defb in operator() /home/sblin/Projects/jami-project/client-qt/daemon/src/scheduled_executor.cpp:35
#28 0x555555c33061 in __invoke_impl<void, jami::ScheduledExecutor::ScheduledExecutor(const string&)::<lambda()> > /usr/include/c++/11/bits/invoke.h:61
#29 0x555555c33024 in __invoke<jami::ScheduledExecutor::ScheduledExecutor(const string&)::<lambda()> > /usr/include/c++/11/bits/invoke.h:96
previously allocated by thread T1 here:
#0 0x7ffff74b61e7 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
#1 0x55555677e7f7 in jami::PulseLayer::createStream(std::unique_ptr<jami::AudioStream, std::default_delete<jami::AudioStream> >&, jami::AudioDeviceType, jami::PaDeviceInfos const&, bool, std::function<void (unsigned long)>&&) media/audio/pulseaudio/pulselayer.cpp:414
#2 0x55555677f7c2 in jami::PulseLayer::startStream(jami::AudioDeviceType) media/audio/pulseaudio/pulselayer.cpp:457
#3 0x555555b14b11 in jami::AudioDeviceGuard::AudioDeviceGuard(jami::Manager&, jami::AudioDeviceType) /home/sblin/Projects/jami-project/client-qt/daemon/src/manager.cpp:2225
#4 0x555555b4214b in std::_MakeUniq<jami::AudioDeviceGuard>::__single_object std::make_unique<jami::AudioDeviceGuard, jami::Manager&, jami::AudioDeviceType&>(jami::Manager&, jami::AudioDeviceType&) /usr/include/c++/11/bits/unique_ptr.h:962
#5 0x555555b34049 in jami::Manager::startAudioStream(jami::AudioDeviceType) manager.h:149
#6 0x55555667e85c in jami::AudioInput::initDevice(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) media/audio/audio_input.cpp:189
#7 0x555556680e9e in jami::AudioInput::switchInput(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) media/audio/audio_input.cpp:312
#8 0x55555668cce1 in jami::AudioRtpSession::startSender() media/audio/audio_rtp_session.cpp:101
#9 0x55555668e8a1 in jami::AudioRtpSession::start(std::unique_ptr<dhtnet::IceSocket, std::default_delete<dhtnet::IceSocket> >, std::unique_ptr<dhtnet::IceSocket, std::default_delete<dhtnet::IceSocket> >) media/audio/audio_rtp_session.cpp:220
#10 0x5555562c4d05 in jami::SIPCall::startAllMedia() sip/sipcall.cpp:2173
#11 0x5555562cbcb0 in jami::SIPCall::onIceNegoSucceed() sip/sipcall.cpp:2748
#12 0x5555562d6406 in operator() sip/sipcall.cpp:3388
#13 0x5555562e0b13 in operator() manager.h:906
#14 0x5555562eaba1 in __invoke_impl<void, jami::runOnMainThread<jami::SIPCall::initIceMediaTransport(bool, std::optional<dhtnet::IceTransportOptions>)::<lambda(bool)>::<lambda()> >(jami::SIPCall::initIceMediaTransport(bool, std::optional<dhtnet::IceTransportOptions>)::<lambda(bool)>::<lambda()>&&, char const*, uint32_t)::<lambda()>&> /usr/include/c++/11/bits/invoke.h:61
#15 0x5555562e91cd in __invoke_r<void, jami::runOnMainThread<jami::SIPCall::initIceMediaTransport(bool, std::optional<dhtnet::IceTransportOptions>)::<lambda(bool)>::<lambda()> >(jami::SIPCall::initIceMediaTransport(bool, std::optional<dhtnet::IceTransportOptions>)::<lambda(bool)>::<lambda()>&&, char const*, uint32_t)::<lambda()>&> /usr/include/c++/11/bits/invoke.h:111
#16 0x5555562e6a6d in _M_invoke /usr/include/c++/11/bits/std_function.h:290
#17 0x555555aa7c6f in std::function<void ()>::operator()() const /usr/include/c++/11/bits/std_function.h:590
#18 0x555555c30039 in jami::ScheduledExecutor::loop() /home/sblin/Projects/jami-project/client-qt/daemon/src/scheduled_executor.cpp:145
#19 0x555555c2defb in operator() /home/sblin/Projects/jami-project/client-qt/daemon/src/scheduled_executor.cpp:35
#20 0x555555c33061 in __invoke_impl<void, jami::ScheduledExecutor::ScheduledExecutor(const string&)::<lambda()> > /usr/include/c++/11/bits/invoke.h:61
#21 0x555555c33024 in __invoke<jami::ScheduledExecutor::ScheduledExecutor(const string&)::<lambda()> > /usr/include/c++/11/bits/invoke.h:96
#22 0x555555c32fd1 in _M_invoke<0> /usr/include/c++/11/bits/std_thread.h:259
#23 0x555555c32fa5 in operator() /usr/include/c++/11/bits/std_thread.h:266
#24 0x555555c32f89 in _M_run /usr/include/c++/11/bits/std_thread.h:211
#25 0x7ffff64dc252 (/lib/x86_64-linux-gnu/libstdc++.so.6+0xdc252)
Thread T5 (threaded-ml) created by T0 here:
[1691760278.666|9092|media_recorder.cpp :277 ] [Recorder: 0x6160010e3690] Recorder input #1: v:local
[New Thread 0x7fffce1ea640 (LWP 926607)]
#0 0x7ffff7458685 in __interceptor_pthread_create ../../../../src/libsanitizer/asan/asan_interceptors.cpp:216
#1 0x7ffff66edd63 in pa_thread_new (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-15.99.so+0x59d63)
Thread T1 created by T0 here:
#0 0x7ffff7458685 in __interceptor_pthread_create ../../../../src/libsanitizer/asan/asan_interceptors.cpp:216
#1 0x7ffff64dc328 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib/x86_64-linux-gnu/libstdc++.so.6+0xdc328)
#2 0x555555c2e28b in jami::ScheduledExecutor::ScheduledExecutor(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/sblin/Projects/jami-project/client-qt/daemon/src/scheduled_executor.cpp:30
#3 0x555555afe37e in jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&) /home/sblin/Projects/jami-project/client-qt/daemon/src/manager.cpp:460
#4 0x555555b026ee in jami::Manager::Manager() /home/sblin/Projects/jami-project/client-qt/daemon/src/manager.cpp:738
#5 0x555555b024f1 in jami::Manager::instance() /home/sblin/Projects/jami-project/client-qt/daemon/src/manager.cpp:715
#6 0x555555c2b537 in libjami::init(libjami::InitFlag) /home/sblin/Projects/jami-project/client-qt/daemon/src/ring_api.cpp:69
#7 0x555555aa534c in jami::test::IceMediaCandExchangeTest::IceMediaCandExchangeTest() (/home/sblin/Projects/jami-project/client-qt/daemon/test/unitTest/ut_ice_media_cand_exchange+0x55134c)
#8 0x555555acba5d in CppUnit::ConcretTestFixtureFactory<jami::test::IceMediaCandExchangeTest>::makeFixture() (/home/sblin/Projects/jami-project/client-qt/daemon/test/unitTest/ut_ice_media_cand_exchange+0x577a5d)
#9 0x555555aa866f in CppUnit::TestSuiteBuilderContext<jami::test::IceMediaCandExchangeTest>::makeFixture() const (/home/sblin/Projects/jami-project/client-qt/daemon/test/unitTest/ut_ice_media_cand_exchange+0x55466f)
#10 0x555555aa5dd3 in jami::test::IceMediaCandExchangeTest::addTestsToSuite(CppUnit::TestSuiteBuilderContextBase&) (/home/sblin/Projects/jami-project/client-qt/daemon/test/unitTest/ut_ice_media_cand_exchange+0x551dd3)
#11 0x555555aa62c2 in jami::test::IceMediaCandExchangeTest::suite() (/home/sblin/Projects/jami-project/client-qt/daemon/test/unitTest/ut_ice_media_cand_exchange+0x5522c2)
#12 0x555555acba32 in CppUnit::TestSuiteFactory<jami::test::IceMediaCandExchangeTest>::makeTest() (/home/sblin/Projects/jami-project/client-qt/daemon/test/unitTest/ut_ice_media_cand_exchange+0x577a32)
#13 0x7ffff7f8172e in CppUnit::TestFactoryRegistry::addTestToSuite(CppUnit::TestSuite*) (/lib/x86_64-linux-gnu/libcppunit-1.15.so.1+0x2772e)
SUMMARY: AddressSanitizer: heap-use-after-free /usr/include/c++/11/bits/std_function.h:247 in std::_Function_base::_M_empty() const
Shadow bytes around the buggy address:
0x0c188000cc90: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c188000cca0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0x0c188000ccb0: fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa fa
0x0c188000ccc0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa
0x0c188000ccd0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
=>0x0c188000cce0: fd fd fd fd fd[fd]fd fa fa fa fa fa fa fa fa fa
0x0c188000ccf0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c188000cd00: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
0x0c188000cd10: 00 00 00 00 00 00 05 fa fa fa fa fa fa fa fa fa
0x0c188000cd20: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa
0x0c188000cd30: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
Shadow gap: cc
==926351==ABORTING
[Thread 0x7fffce1ea640 (LWP 926607) exited]
[Thread 0x7fffd9388640 (LWP 926606) exited]
[Thread 0x7fffcf1ec640 (LWP 926605) exited]
[Thread 0x7fffcd1e8640 (LWP 926603) exited]
[Thread 0x7fffcd9e9640 (LWP 926602) exited]
[Thread 0x7fffcf9ed640 (LWP 926598) exited]
[Thread 0x7fffd01ee640 (LWP 926597) exited]
[Thread 0x7fffd09ef640 (LWP 926596) exited]
[Thread 0x7fffd31f4640 (LWP 926592) exited]
[Thread 0x7fffda38a640 (LWP 926591) exited]
[Thread 0x7ffface46640 (LWP 926582) exited]
[Thread 0x7fffac62f640 (LWP 926581) exited]
[Thread 0x7fffd19f1640 (LWP 926448) exited]
[Thread 0x7fffd21f2640 (LWP 926447) exited]
[Thread 0x7fffd39f5640 (LWP 926444) exited]
[Thread 0x7fffd41f6640 (LWP 926443) exited]
[Thread 0x7fffd49f7640 (LWP 926441) exited]
[Thread 0x7fffd51f8640 (LWP 926440) exited]
[Thread 0x7fffd59f9640 (LWP 926439) exited]
[Thread 0x7fffd7348640 (LWP 926438) exited]
[Thread 0x7fffd9b89640 (LWP 926403) exited]
[Thread 0x7fffd6b31640 (LWP 926402) exited]
[Thread 0x7fffd8b87640 (LWP 926374) exited]
[Thread 0x7fffdab8b640 (LWP 926369) exited]
[Thread 0x7fffdb38c640 (LWP 926368) exited]
[Thread 0x7fffdbb8d640 (LWP 926367) exited]
[Thread 0x7fffdc38e640 (LWP 926366) exited]
[Thread 0x7fffdcff5640 (LWP 926365) exited]
[Thread 0x7fffdd7f6640 (LWP 926364) exited]
[Thread 0x7fffddff7640 (LWP 926363) exited]
[Thread 0x7fffde7f8640 (LWP 926362) exited]
[Thread 0x7fffdeff9640 (LWP 926361) exited]
[Thread 0x7fffefffb640 (LWP 926359) exited]
[Thread 0x7ffff07fc640 (LWP 926358) exited]
[Thread 0x7ffff0ffd640 (LWP 926357) exited]
[Thread 0x7ffff17fe640 (LWP 926356) exited]
[Thread 0x7ffff1fff640 (LWP 926354) exited]
[Thread 0x7ffff58064c0 (LWP 926351) exited]
[Thread 0x7fffdf7fa640 (LWP 926604) exited]
[New process 926351]
[Inferior 1 (process 926351) exited with code 01]
(gdb)
```
In
```cpp
auto* op = pa_context_get_source_info_by_name(
context,
name,
[](pa_context* /*c*/, const pa_source_info* i, int /*eol*/, void* userdata) {
AudioStream* thisPtr = (AudioStream*) userdata;
// this whole closure gets called twice by pulse for some reason
// the 2nd time, i is invalid
if (!i) {
// JAMI_ERR("[audiostream] source info not found for %s", realName);
return;
}
// string compare
bool usingEchoCancel = std::string_view(i->driver) == "module-echo-cancel.c";
JAMI_WARN("[audiostream] capture stream using pulse echo cancel module? %s (%s)",
usingEchoCancel ? "yes" : "no",
i->name);
if (!thisPtr) {
JAMI_ERR("[audiostream] AudioStream pointer became invalid during "
"pa_source_info_cb_t callback!");
return;
}
thisPtr->echoCancelCb(usingEchoCancel);
},
this);
```
destruction may occurs between:
```cpp
if (!thisPtr) {
JAMI_ERR("[audiostream] AudioStream pointer became invalid during "
"pa_source_info_cb_t callback!");
return;
}
// HERE
thisPtr->echoCancelCb(usingEchoCancel);
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/887no video and audio in android - iOS call2023-12-27T17:50:47ZKateryna Kostiukno video and audio in android - iOS callWhen android and iOS are on LTE, there is no media in the call when the client that receives the call has TURN disabled.When android and iOS are on LTE, there is no media in the call when the client that receives the call has TURN disabled.Kateryna KostiukKateryna Kostiukhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/886Blocking contact does not work if you re-enable your own account after changi...2024-01-29T21:44:28ZElysBlocking contact does not work if you re-enable your own account after changing "allow calls from unknown contacts"Steps to reproduce (always using Jami accounts):
You have two contacts: Person A (uses desktop and useraccount1); Person B (uses Android and useraccount2)
* Person A has Person B in the contact list (and the other direction: Person B h...Steps to reproduce (always using Jami accounts):
You have two contacts: Person A (uses desktop and useraccount1); Person B (uses Android and useraccount2)
* Person A has Person B in the contact list (and the other direction: Person B has Person A in the contact list)
* Now Person A blocks Person B (settings "allow calls from unknown contacts" enabled)
* Person B can't make a call (B -\> A) anymore
HOWEVER:
* Now Person A disables "allow calls from unknown contacts" and after a few seconds also disables her own account
* Now Person A enables her own account and after a few second ENABLES "allow calls from unknown contacts"
* Now Person B makes a call (B -\> A)
* Suddenly Person A will receive the call and the blocked Person A is shown many times under "blocked contacts"
* Person A will view the chatview but Person B will never be shown in the contact list
* Person B can make a call anytime and Person A will receive it - receiving text messages doesn't work? - However the other direction is not possible: If Person A wants to make a video or audio call nothing will happen - the option for sending text messages isn't even shown.
---
If now Person A goes to settings and wants to DISABLE "allow calls from unknown contacts" Jami will crash ((also/only) after a sucessful call?)
* Jami on desktop crashes
* open Jami on desktop again
* Make a call Android -\> Desktop
* Android will show "ringing" although you'll never receive any call?Sébastien BlinSébastien Blin