jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2022-07-05T18:03:54Zhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/635PJSIP - Improper relase of memory pools2022-07-05T18:03:54ZMohamed ChibaniPJSIP - Improper relase of memory poolsPJSIP is logging warning regarding improper release of memory pools:
```
[09:24:50.744|59165|7|manager.cpp :258 ] 09:24:50.744 tdata0x7fb65c045540 Pool is not released by application, releasing now
```
Some of them seems to be...PJSIP is logging warning regarding improper release of memory pools:
```
[09:24:50.744|59165|7|manager.cpp :258 ] 09:24:50.744 tdata0x7fb65c045540 Pool is not released by application, releasing now
```
Some of them seems to be used by ICE sessions, but other modules might be concerned as well.
Technically this is not a leak, since the pools is forcefully release, but might cause side effects leading to crashes.BacklogMohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/634ICE/PUNATH - connectivity check stuck in inifinte loop2021-11-01T19:45:04ZMohamed ChibaniICE/PUNATH - connectivity check stuck in inifinte loopConnectivity check gets stuck in infinite loop (seems to impact only for TCP). See logs below.\
The likely scenario that reproduce the bug is as follows:
We assume that Jami accounts of both caller and callee are disabled.
- Endpoint A...Connectivity check gets stuck in infinite loop (seems to impact only for TCP). See logs below.\
The likely scenario that reproduce the bug is as follows:
We assume that Jami accounts of both caller and callee are disabled.
- Endpoint A: enable Jami account
- Endpoint B: enabled Jami account and wait for the presence indicator of Endpoint A to turn green
- Endpoint A: disable account
- Endpoint B: make a call to A while presence indicator is still green.
- Endpoint B: disable account while searching (do not terminate the call)
- Endpoint A: re-enable account
Result:
Endpoint A ICE TCP session will be trapped in the infinite loop (see log samples below)
Note:
Only seen when the remote candidates are relay. Not clear what happens at the TURN server side, but seems that the server somehow accepts the first connection but reject it due a lack of permission, possibly because if improper closing of ICE/TURN sessions when Endpoint A's account was disabled.Mohamed ChibaniSébastien BlinMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/633SIPCall/PJSIP - crash in pjsip_contact_hdr_print ()2021-10-28T18:53:02ZMohamed ChibaniSIPCall/PJSIP - crash in pjsip_contact_hdr_print ()As reported by user, the crash seems to happen when the caller hangs up the call before the callee answers.\
See back trace in the comments.As reported by user, the crash seems to happen when the caller hangs up the call before the callee answers.\
See back trace in the comments.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/632Load balancing/connection bonding2022-02-18T21:11:59ZovariLoad balancing/connection bondingIt is understood that Jami does not work if the internet connection is changed while in a call.
Can load balancing/connection bonding please be added to Jami?
Load balancing/connection bonding programs `combine multiple internet connec...It is understood that Jami does not work if the internet connection is changed while in a call.
Can load balancing/connection bonding please be added to Jami?
Load balancing/connection bonding programs `combine multiple internet connections (Wi-Fi networks/Ethernet/3G/4G) to increase your overall internet download/upload speed` to:
* increase reliability
* increase performance
* improve stability
* add redundancy
* enable hot-swappable internet connections
Similar to the emoji picker in Jami, perhaps there is a free/open-source cross-platform load-balancing program that could be included with Jami?
1. [HAProxy](https://www.haproxy.org/)
2. [dispatch_ng](https://gitlab.com/akash_rawal/dispatch_ng)
3. [Go dispatch proxy](https://github.com/extremecoders-re/go-dispatch-proxy)
What do you think?
Thank youhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/631Plugin System: add support to preferences per account2022-05-11T19:00:14ZAline Gondim SantosPlugin System: add support to preferences per accountAline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/629Jami (Windows 10): Crash if another person displays own [Android]screen in la...2021-09-21T17:29:49ZElysJami (Windows 10): Crash if another person displays own [Android]screen in landscape (horizontal) modePerson A: Windows 10: Jami version 202109171743
Person B: Android: using newest beta version of Jami (Mate 20 Pro, EMUI 11):
Steps to reproduce:
Start Jami (windows 10 AND Android), wait until both persons are online (bug android: ht...Person A: Windows 10: Jami version 202109171743
Person B: Android: using newest beta version of Jami (Mate 20 Pro, EMUI 11):
Steps to reproduce:
Start Jami (windows 10 AND Android), wait until both persons are online (bug android: https://git.jami.net/savoirfairelinux/jami-client-android/-/issues/994)
(Steps Person B:) Rotate your phone: change the screen mode to landscape. You make a video call. Now Person A can see Person B. Then Person B shares the screen.
Result: Jami (Windows 10, Person A) crashes, the version of android keeps going on.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/628ICE/PJNATH - crash destroy_timer_callback, retransmit_timer_callback and pj_i...2023-02-06T20:56:48ZMohamed ChibaniICE/PJNATH - crash destroy_timer_callback, retransmit_timer_callback and pj_ioqueue_pollSee back trace bellow.See back trace bellow.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/627ICE/PJSIP - Crash and assertion failure in pj_stun_session_cancel_req() and p...2021-09-30T21:09:29ZMohamed ChibaniICE/PJSIP - Crash and assertion failure in pj_stun_session_cancel_req() and pj_stun_session_retransmit_req()The issue was triggered by patch in https://git.jami.net/savoirfairelinux/ring-daemon/-/issues/617
Resorting the check list when a new check is received is causing side effects, leading to crashes and assert failures.The issue was triggered by patch in https://git.jami.net/savoirfairelinux/ring-daemon/-/issues/617
Resorting the check list when a new check is received is causing side effects, leading to crashes and assert failures.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/624Unable to revoke a device/remove a device from the list of linked devices2021-09-14T20:08:47ZovariUnable to revoke a device/remove a device from the list of linked devicesUnable to revoke a device.
client-android shows a message with title `Can't revoke device` with message `Unknown device.`
If the device is unknown, how can the device be removed from the list?
client-qt does not revoke the device and ...Unable to revoke a device.
client-android shows a message with title `Can't revoke device` with message `Unknown device.`
If the device is unknown, how can the device be removed from the list?
client-qt does not revoke the device and provides no feedback.
Can client-qt please show a message if it was unable to revoke a device like Android does?
Please advise if you need a screenshot from the Android device.
Thank you
client-andriod 20210812-01
Linux Mint 20.2 Cinnamon<br>
client-qt 202108172029Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/623AudioLayer - Deadlock between audio loop and main thread2021-09-13T17:02:45ZMohamed ChibaniAudioLayer - Deadlock between audio loop and main threadA deadlock may occur between the pulse audio thread and daemon main thread because of the lock inversion of callMutex_ (call class) and pa_threaded_mainloop private mutex. See backtrace in the comments.A deadlock may occur between the pulse audio thread and daemon main thread because of the lock inversion of callMutex_ (call class) and pa_threaded_mainloop private mutex. See backtrace in the comments.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/622ICE/PJANTH - issue with nomination of triggered checks2021-09-08T21:12:16ZMohamed ChibaniICE/PJANTH - issue with nomination of triggered checksThere is an issue with the nomination of triggered checks in ICE that causes ICE negotiation to conclude on sub-optimal pairs.
The issue has been reported to PJSIP maintainers (https://github.com/pjsip/pjproject/issues/2812), and a patch...There is an issue with the nomination of triggered checks in ICE that causes ICE negotiation to conclude on sub-optimal pairs.
The issue has been reported to PJSIP maintainers (https://github.com/pjsip/pjproject/issues/2812), and a patch was provided.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/620MediaDemuxer: can lock on disconnect2023-04-17T14:09:50ZSébastien BlinMediaDemuxer: can lock on disconnect# Scenario
+ Plug a camera
+ Show it in media settings
+ Unplug
# Expected scenario
+ The UI should not freeze
# Current result
sometimes, the UI is freezing, blocking on destroying the video input.
# Backtrace
```
Thread 1 (Threa...# Scenario
+ Plug a camera
+ Show it in media settings
+ Unplug
# Expected scenario
+ The UI should not freeze
# Current result
sometimes, the UI is freezing, blocking on destroying the video input.
# Backtrace
```
Thread 1 (Thread 0x7fffe2a99d40 (LWP 2929030) "jami-qt"):
#0 0x00007fffeda179d7 in __pthread_clockjoin_ex () at /lib64/libpthread.so.0
#1 0x00007fffedffd687 in std::thread::join() () at /lib64/libstdc++.so.6
#2 0x00007fffec773cbb in jami::video::VideoInput::~VideoInput() () at /home/amarok/Projects/jami/daemon/src/.libs/libring.so.0
#3 0x00007fffec4cae2a in DRing::stopCamera() () at /home/amarok/Projects/jami/daemon/src/.libs/libring.so.0
#4 0x00007ffff7d17752 in VideoManagerInterface::stopCamera() (this=<optimized out>) at /home/amarok/Projects/jami/lrc/src/qtwrapper/videomanager_wrap.h:184
#5 0x00007ffff7d1cad0 in lrc::api::AVModel::setDeviceSettings(lrc::api::video::Settings&) (this=0x1496890, settings=...) at /home/amarok/Projects/jami/lrc/src/avmodel.cpp:293
#6 0x000000000049d42d in SettingsAdapter::set_Video_Settings_Rate_And_Resolution(QString const&, double, QString const&) (this=0xffb380, deviceId=..., rate=30, resolution=...) at /home/amarok/Projects/jami/client-qt/src/settingsadapter.cpp:193
#7 0x0000000000434c41 in SettingsAdapter::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=_o@entry=0xffb380, _c=_c@entry=QMetaObject::InvokeMetaMethod, _id=_id@entry=17, _a=_a@entry=0x7fffffff2710) at /home/amarok/Projects/jami/client-qt/build-local/jami-qt_autogen/UVLADIE3JM/moc_settingsadapter.cpp:708
#8 0x00000000004385ee in SettingsAdapter::qt_metacall(QMetaObject::Call, int, void**) (this=0xffb380, _c=QMetaObject::InvokeMetaMethod, _id=17, _a=0x7fffffff2710) at /home/amarok/Projects/jami/client-qt/build-local/jami-qt_autogen/UVLADIE3JM/moc_settingsadapter.cpp:969
#9 0x00007fffeeb08cf5 in QQmlObjectOrGadget::metacall(QMetaObject::Call, int, void**) const () at /lib64/libQt5Qml.so.5
#10 0x00007fffeea11149 in CallPrecise(QQmlObjectOrGadget const&, QQmlPropertyData const&, QV4::ExecutionEngine*, QV4::CallData*, QMetaObject::Call) () at /lib64/libQt5Qml.so.5
#11 0x00007fffeea123f7 in QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const () at /lib64/libQt5Qml.so.5
#12 0x00007fffeea38cce in QV4::Runtime::CallPropertyLookup::call(QV4::ExecutionEngine*, QV4::Value const&, unsigned int, QV4::Value*, int) () at /lib64/libQt5Qml.so.5
#13 0x00007fff4014bb4e in ()
#14 0x00007fffffff2d40 in ()
#15 0x0000000000000010 in ()
#16 0x00007fff4014b000 in ()
#17 0x00007fff4014bb8b in ()
#18 0x000000000088d800 in ()
#19 0x00007fffeea2ceba in QV4::Moth::VME::exec(QV4::CppStackFrame*, QV4::ExecutionEngine*) [clone .part.0] () at /lib64/libQt5Qml.so.5
#20 0x00007fffee9d7d48 in QV4::ArrowFunction::virtualCall(QV4::FunctionObject const*, QV4::Value const*, QV4::Value const*, int) () at /lib64/libQt5Qml.so.5
#21 0x00007fffeea3cc46 in QV4::Runtime::CallQmlContextPropertyLookup::call(QV4::ExecutionEngine*, unsigned int, QV4::Value*, int) () at /lib64/libQt5Qml.so.5
#22 0x00007fff40148084 in ()
#23 0x00007fffffff3010 in ()
#24 0x0000000000000000 in ()
Thread 224 (Thread 0x7ffcceffd640 (LWP 2929321) "jami-qt"):
#0 0x00007fffedcf35db in ioctl () at /lib64/libc.so.6
#1 0x00007fffec9c4759 in mmap_read_frame (pkt=0x7ffc6401f2c0, ctx=0x7ffc64002200) at libavdevice/v4l2.c:505
#2 v4l2_read_packet (ctx=0x7ffc64002200, pkt=0x7ffc6401f2c0) at libavdevice/v4l2.c:992
#3 0x00007fffeca222c2 in ff_read_packet (s=s@entry=0x7ffc64002200, pkt=pkt@entry=0x7ffc6401f2c0) at libavformat/utils.c:843
#4 0x00007fffeca22c3b in read_frame_internal (s=s@entry=0x7ffc64002200, pkt=0x7ffc6401f2c0) at libavformat/utils.c:1546
#5 0x00007fffeca23938 in av_read_frame (s=0x7ffc64002200, pkt=0x7ffc6401f2c0) at libavformat/utils.c:1750
#6 0x00007fffec413fa7 in jami::MediaDemuxer::decode() () at /home/amarok/Projects/jami/daemon/src/.libs/libring.so.0
#7 0x00007fffec76f6a9 in jami::video::VideoInput::captureFrame() () at /home/amarok/Projects/jami/daemon/src/.libs/libring.so.0
#8 0x00007fffec774bcb in jami::video::VideoInput::process() () at /home/amarok/Projects/jami/daemon/src/.libs/libring.so.0
#9 0x00007fffec32602d in jami::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>) () at /home/amarok/Projects/jami/daemon/src/.libs/libring.so.0
#10 0x00007fffec326758 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/amarok/Projects/jami/daemon/src/.libs/libring.so.0
#11 0x00007fffedffd444 in execute_native_thread_routine () at /lib64/libstdc++.so.6
#12 0x00007fffeda163f9 in start_thread () at /lib64/libpthread.so.0
#13 0x00007fffedcfcb53 in clone () at /lib64/libc.so.6
```
av_read_frame can block forever, causing the VideoInput to wait.Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/619SIPCall/ICE - Share unique ICE instance bettween subcalls2021-10-04T18:07:23ZMohamed ChibaniSIPCall/ICE - Share unique ICE instance bettween subcallsCurrently, when making an outgoing call to a Jami account with multiple registered devices, a new ice media instance is created for each subcall. This is not necessary, because all ice instances will be similar until the peer answers (an...Currently, when making an outgoing call to a Jami account with multiple registered devices, a new ice media instance is created for each subcall. This is not necessary, because all ice instances will be similar until the peer answers (and provide its candidates). But when the answer is received from the peer, all ice instances are destroyed except the instance of the successful subcall, which will be used to negotiate the media path.
Instead, only one instance should be created for the parent call, and shared amongst the attached subcalls.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/618ICE/PJNATH - assertion failure in start_nominated_check()2023-02-06T20:56:58ZMohamed ChibaniICE/PJNATH - assertion failure in start_nominated_check()Assertion failure in start_nominated_check() method:
```
2890 pj_assert(c->err_code == PJ_SUCCESS);
```
err_code is PJ_EPENDING instead of PJ_SUCCESS. \
Seen with TCP connections.Assertion failure in start_nominated_check() method:
```
2890 pj_assert(c->err_code == PJ_SUCCESS);
```
err_code is PJ_EPENDING instead of PJ_SUCCESS. \
Seen with TCP connections.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/617ICE - resort the check list after adding prflx candidates2021-09-30T21:08:46ZMohamed ChibaniICE - resort the check list after adding prflx candidatesThe check list is not sorted after adding new prflx candidates, which can cause the nomination of candidates pairs with less priority. \
See https://github.com/pjsip/pjproject/pull/2806
[EDIT]
The patch was reverted until issue https://...The check list is not sorted after adding new prflx candidates, which can cause the nomination of candidates pairs with less priority. \
See https://github.com/pjsip/pjproject/pull/2806
[EDIT]
The patch was reverted until issue https://git.jami.net/savoirfairelinux/ring-daemon/-/issues/627 is resolvedMohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/616ICE/TURN - assertion failure in PJNATH2021-12-29T17:10:58ZMohamed ChibaniICE/TURN - assertion failure in PJNATHAssertion failure in pjnath (pj_assert) when calling pj_ice_strans_init_ice. See back trace in the comments. The error seems to be caused by a failure of TURN allocation. \
Note that the assertion is only enabled in debug mode. In releas...Assertion failure in pjnath (pj_assert) when calling pj_ice_strans_init_ice. See back trace in the comments. The error seems to be caused by a failure of TURN allocation. \
Note that the assertion is only enabled in debug mode. In release mode, the error might not be noticeable, ICE session will succeed/fail depending on the other candidates of the impacted component. \
Might be related to https://github.com/pjsip/pjproject/pull/2525Backloghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/615UPNP - IGD search must restarted if a connectivity check is received and ther...2021-09-02T15:00:10ZMohamed ChibaniUPNP - IGD search must restarted if a connectivity check is received and there is no valid IGDMohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/614video configuration issue causes crashes2022-07-05T18:05:27ZFuchtelJockelvideo configuration issue causes crashesFor some reason the dring.yml gets set to:
```yml
video:
decodingAccelerated: true
encodingAccelerated: false
```
Jami will crash if set so when using the webcam.
setting it to:
```yml
video:
decodingAccelerated: true
encodingAc...For some reason the dring.yml gets set to:
```yml
video:
decodingAccelerated: true
encodingAccelerated: false
```
Jami will crash if set so when using the webcam.
setting it to:
```yml
video:
decodingAccelerated: true
encodingAccelerated: true
```
will prevent the crashhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/613pjnath: Leak of STUN TCP socket2021-08-25T13:48:27ZOlivier Dionpjnath: Leak of STUN TCP socketFound by agents:
- [alice.scm](/uploads/45a2005456b023cdd47fff56787fafb5/passive-agent.scm)
- [bob.scm](/uploads/220e091417951aebfa9b3ac52253e013/desc.scm)
Progression of TCP leak (Alice side):
- [lsof.log](/uploads/c1f1d55f0f2b2...Found by agents:
- [alice.scm](/uploads/45a2005456b023cdd47fff56787fafb5/passive-agent.scm)
- [bob.scm](/uploads/220e091417951aebfa9b3ac52253e013/desc.scm)
Progression of TCP leak (Alice side):
- [lsof.log](/uploads/c1f1d55f0f2b2f2e1fb666888216d864/lsof.log)
Trace of `socket(*, SOCK_STREAM, *)` (Alice side):
- [tcp-trace.txt](/uploads/2a14a06a7cb876d8fca99065f06c6f06/tcp-trace.txt)
Matching progression against the trace, leaks seem to follow this pattern:
```
pj_sock_socket at /daemon/contrib/native/pjproject/pjlib/build/../src/pj/sock_bsd.c:583
pj_stun_sock_connect at /daemon/contrib/native/pjproject/pjnath/build/../src/pjnath/stun_sock.c:1315
pj_stun_sock_connect_active at /daemon/contrib/native/pjproject/pjnath/build/../src/pjnath/stun_sock.c:1436
ice_wait_tcp_connection at /daemon/contrib/native/pjproject/pjnath/build/../src/pjnath/ice_strans.c:2741
perform_check at /daemon/contrib/native/pjproject/pjnath/build/../src/pjnath/ice_session.c:2662
start_periodic_check at /daemon/contrib/native/pjproject/pjnath/build/../src/pjnath/ice_session.c:2814
periodic_timer at /daemon/contrib/native/pjproject/pjnath/build/../src/pjnath/ice_session.c:2921
pj_timer_heap_poll at /daemon/contrib/native/pjproject/pjlib/build/../src/pj/timer.c:915
jami::IceTransport::Impl::handleEvents(unsigned int) at /daemon/src/ice_transport.cpp:544
[...]
```Olivier DionOlivier Dionhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/612sipcall: Invalid address IP family of account's ICE option2021-08-25T17:44:14ZOlivier Dionsipcall: Invalid address IP family of account's ICE optionSee [gdb.txt](/uploads/80bea4f9be460450799a35d7c7d4de17/gdb.txt) Thread 35.See [gdb.txt](/uploads/80bea4f9be460450799a35d7c7d4de17/gdb.txt) Thread 35.