jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2019-01-27T15:01:35Zhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/65Account archive seems to not contains contacts anymore2019-01-27T15:01:35ZSébastien BlinAccount archive seems to not contains contacts anymore# Reproduce step:
1. Generate a new account (without any password).
2. Add some contacts
3. Retrieve the related export.gz
4. `gunzip export.gz`
5. The key `ringAccountContacts` is not present!# Reproduce step:
1. Generate a new account (without any password).
2. Add some contacts
3. Retrieve the related export.gz
4. `gunzip export.gz`
5. The key `ringAccountContacts` is not present!Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/1daemon: account maintenance regression2024-03-08T19:26:13ZJami Botdaemon: account maintenance regressionIssue generated from Tuleap's migration script.
**Originally submitted by: Guillaume Roguez (guillaume)**
Migration/Maintenance system is broken: not able to recreate a new device if ring\_device.\* files missing (ex: filesystem corrupt...Issue generated from Tuleap's migration script.
**Originally submitted by: Guillaume Roguez (guillaume)**
Migration/Maintenance system is broken: not able to recreate a new device if ring\_device.\* files missing (ex: filesystem corruption).
Was tested on GNU/Linux-GNOME and Win32 platforms, using lasted sources.
I only indicate GNU/Linux-GNOME below.
\* Environment:
daemon: 1ed6a0f video: disable auto quality by default
lrc: 68c8ad0 AccountModel: separate selected and chosen account
gnome:
\* Reproduce steps:
- Create a new ring account
- stop ring
- delete ring\_device.\* files associated to this account
- restart ring
\* Expected result:
- the client ask for the password
- the client shows the normal screen after correct password given, with new ring device generated
\* Actual result:
- the client loops in password askingAdrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/2ring-daemon fails to build with opendht 1.2.1 using clang2024-03-08T19:26:13ZJami Botring-daemon fails to build with opendht 1.2.1 using clangIssue generated from Tuleap's migration script.
**Originally submitted by: Yuri (yurivict)**
I am getting these errors from clang-38 with both current ring-lrc and 1.0.0 ring-lrc:
```
In file included from configurationmanager.cpp:4...Issue generated from Tuleap's migration script.
**Originally submitted by: Yuri (yurivict)**
I am getting these errors from clang-38 with both current ring-lrc and 1.0.0 ring-lrc:
```
In file included from configurationmanager.cpp:40:
/usr/ports/net-im/ring-daemon/work/ring-daemon-56ec56f/src/ringdht/ringaccount.h:347:42: error: no member named 'Dht' in namespace 'dht'; did you mean 'dht'?
void saveNodes(const std::vector<dht::Dht::NodeExport>&) const;
\^\~\~\~\~\~\~\~
dht
/usr/local/include/opendht/default\_types.h:36:11: note: 'dht' declared here
namespace dht {
\^
In file included from configurationmanager.cpp:40:
/usr/ports/net-im/ring-daemon/work/ring-daemon-56ec56f/src/ringdht/ringaccount.h:348:43: error: no member named 'Dht' in namespace 'dht'; did you mean 'dht'?
void saveValues(const std::vector<dht::Dht::ValuesExport>&) const;
\^\~\~\~\~\~\~\~
dht
```
Spotted on FreeBSD.Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/5daemon: call goes to failure instead of over2024-03-08T19:26:14ZJami Botdaemon: call goes to failure instead of overIssue generated from Tuleap's migration script.
**Originally submitted by: Alexandre Lision (alision)**
<p>Steps to reproduce:</p>
<p>- make a call</p>
<p>- Bob hangs up</p>
<p>- Alice can go to Failure instead of Over (i...Issue generated from Tuleap's migration script.
**Originally submitted by: Alexandre Lision (alision)**
<p>Steps to reproduce:</p>
<p>- make a call</p>
<p>- Bob hangs up</p>
<p>- Alice can go to Failure instead of Over (it does not happen every time I think)</p>
<p> </p>
<p>This is the log generated:</p>
<pre>
<strong>1457970175.894|0x70000021d000|tls\_session.cpp:638 ] [TLS] shutdown
1457970175.894|0x1019b7000|siptransport.cpp:209 ] pjsip transport@0x1031c4088 TLS to 208.88.110.46:7170 -> DISCONNECTED
1457970175.894|0x1019b7000|sipcall.cpp:205 ] call:12405873968647423475] Ending call because underlying SIP transport was closed
1457970175.894|0x1019b7000|call.cpp:144 ] [call:12405873968647423475] state change 1/4, cnx 4/0, code 54
1457970175.894|0x1019b7000|call.cpp:163 ] [call:12405873968647423475] emit client call state change FAILURE, code 54
1457970175.894|0x1019b7000|manager.cpp:1778 ] [call:12405873968647423475] Failed
1457970175.894|0x1019b7000|corelayer.cpp:226 ] START STREAM
1457970175.894|0x1019b7000|call\_factory.cpp:39 ] Removing call 12405873968647423475
1457970175.894|0x1019b7000|call\_factory.cpp:43 ] Remaining 0 SIP call(s)
1457970175.895|0x1019b7000|call.cpp:144 ] [call:12405873968647423475] state change 4/5, cnx 0/0, code 0
1457970175.895|0x1019b7000|call.cpp:163 ] [call:12405873968647423475] emit client call state change OVER, code 0</strong></pre>
<p>The problem seems to be in the daemon, it emits first a FAILURE state changed before a OVER. LRC puts the call in failed and does nothing when the OVER signal is received:</p>
<p>Log in LRC:</p>
<pre>
<strong>Call State Changed for call "12405873968647423475" . New state : "FAILURE"
Call found Call(0x6000002321e0) "Talking"
Calling stateChanged "FAILURE" -> 6 on call with state "Talking" . Become "Failed"
Call State Changed for call "12405873968647423475" . New state : "OVER"
Call found Call(0x6000002321e0) "Failed"
Origin and destination states are identical "Failed" "Failed" doing nothing Call(0x6000002321e0)
Calling stateChanged "OVER" -> 7 on call with state "Failed" . Become "Failed"
</strong></pre>Guillaume RoguezGuillaume Roguezhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/8Invalid conversation state2024-03-08T19:26:14ZPierre DucheminInvalid conversation state## Environment
- Ring version: 20180511
- Device model: Nvidia Shield Pro, LG G3
- Android version: 7 (shield), 6 (LG)
- What build you are using: debug build on 636a065f603447f6c8472befd93c6b52e74ebfe3
## Steps to reproduce
-...## Environment
- Ring version: 20180511
- Device model: Nvidia Shield Pro, LG G3
- Android version: 7 (shield), 6 (LG)
- What build you are using: debug build on 636a065f603447f6c8472befd93c6b52e74ebfe3
## Steps to reproduce
- I reproduce the bug: at will
- Steps:
1. Call a contact that is only connected with an Android Phone device
2. The call is establishing
3. At the same time,
- on AndroidTV: hang up call
- on Android Phone: pick up call
- Actual result: on AndroidTV, everything is fine: the conversation hanged up and smartlist is displayed, but on the phone, a call is ongoing with a black screen instead of the video from the Shield. Video from phone displays normally on phone.
- Expected result: both devices should hang up.
## Additional information
Tried to reproduce the other way: phone calling TV, but everything went fine.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/9dtmf tones do not work2024-03-08T19:26:14ZJami Botdtmf tones do not workIssue generated from Tuleap's migration script.
**Originally submitted by: Stepan Salenikovich (ssalenik)**
<p>A user reported that sending dtmf tones (SIP or RTP) does not work.<br />
<br />
I think RTP tones are broken in the daem...Issue generated from Tuleap's migration script.
**Originally submitted by: Stepan Salenikovich (ssalenik)**
<p>A user reported that sending dtmf tones (SIP or RTP) does not work.<br />
<br />
I think RTP tones are broken in the daemon since a while ago. Its also possible that SIP tones work, but are not accepted in all cases on the other end?</p>
<p>Also the gnome UI is not very nice for sending them, so could also be an input issue.</p>SIP support - first iterationSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/14Incoherent packet loss and call fail2024-03-08T19:26:15ZSébastien BlinIncoherent packet loss and call failSometimes, during the call connection, the daemon log an incoherent packet loss (integer overflow) and then the call fails.
This is due when `TlsSession::TlsSessionImpl::flushRxQueue()` receives the same packet sequence number twice.Sometimes, during the call connection, the daemon log an incoherent packet loss (integer overflow) and then the call fails.
This is due when `TlsSession::TlsSessionImpl::flushRxQueue()` receives the same packet sequence number twice.Gnome 2018.07.15Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/16missing audio during call2024-03-08T19:26:15ZHugo Lefeuvremissing audio during call**Issue:** No audio during Ring video calls.
**Setup:** latest daemon + LRC + GNU/Linux GNOME client master. The other peer uses the MacOS client, latest stable version.
**Daemon logs:**
```
[1530368590.976|14825|accel.cpp :146...**Issue:** No audio during Ring video calls.
**Setup:** latest daemon + LRC + GNU/Linux GNOME client master. The other peer uses the MacOS client, latest stable version.
**Daemon logs:**
```
[1530368590.976|14825|accel.cpp :146 ] Not using hardware accelerated decoding
[1530368590.976|14825|media_decoder.cpp :224 ] Decoding audio using Opus (opus)
[1530368590.976|14825|media_decoder.cpp :489 ] Creating audio resampler
[1530368591.019|10763|sipvoiplink.cpp :1129 ] [INVITE:0x5576d3144508] RX SIP method 6 (INFO)
[1530368591.019|10763|sipvoiplink.cpp :1019 ] handling picture fast update request
[1530368591.019|10763|video_sender.cpp :87 ] Key frame requested
[1530368591.093|14826|media_decoder.cpp :131 ] Using format video4linux2
[1530368591.093|14826|media_decoder.cpp :172 ] Finding video stream info
[mjpeg @ 0x7f5f9c003060] unable to decode APP fields: Invalid data found when processing input
[1530368591.364|14826|accel.cpp :103 ] Using 'vaapi' hardware acceleration with device '/dev/dri/r
enderD128'
[1530368591.364|14826|media_decoder.cpp :224 ] Decoding video using MJPEG (Motion JPEG) (mjpeg)
[1530368591.364|14826|video_input.cpp :366 ] created decoder with video params : size=960X540, fps=30.00
0000
[1530368591.364|14826|sinkclient.cpp :372 ] Start sink <local / Ring Daemon_shm_10763_0>, size=960x540,
mixer=0
[mjpeg @ 0x7f5f9c004820] unable to decode APP fields: Invalid data found when processing input
[1530368591.370|14826|accel.cpp :64 ] Frame format mismatch: expected vaapi_vld, got yuv422p
[1530368591.377|14826|sip_utils.cpp :203 ] Registered thread 0x7f5feeccd130 (0x2A0B)
[1530368591.379|14826|sinkclient.cpp :182 ] ShmHolder[Ring Daemon_shm_10763_0]: new sizes: f=2073600, a
=4147303
[mjpeg @ 0x7f5f9c004820] unable to decode APP fields: Invalid data found when processing input
[1530368591.400|14826|accel.cpp :64 ] Frame format mismatch: expected vaapi_vld, got yuv422p
[mjpeg @ 0x7f5f9c004820] unable to decode APP fields: Invalid data found when processing input
[1530368591.435|14826|accel.cpp :64 ] Frame format mismatch: expected vaapi_vld, got yuv422p
[mjpeg @ 0x7f5f9c004820] unable to decode APP fields: Invalid data found when processing input
[1530368591.467|14826|accel.cpp :64 ] Frame format mismatch: expected vaapi_vld, got yuv422p
[mjpeg @ 0x7f5f9c004820] unable to decode APP fields: Invalid data found when processing input
[1530368591.498|14826|accel.cpp :64 ] Frame format mismatch: expected vaapi_vld, got yuv422p
[1530368591.498|14826|media_decoder.cpp :285 ] Hardware decoding failure
[1530368591.501|14826|media_decoder.cpp :114 ] Trying to open device /dev/video0 with format video4linux2,
pixel format mjpeg, size 960x540, rate 30.000000
[1530368591.537|14826|media_decoder.cpp :131 ] Using format video4linux2
[1530368591.537|14826|media_decoder.cpp :172 ] Finding video stream info
[mjpeg @ 0x7f5f9c0189e0] unable to decode APP fields: Invalid data found when processing input
[1530368591.731|14826|accel.cpp :103 ] Using 'vaapi' hardware acceleration with device '/dev/dri/r
enderD128'
[1530368591.731|14826|media_decoder.cpp :224 ] Decoding video using MJPEG (Motion JPEG) (mjpeg)
[1530368591.731|14826|video_input.cpp :366 ] created decoder with video params : size=960X540, fps=30.00
0000
[1530368591.731|14826|sinkclient.cpp :372 ] Start sink <local / Ring Daemon_shm_10763_0>, size=960x540,
mixer=0
[1530368591.731|14826|video_input.cpp :221 ] Disabling hardware decoding due to previous failure
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[1530368592.821|14835|accel.cpp :103 ] Using 'vaapi' hardware acceleration with device '/dev/dri/r
enderD128'
[1530368592.821|14835|media_decoder.cpp :224 ] Decoding video using H.264 / AVC / MPEG-4 AVC / MPEG-4 part
10 (h264)
[1530368592.821|14835|sinkclient.cpp :182 ] ShmHolder[Ring Daemon_shm_10763_1]: new sizes: f=0, a=103
[1530368592.821|14835|sinkclient.cpp :148 ] ShmHolder: new holder 'Ring Daemon_shm_10763_1'
[1530368592.822|14835|sinkclient.cpp :372 ] Start sink <2052679725649646304 / Ring Daemon_shm_10763_1>,
size=1280x720, mixer=0
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[1530368592.829|14835|sinkclient.cpp :182 ] ShmHolder[Ring Daemon_shm_10763_1]: new sizes: f=3686400, a
=7372903
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[1530368596.813|10763|manager.cpp :1657 ] [call:2052679725649646304] Remove local audio
[1530368596.813|10763|sipcall.cpp :294 ] [call:2052679725649646304] Terminate SIP session
[1530368596.814|10763|sipcall.cpp :940 ] [call:2052679725649646304] stopping all medias
[1530368596.814|14825|media_decoder.cpp :339 ] Couldn't read frame: Operation not permitted
[1530368596.814|14825|audio_rtp_session.cpp:333 ] fatal error, read failed
[libopus @ 0x7f5fa0002320] 1 frames left in the queue on closing
[1530368596.827|14835|sinkclient.cpp :377 ] Stop sink <2052679725649646304 / Ring Daemon_shm_10763_1>,
mixer=0
[mjpeg @ 0x7f5f9c018ec0] unable to decode APP fields: Invalid data found when processing input
[1530368596.839|14826|sinkclient.cpp :377 ] Stop sink <local / Ring Daemon_shm_10763_0>, mixer=0
[1530368596.839|14826|video_input.cpp :172 ] VideoInput closed
[1530368596.839|10763|call.cpp :198 ] [call:2052679725649646304] state change 1/1, cnx 4/0, code
0
[1530368596.839|10763|call.cpp :221 ] [call:2052679725649646304] emit client call state change HU
NGUP, code 0
[1530368596.839|10763|sipcall.cpp :703 ] [call:2052679725649646304] removeCall()
```
(slightly modified, removed some redundant lines)
**How to reproduce:** Don't know, it appears to happen randomly. Last time it worked.
Then I used my Android client and it worked perfectly.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/18heap-buffer-overflow (OOB read) in msgData2022-11-14T21:52:31ZHugo Lefeuvreheap-buffer-overflow (OOB read) in msgData**Affected**: latest daemon master & earlier. Built with `-O0 -g -fsanitize=address`
**How to reproduce**: Don't know, crash happened in background
**ASAN stacktrace**:
```
[1530642849.947|14374|ringaccount.cpp :3274 ] [Account 9fba...**Affected**: latest daemon master & earlier. Built with `-O0 -g -fsanitize=address`
**How to reproduce**: Don't know, crash happened in background
**ASAN stacktrace**:
```
[1530642849.947|14374|ringaccount.cpp :3274 ] [Account 9fba7138a1fc3f51] found 1 devices for dfbf26a7e179df1c820b6228337b87387aa18461
[1530642850.099|14374|ringaccount.cpp :2014 ] Buddy ded6a9d278d05adac3265a0a69d07bd264e0861a online: (device: 8cab8a934b6fa5965e7c6924afb9a3487751045a)
[1530642850.099|14374|ringaccount.cpp :3274 ] [Account 9fba7138a1fc3f51] found 1 devices for ded6a9d278d05adac3265a0a69d07bd264e0861a
[1530643018.062|20911|p2p.cpp :316 ] [Account 9fba7138a1fc3f51] [CNX] request connection to 59e730f3484cd99742ad4a98cd3f55fc93070d92
[1530643038.063|20911|p2p.cpp :273 ] [CNX] exception during client processing: no response from DHT to E2E request
=================================================================
==14374==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x603000280378 at pc 0x7fed8da2f0b9 bp 0x7fed820de900 sp 0x7fed820de8f0
READ of size 20 at 0x603000280378 thread T2
#0 0x7fed8da2f0b8 in msgData<0ul, (ring::<unnamed>::CtrlMsgType)1, std::tuple<ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)0, void>, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)1, std::tuple<dht::Hash<20ul>, long unsigned int> >, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)2, std::tuple<ring::IpAddr> >, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)3, std::tuple<ring::IpAddr> >, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)4, std::tuple<ring::(anonymous namespace)::PeerConnectionMsg> >, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)5, std::tuple<ring::(anonymous namespace)::PeerConnectionMsg> >, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)6, std::tuple<dht::Hash<20ul>, long unsigned int, std::shared_ptr<dht::crypto::Certificate>, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::function<void(ring::PeerConnection*)> > > >, ring::(anonymous namespace)::CtrlMsgBase> /home/hlefeuvre/Development/ring-daemon/src/ringdht/p2p.cpp:161
#1 0x7fed8da2f108 in ctrlMsgData<(ring::<unnamed>::CtrlMsgType)1, 0ul, ring::(anonymous namespace)::CtrlMsgBase> /home/hlefeuvre/Development/ring-daemon/src/ringdht/p2p.cpp:186
#2 0x7fed8da2fcca in ring::DhtPeerConnector::Impl::eventLoop() /home/hlefeuvre/Development/ring-daemon/src/ringdht/p2p.cpp:637
#3 0x7fed8da416ff in ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1}::operator()() const /home/hlefeuvre/Development/ring-daemon/src/ringdht/p2p.cpp:200
#4 0x7fed8da5de79 in void std::_Bind_simple<ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) /usr/include/c++/5/functional:1531
#5 0x7fed8da5d973 in std::_Bind_simple<ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} ()>::operator()() /usr/include/c++/5/functional:1520
#6 0x7fed8da5cf58 in std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::_Bind_simple<ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} ()>, void>::operator()() const /usr/include/c++/5/future:1342
#7 0x7fed8da5c619 in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::_Bind_simple<ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} ()>, void> >::_M_invoke(std::_Any_data const&) /usr/include/c++/5/functional:1857
#8 0x7fed8d71c1d7 in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/include/c++/5/functional:2267
#9 0x7fed8d71a48c in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/include/c++/5/future:527
#10 0x7fed8d726e5a in void std::_Mem_fn_base<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), true>::operator()<std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*, void>(std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) const /usr/include/c++/5/functional:600
#11 0x7fed8d7258e6 in void std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) /usr/include/c++/5/functional:1531
#12 0x7fed8d722fdd in std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>::operator()() /usr/include/c++/5/functional:1520
#13 0x7fed8d71f40e in void std::__once_call_impl<std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> >() /usr/include/c++/5/mutex:706
#14 0x7fed8c4a8a98 in __pthread_once_slow (/lib/x86_64-linux-gnu/libpthread.so.0+0xea98)
#15 0x7fed8d70bad9 in __gthread_once /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:699
#16 0x7fed8d71bfc6 in void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/include/c++/5/mutex:738
#17 0x7fed8d719ec3 in std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/include/c++/5/future:387
#18 0x7fed8da5b161 in std::__future_base::_Async_state_impl<std::_Bind_simple<ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} ()>, void>::_Async_state_impl(ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} (&&)())::{lambda()#1}::operator()() const /usr/include/c++/5/future:1658
#19 0x7fed8da61805 in void std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} ()>, void>::_Async_state_impl(ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} (&&)())::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) /usr/include/c++/5/functional:1531
#20 0x7fed8da61505 in std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} ()>, void>::_Async_state_impl(ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} (&&)())::{lambda()#1} ()>::operator()() /usr/include/c++/5/functional:1520
#21 0x7fed8da6019b in std::thread::_Impl<std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} ()>, void>::_Async_state_impl(ring::DhtPeerConnector::Impl::Impl(ring::RingAccount&)::{lambda()#1} (&&)())::{lambda()#1} ()> >::_M_run() /usr/include/c++/5/thread:115
#22 0x7fed8c985c7f (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8c7f)
#23 0x7fed8c4a16b9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)
#24 0x7fed8c1d741c in clone (/lib/x86_64-linux-gnu/libc.so.6+0x10741c)
0x603000280380 is located 0 bytes to the right of 32-byte region [0x603000280360,0x603000280380)
allocated by thread T445 here:
#0 0x7fed8f490532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
#1 0x7fed8da32682 in make_unique<ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)1, std::tuple<dht::Hash<20ul> > >, const dht::Hash<20ul>&> /usr/include/c++/5/bits/unique_ptr.h:765
#2 0x7fed8da2a5ec in makeMsg<(ring::<unnamed>::CtrlMsgType)1, dht::Hash<20ul> > /home/hlefeuvre/Development/ring-daemon/src/ringdht/p2p.cpp:153
#3 0x7fed8da426b6 in ring::DhtPeerConnector::Impl::ClientConnector::cancel() /home/hlefeuvre/Development/ring-daemon/src/ringdht/p2p.cpp:299
#4 0x7fed8da41f47 in ring::DhtPeerConnector::Impl::ClientConnector::ClientConnector(ring::DhtPeerConnector::Impl&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (ring::PeerConnection*)> const&)::{lambda()#1}::operator()() const /home/hlefeuvre/Development/ring-daemon/src/ringdht/p2p.cpp:274
#5 0x7fed8da5df37 in void std::_Bind_simple<ring::DhtPeerConnector::Impl::ClientConnector::ClientConnector(ring::DhtPeerConnector::Impl&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (ring::PeerConnection*)> const&)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) /usr/include/c++/5/functional:1531
#6 0x7fed8da5da9f in std::_Bind_simple<ring::DhtPeerConnector::Impl::ClientConnector::ClientConnector(ring::DhtPeerConnector::Impl&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (ring::PeerConnection*)> const&)::{lambda()#1} ()>::operator()() /usr/include/c++/5/functional:1520
#7 0x7fed8da5d43c in std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::_Bind_simple<ring::DhtPeerConnector::Impl::ClientConnector::ClientConnector(ring::DhtPeerConnector::Impl&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (ring::PeerConnection*)> const&)::{lambda()#1} ()>, void>::operator()() const /usr/include/c++/5/future:1342
#8 0x7fed8da5ca2a in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::_Bind_simple<ring::DhtPeerConnector::Impl::ClientConnector::ClientConnector(ring::DhtPeerConnector::Impl&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (ring::PeerConnection*)> const&)::{lambda()#1} ()>, void> >::_M_invoke(std::_Any_data const&) /usr/include/c++/5/functional:1857
#9 0x7fed8d71c1d7 in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/include/c++/5/functional:2267
#10 0x7fed8d71a48c in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/include/c++/5/future:527
#11 0x7fed8d726e5a in void std::_Mem_fn_base<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), true>::operator()<std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*, void>(std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) const /usr/include/c++/5/functional:600
#12 0x7fed8d7258e6 in void std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) /usr/include/c++/5/functional:1531
#13 0x7fed8d722fdd in std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>::operator()() /usr/include/c++/5/functional:1520
#14 0x7fed8d71f40e in void std::__once_call_impl<std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> >() /usr/include/c++/5/mutex:706
#15 0x7fed8c4a8a98 in __pthread_once_slow (/lib/x86_64-linux-gnu/libpthread.so.0+0xea98)
Thread T2 created by T0 here:
#0 0x7fed8f42d253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7fed8c985dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
Thread T445 created by T2 here:
#0 0x7fed8f42d253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7fed8c985dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
SUMMARY: AddressSanitizer: heap-buffer-overflow /home/hlefeuvre/Development/ring-daemon/src/ringdht/p2p.cpp:161 msgData<0ul, (ring::<unnamed>::CtrlMsgType)1, std::tuple<ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)0, void>, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)1, std::tuple<dht::Hash<20ul>, long unsigned int> >, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)2, std::tuple<ring::IpAddr> >, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)3, std::tuple<ring::IpAddr> >, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)4, std::tuple<ring::(anonymous namespace)::PeerConnectionMsg> >, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)5, std::tuple<ring::(anonymous namespace)::PeerConnectionMsg> >, ring::(anonymous namespace)::CtrlMsg<(ring::<unnamed>::CtrlMsgType)6, std::tuple<dht::Hash<20ul>, long unsigned int, std::shared_ptr<dht::crypto::Certificate>, std::vector<std::__cxx11::basic_strin
Shadow bytes around the buggy address:
0x0c0680048010: fa fa 00 00 00 00 fa fa fa fa fa fa fa fa fa fa
0x0c0680048020: fa fa fa fa fd fd fd fd fa fa fd fd fd fa fa fa
0x0c0680048030: fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c0680048040: fa fa fa fa fa fa fa fa fd fd fd fd fa fa fd fd
0x0c0680048050: fd fa fa fa fd fd fd fa fa fa fd fd fd fd fa fa
=>0x0c0680048060: fa fa fa fa fa fa fd fd fd fd fa fa 00 00 00[00]
0x0c0680048070: fa fa fd fd fd fa fa fa fa fa fa fa fa fa 00 00
0x0c0680048080: 00 00 fa fa fa fa fa fa fa fa fd fd fd fa fa fa
0x0c0680048090: fd fd fd fa fa fa fa fa fa fa fa fa fd fd fd fd
0x0c06800480a0: fa fa fd fd fd fd fa fa fd fd fd fd fa fa fd fd
0x0c06800480b0: fd fa fa fa fa fa fa fa fa fa fd fd fd fa fa fa
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
Heap right redzone: fb
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack partial redzone: f4
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
==14374==ABORTING
```
This bug has potential security implications (CWE-125).Gnome 2018.07.15Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/20heap-use-after-free when canceling file transfer2022-11-14T21:52:31ZHugo Lefeuvreheap-use-after-free when canceling file transfer**Affects**: latest daemon master & earlier. Built with `-O0 -g -fsanitize=address`.
**How to reproduce**: Cancel a file transfer while the file is being sent. While it does not always happen, I managed to reproduce it twice.
**ASAN st...**Affects**: latest daemon master & earlier. Built with `-O0 -g -fsanitize=address`.
**How to reproduce**: Cancel a file transfer while the file is being sent. While it does not always happen, I managed to reproduce it twice.
**ASAN stacktrace no. 1**:
```
[1531169668.821|19662|ringaccount.cpp :3274 ] [Account 9fba7138a1fc3f51] found 0 devices for e6b11a4a3406609c079dcba364b199eac72f0882
[1531169668.821|19662|p2p.cpp :780 ] 0x62300000e110[CNX] aborted, no devices for e6b11a4a3406609c079dcba364b199eac72f0882
[1531169689.507|20021|p2p.cpp :316 ] [Account 9fba7138a1fc3f51] [CNX] request connection to e6b11a4a3406609c079dcba364b199eac72f0882
[1531169689.944|19677|p2p.cpp :585 ] [Account 9fba7138a1fc3f51] [CNX] rx DHT reply from e6b11a4a3406609c079dcba364b199eac72f0882
[1531169689.951|20021|p2p.cpp :342 ] [Account 9fba7138a1fc3f51] [CNX] connecting to TURN relay 158.69.203.51:19418
[1531169689.953|20021|p2p.cpp :354 ] [Account 9fba7138a1fc3f51] [CNX] start TLS session
[1531169689.954|20025|tls_session.cpp :738 ] [TLS] Start client session
[1531169689.970|20025|tls_session.cpp :446 ] [TLS] User identity loaded
[1531169689.970|20025|tls_session.cpp :833 ] [TLS] handshake
[1531169690.395|20025|tls_session.cpp :860 ] [TLS] session established: (TLS1.2)-(ANON-DH)-(AES-256-GCM)
[1531169690.395|20025|tls_session.cpp :866 ] [TLS] renogotiate with certificate authentification
[1531169690.395|20025|tls_session.cpp :833 ] [TLS] handshake
[1531169690.707|20025|tls_session.cpp :860 ] [TLS] session established: (TLS1.2)-(ECDHE-SECP384R1)-(RSA-SHA384)-(AES-256-GCM)
[1531169690.720|20026|peer_connection.cpp:540 ] [CNX] Peer connection to e6b11a4a3406609c079dcba364b199eac72f0882 ready
[1531169691.014|19662|ringaccount.cpp :2014 ] Buddy 60ba2209df97e8f6546f9cbb5b12ad08dbff7c4d online: (device: e6b11a4a3406609c079dcba364b199eac72f0882)
[1531169691.014|19662|ringaccount.cpp :3274 ] [Account 9fba7138a1fc3f51] found 1 devices for 60ba2209df97e8f6546f9cbb5b12ad08dbff7c4d
=================================================================
==19662==ERROR: AddressSanitizer: heap-use-after-free on address 0x62500643c100 at pc 0x7f1b422bfe55 bp 0x7f1b2d68ad10 sp 0x7f1b2d68a4b8
WRITE of size 8191 at 0x62500643c100 thread T67
#0 0x7f1b422bfe54 (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x45e54)
#1 0x7f1b3f800216 in std::__basic_file<char>::xsgetn(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb0216)
#2 0x7f1b3f83b2e5 in std::basic_filebuf<char, std::char_traits<char> >::underflow() (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xeb2e5)
#3 0x7f1b3f86dfec in std::basic_streambuf<char, std::char_traits<char> >::xsgetn(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x11dfec)
#4 0x7f1b3f83ac7d in std::basic_filebuf<char, std::char_traits<char> >::xsgetn(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xeac7d)
#5 0x7f1b3f8478ea in std::istream::read(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xf78ea)
#6 0x7f1b405b3964 in ring::SubOutgoingFileTransfer::read(std::vector<unsigned char, std::allocator<unsigned char> >&) const /home/hlefeuvre/Development/ring-daemon/src/data_transfer.cpp:339
#7 0x7f1b405938ae in _ZZN4ring14PeerConnection18PeerConnectionImpl9eventLoopEvENKUlRT_E_clISt10shared_ptrINS_6StreamEEEEDaS3_ (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xac18ae)
#8 0x7f1b405940b8 in handle_stream_list<std::vector<std::shared_ptr<ring::Stream> >, ring::PeerConnection::PeerConnectionImpl::eventLoop()::<lambda(auto:1&)> > /home/hlefeuvre/Development/ring-daemon/src/peer_connection.cpp:521
#9 0x7f1b40592409 in ring::PeerConnection::PeerConnectionImpl::eventLoop() /home/hlefeuvre/Development/ring-daemon/src/peer_connection.cpp:625
#10 0x7f1b4059e0c1 in ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1}::operator()() const /home/hlefeuvre/Development/ring-daemon/src/peer_connection.cpp:477
#11 0x7f1b405afa0d in void std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadda0d)
#12 0x7f1b405af8d9 in std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>::operator()() (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadd8d9)
#13 0x7f1b405af4ba in std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::operator()() const (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadd4ba)
#14 0x7f1b405af04d in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void> >::_M_invoke(std::_Any_data const&) (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadd04d)
#15 0x7f1b4059f1d7 in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/include/c++/5/functional:2267
#16 0x7f1b4059d48c in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/include/c++/5/future:527
#17 0x7f1b405a9e5a in void std::_Mem_fn_base<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), true>::operator()<std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*, void>(std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) const /usr/include/c++/5/functional:600
#18 0x7f1b405a88e6 in void std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) /usr/include/c++/5/functional:1531
#19 0x7f1b405a5fdd in std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>::operator()() /usr/include/c++/5/functional:1520
#20 0x7f1b405a240e in void std::__once_call_impl<std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> >() /usr/include/c++/5/mutex:706
#21 0x7f1b3f32ba98 in __pthread_once_slow (/lib/x86_64-linux-gnu/libpthread.so.0+0xea98)
#22 0x7f1b4058ead9 in __gthread_once /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:699
#23 0x7f1b4059efc6 in void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/include/c++/5/mutex:738
#24 0x7f1b4059cec3 in std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/include/c++/5/future:387
#25 0x7f1b405ae61f in std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1}::operator()() const /usr/include/c++/5/future:1658
#26 0x7f1b405b1a83 in void std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadfa83)
#27 0x7f1b405b1879 in std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1} ()>::operator()() /usr/include/c++/5/functional:1520
#28 0x7f1b405b0953 in std::thread::_Impl<std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<[1531169668.821|19662|ringaccount.cpp :3274 ] [Account 9fba7138a1fc3f51] found 0 devices for e6b11a4a3406609c079dcba364b199eac72f0882
[1531169668.821|19662|p2p.cpp :780 ] 0x62300000e110[CNX] aborted, no devices for e6b11a4a3406609c079dcba364b199eac72f0882
[1531169689.507|20021|p2p.cpp :316 ] [Account 9fba7138a1fc3f51] [CNX] request connection to e6b11a4a3406609c079dcba364b199eac72f0882
[1531169689.944|19677|p2p.cpp :585 ] [Account 9fba7138a1fc3f51] [CNX] rx DHT reply from e6b11a4a3406609c079dcba364b199eac72f0882
[1531169689.951|20021|p2p.cpp :342 ] [Account 9fba7138a1fc3f51] [CNX] connecting to TURN relay 158.69.203.51:19418
[1531169689.953|20021|p2p.cpp :354 ] [Account 9fba7138a1fc3f51] [CNX] start TLS session
[1531169689.954|20025|tls_session.cpp :738 ] [TLS] Start client session
[1531169689.970|20025|tls_session.cpp :446 ] [TLS] User identity loaded
[1531169689.970|20025|tls_session.cpp :833 ] [TLS] handshake
[1531169690.395|20025|tls_session.cpp :860 ] [TLS] session established: (TLS1.2)-(ANON-DH)-(AES-256-GCM)
[1531169690.395|20025|tls_session.cpp :866 ] [TLS] renogotiate with certificate authentification
[1531169690.395|20025|tls_session.cpp :833 ] [TLS] handshake
[1531169690.707|20025|tls_session.cpp :860 ] [TLS] session established: (TLS1.2)-(ECDHE-SECP384R1)-(RSA-SHA384)-(AES-256-GCM)
[1531169690.720|20026|peer_connection.cpp:540 ] [CNX] Peer connection to e6b11a4a3406609c079dcba364b199eac72f0882 ready
[1531169691.014|19662|ringaccount.cpp :2014 ] Buddy 60ba2209df97e8f6546f9cbb5b12ad08dbff7c4d online: (device: e6b11a4a3406609c079dcba364b199eac72f0882)
[1531169691.014|19662|ringaccount.cpp :3274 ] [Account 9fba7138a1fc3f51] found 1 devices for 60ba2209df97e8f6546f9cbb5b12ad08dbff7c4d
=================================================================
==19662==ERROR: AddressSanitizer: heap-use-after-free on address 0x62500643c100 at pc 0x7f1b422bfe55 bp 0x7f1b2d68ad10 sp 0x7f1b2d68a4b8
WRITE of size 8191 at 0x62500643c100 thread T67
#0 0x7f1b422bfe54 (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x45e54)
#1 0x7f1b3f800216 in std::__basic_file<char>::xsgetn(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb0216)
#2 0x7f1b3f83b2e5 in std::basic_filebuf<char, std::char_traits<char> >::underflow() (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xeb2e5)
#3 0x7f1b3f86dfec in std::basic_streambuf<char, std::char_traits<char> >::xsgetn(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x11dfec)
#4 0x7f1b3f83ac7d in std::basic_filebuf<char, std::char_traits<char> >::xsgetn(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xeac7d)
#5 0x7f1b3f8478ea in std::istream::read(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xf78ea)
#6 0x7f1b405b3964 in ring::SubOutgoingFileTransfer::read(std::vector<unsigned char, std::allocator<unsigned char> >&) const /home/hlefeuvre/Development/ring-daemon/src/data_transfer.cpp:339
#7 0x7f1b405938ae in _ZZN4ring14PeerConnection18PeerConnectionImpl9eventLoopEvENKUlRT_E_clISt10shared_ptrINS_6StreamEEEEDaS3_ (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xac18ae)
#8 0x7f1b405940b8 in handle_stream_list<std::vector<std::shared_ptr<ring::Stream> >, ring::PeerConnection::PeerConnectionImpl::eventLoop()::<lambda(auto:1&)> > /home/hlefeuvre/Development/ring-daemon/src/peer_connection.cpp:521
#9 0x7f1b40592409 in ring::PeerConnection::PeerConnectionImpl::eventLoop() /home/hlefeuvre/Development/ring-daemon/src/peer_connection.cpp:625
#10 0x7f1b4059e0c1 in ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1}::operator()() const /home/hlefeuvre/Development/ring-daemon/src/peer_connection.cpp:477
#11 0x7f1b405afa0d in void std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadda0d)
#12 0x7f1b405af8d9 in std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>::operator()() (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadd8d9)
#13 0x7f1b405af4ba in std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::operator()() const (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadd4ba)
#14 0x7f1b405af04d in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void> >::_M_invoke(std::_Any_data const&) (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadd04d)
#15 0x7f1b4059f1d7 in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/include/c++/5/functional:2267
#16 0x7f1b4059d48c in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/include/c++/5/future:527
#17 0x7f1b405a9e5a in void std::_Mem_fn_base<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), true>::operator()<std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*, void>(std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) const /usr/include/c++/5/functional:600
#18 0x7f1b405a88e6 in void std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) /usr/include/c++/5/functional:1531
#19 0x7f1b405a5fdd in std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>::operator()() /usr/include/c++/5/functional:1520
#20 0x7f1b405a240e in void std::__once_call_impl<std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> >() /usr/include/c++/5/mutex:706
#21 0x7f1b3f32ba98 in __pthread_once_slow (/lib/x86_64-linux-gnu/libpthread.so.0+0xea98)
#22 0x7f1b4058ead9 in __gthread_once /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:699
#23 0x7f1b4059efc6 in void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/include/c++/5/mutex:738
#24 0x7f1b4059cec3 in std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/include/c++/5/future:387
#25 0x7f1b405ae61f in std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1}::operator()() const /usr/include/c++/5/future:1658
#26 0x7f1b405b1a83 in void std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadfa83)
#27 0x7f1b405b1879 in std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1} ()>::operator()() /usr/include/c++/5/functional:1520
#28 0x7f1b405b0953 in std::thread::_Impl<std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1} ()> >::_M_run() (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xade953)
#29 0x7f1b3f808c7f (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8c7f)
#30 0x7f1b3f3246b9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)
#31 0x7f1b3f05a41c in clone (/lib/x86_64-linux-gnu/libc.so.6+0x10741c)
0x62500643c100 is located 0 bytes inside of 8192-byte region [0x62500643c100,0x62500643e100)
freed by thread T0 here:
#0 0x7f1b42313caa in operator delete[](void*) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99caa)
#1 0x7f1b3f83c49d in std::basic_filebuf<char, std::char_traits<char> >::_M_destroy_internal_buffer() (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xec49d)
previously allocated by thread T65 here:
#0 0x7f1b423136b2 in operator new[](unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x996b2)
#1 0x7f1b3f83c467 in std::basic_filebuf<char, std::char_traits<char> >::_M_allocate_internal_buffer() (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xec467)
Thread T67 created by T65 here:
#0 0x7f1b422b0253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7f1b3f808dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
Thread T65 created by T2 here:
#0 0x7f1b422b0253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7f1b3f808dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
Thread T2 created by T0 here:
#0 0x7f1b422b0253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7f1b3f808dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
SUMMARY: AddressSanitizer: heap-use-after-free ??:0 ??
Shadow bytes around the buggy address:
0x0c4a80c7f7d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80c7f7e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80c7f7f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80c7f800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80c7f810: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c4a80c7f820:[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a80c7f830: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a80c7f840: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a80c7f850: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a80c7f860: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a80c7f870: fd fd fd fd fd fd fd fd 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
Heap right redzone: fb
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack partial redzone: f4
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
==19662==ABORTINGchar, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1} ()> >::_M_run() (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xade953)
#29 0x7f1b3f808c7f (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8c7f)
#30 0x7f1b3f3246b9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)
#31 0x7f1b3f05a41c in clone (/lib/x86_64-linux-gnu/libc.so.6+0x10741c)
0x62500643c100 is located 0 bytes inside of 8192-byte region [0x62500643c100,0x62500643e100)
freed by thread T0 here:
#0 0x7f1b42313caa in operator delete[](void*) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99caa)
#1 0x7f1b3f83c49d in std::basic_filebuf<char, std::char_traits<char> >::_M_destroy_internal_buffer() (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xec49d)
previously allocated by thread T65 here:
#0 0x7f1b423136b2 in operator new[](unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x996b2)
#1 0x7f1b3f83c467 in std::basic_filebuf<char, std::char_traits<char> >::_M_allocate_internal_buffer() (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xec467)
Thread T67 created by T65 here:
#0 0x7f1b422b0253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7f1b3f808dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
Thread T65 created by T2 here:
#0 0x7f1b422b0253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7f1b3f808dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
Thread T2 created by T0 here:
#0 0x7f1b422b0253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7f1b3f808dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
SUMMARY: AddressSanitizer: heap-use-after-free ??:0 ??
Shadow bytes around the buggy address:
0x0c4a80c7f7d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80c7f7e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80c7f7f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80c7f800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a80c7f810: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c4a80c7f820:[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a80c7f830: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a80c7f840: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a80c7f850: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a80c7f860: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a80c7f870: fd fd fd fd fd fd fd fd 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
Heap right redzone: fb
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack partial redzone: f4
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
==19662==ABORTING
```
**ASAN stacktrace no. 2**:
```
[1531170202.639|20292|ringaccount.cpp :3274 ] [Account 9fba7138a1fc3f51] found 0 devices for e6b11a4a3406609c079dcba364b199eac72f0882
[1531170202.640|20292|p2p.cpp :780 ] 0x62300000e110[CNX] aborted, no devices for e6b11a4a3406609c079dcba364b199eac72f0882
[1531170213.541|20605|p2p.cpp :316 ] [Account 9fba7138a1fc3f51] [CNX] request connection to e6b11a4a3406609c079dcba364b199eac72f0882
[1531170213.959|20307|p2p.cpp :585 ] [Account 9fba7138a1fc3f51] [CNX] rx DHT reply from e6b11a4a3406609c079dcba364b199eac72f0882
[1531170213.965|20605|p2p.cpp :342 ] [Account 9fba7138a1fc3f51] [CNX] connecting to TURN relay 158.69.203.51:19418
[1531170213.968|20605|p2p.cpp :354 ] [Account 9fba7138a1fc3f51] [CNX] start TLS session
[1531170213.968|20606|tls_session.cpp :738 ] [TLS] Start client session
[1531170213.982|20606|tls_session.cpp :446 ] [TLS] User identity loaded
[1531170213.982|20606|tls_session.cpp :833 ] [TLS] handshake
[1531170214.404|20292|ringaccount.cpp :2014 ] Buddy 60ba2209df97e8f6546f9cbb5b12ad08dbff7c4d online: (device: e6b11a4a3406609c079dcba364b199eac72f0882)
[1531170214.404|20292|ringaccount.cpp :3274 ] [Account 9fba7138a1fc3f51] found 1 devices for 60ba2209df97e8f6546f9cbb5b12ad08dbff7c4d
[1531170214.412|20606|tls_session.cpp :860 ] [TLS] session established: (TLS1.2)-(ANON-DH)-(AES-256-GCM)
[1531170214.412|20606|tls_session.cpp :866 ] [TLS] renogotiate with certificate authentification
[1531170214.412|20606|tls_session.cpp :833 ] [TLS] handshake
[1531170214.727|20606|tls_session.cpp :860 ] [TLS] session established: (TLS1.2)-(ECDHE-SECP384R1)-(RSA-SHA384)-(AES-256-GCM)
[1531170214.746|20607|peer_connection.cpp:540 ] [CNX] Peer connection to e6b11a4a3406609c079dcba364b199eac72f0882 ready
=================================================================
==20292==ERROR: AddressSanitizer: heap-use-after-free on address 0x62500817e100 at pc 0x7fb0cc92fe55 bp 0x7fb0b8cdfd10 sp 0x7fb0b8cdf4b8
WRITE of size 8191 at 0x62500817e100 thread T73
#0 0x7fb0cc92fe54 (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x45e54)
#1 0x7fb0c9e70216 in std::__basic_file<char>::xsgetn(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb0216)
#2 0x7fb0c9eab2e5 in std::basic_filebuf<char, std::char_traits<char> >::underflow() (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xeb2e5)
#3 0x7fb0c9eddfec in std::basic_streambuf<char, std::char_traits<char> >::xsgetn(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x11dfec)
#4 0x7fb0c9eaac7d in std::basic_filebuf<char, std::char_traits<char> >::xsgetn(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xeac7d)
#5 0x7fb0c9eb78ea in std::istream::read(char*, long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xf78ea)
#6 0x7fb0cac23964 in ring::SubOutgoingFileTransfer::read(std::vector<unsigned char, std::allocator<unsigned char> >&) const /home/hlefeuvre/Development/ring-daemon/src/data_transfer.cpp:339
#7 0x7fb0cac038ae in _ZZN4ring14PeerConnection18PeerConnectionImpl9eventLoopEvENKUlRT_E_clISt10shared_ptrINS_6StreamEEEEDaS3_ (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xac18ae)
#8 0x7fb0cac040b8 in handle_stream_list<std::vector<std::shared_ptr<ring::Stream> >, ring::PeerConnection::PeerConnectionImpl::eventLoop()::<lambda(auto:1&)> > /home/hlefeuvre/Development/ring-daemon/src/peer_connection.cpp:521
#9 0x7fb0cac02409 in ring::PeerConnection::PeerConnectionImpl::eventLoop() /home/hlefeuvre/Development/ring-daemon/src/peer_connection.cpp:625
#10 0x7fb0cac0e0c1 in ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1}::operator()() const /home/hlefeuvre/Development/ring-daemon/src/peer_connection.cpp:477
#11 0x7fb0cac1fa0d in void std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadda0d)
#12 0x7fb0cac1f8d9 in std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>::operator()() (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadd8d9)
#13 0x7fb0cac1f4ba in std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::operator()() const (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadd4ba)
#14 0x7fb0cac1f04d in std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> (), std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>, std::__future_base::_Result_base::_Deleter>, std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void> >::_M_invoke(std::_Any_data const&) (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadd04d)
#15 0x7fb0cac0f1d7 in std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>::operator()() const /usr/include/c++/5/functional:2267
#16 0x7fb0cac0d48c in std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/include/c++/5/future:527
#17 0x7fb0cac19e5a in void std::_Mem_fn_base<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), true>::operator()<std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*, void>(std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) const /usr/include/c++/5/functional:600
#18 0x7fb0cac188e6 in void std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) /usr/include/c++/5/functional:1531
#19 0x7fb0cac15fdd in std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)>::operator()() /usr/include/c++/5/functional:1520
#20 0x7fb0cac1240e in void std::__once_call_impl<std::_Bind_simple<std::_Mem_fn<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> (std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*)> >() /usr/include/c++/5/mutex:706
#21 0x7fb0c999ba98 in __pthread_once_slow (/lib/x86_64-linux-gnu/libpthread.so.0+0xea98)
#22 0x7fb0cabfead9 in __gthread_once /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:699
#23 0x7fb0cac0efc6 in void std::call_once<void (std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void (std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*, bool*), std::__future_base::_State_baseV2*&&, std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&) /usr/include/c++/5/mutex:738
#24 0x7fb0cac0cec3 in std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base, std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/include/c++/5/future:387
#25 0x7fb0cac1e61f in std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1}::operator()() const /usr/include/c++/5/future:1658
#26 0x7fb0cac21a83 in void std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xadfa83)
#27 0x7fb0cac21879 in std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1} ()>::operator()() /usr/include/c++/5/functional:1520
#28 0x7fb0cac20953 in std::thread::_Impl<std::_Bind_simple<std::__future_base::_Async_state_impl<std::_Bind_simple<ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} ()>, void>::_Async_state_impl(ring::PeerConnection::PeerConnectionImpl::PeerConnectionImpl(std::function<void ()>&&, ring::Account&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unique_ptr<ring::GenericSocket<unsigned char>, std::default_delete<ring::GenericSocket<unsigned char> > >)::{lambda()#1} (&&)())::{lambda()#1} ()> >::_M_run() (/home/hlefeuvre/Development/ring-daemon/src/.libs/libring.so.0+0xade953)
#29 0x7fb0c9e78c7f (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8c7f)
#30 0x7fb0c99946b9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)
#31 0x7fb0c96ca41c in clone (/lib/x86_64-linux-gnu/libc.so.6+0x10741c)
0x62500817e100 is located 0 bytes inside of 8192-byte region [0x62500817e100,0x625008180100)
freed by thread T0 here:
#0 0x7fb0cc983caa in operator delete[](void*) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99caa)
#1 0x7fb0c9eac49d in std::basic_filebuf<char, std::char_traits<char> >::_M_destroy_internal_buffer() (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xec49d)
previously allocated by thread T71 here:
#0 0x7fb0cc9836b2 in operator new[](unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x996b2)
#1 0x7fb0c9eac467 in std::basic_filebuf<char, std::char_traits<char> >::_M_allocate_internal_buffer() (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xec467)
Thread T73 created by T71 here:
#0 0x7fb0cc920253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7fb0c9e78dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
Thread T71 created by T2 here:
#0 0x7fb0cc920253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7fb0c9e78dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
Thread T2 created by T0 here:
#0 0x7fb0cc920253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7fb0c9e78dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
SUMMARY: AddressSanitizer: heap-use-after-free ??:0 ??
Shadow bytes around the buggy address:
0x0c4a81027bd0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a81027be0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a81027bf0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a81027c00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c4a81027c10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c4a81027c20:[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a81027c30: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a81027c40: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a81027c50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a81027c60: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c4a81027c70: fd fd fd fd fd fd fd fd 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
Heap right redzone: fb
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack partial redzone: f4
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
==20292==ABORTING
```
This bug has potential security implications (CWE-416).Gnome 2018.07.15Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/26New Ring users from different timezone can't chat2022-11-14T21:52:31ZJami BotNew Ring users from different timezone can't chatIssue generated from Tuleap's migration script.
**Originally submitted by: Emmanuel Lepage Vallee (elv13)**
A detailed description of the bug. Use following fields for description field:
\* Environment:
2 users from 2 timezones ...Issue generated from Tuleap's migration script.
**Originally submitted by: Emmanuel Lepage Vallee (elv13)**
A detailed description of the bug. Use following fields for description field:
\* Environment:
2 users from 2 timezones
\* Reproduce steps:
1) create 1 ring account in Canada
2) create 1 ring account in France (or fake the timezone)
3) Try to send a chat message
\* Expected result:
1) Being able to chat
\* Actual result:
One of the peer will reject the other with a GNUTLS\_CERT\_NOT\_ACTIVATED error.Hugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/35heap-use-after-free during exit when video preview is running2022-11-14T21:52:32ZHugo Lefeuvreheap-use-after-free during exit when video preview is running**Affects**: latest daemon master
**How to reproduce**:
1. open GNOME client
2. go to settings and then media settings
3. make sure preview runs
4. quit app using "quit" function
The daemon crashes.
I can't reproduce it with `-pcd` bu...**Affects**: latest daemon master
**How to reproduce**:
1. open GNOME client
2. go to settings and then media settings
3. make sure preview runs
4. quit app using "quit" function
The daemon crashes.
I can't reproduce it with `-pcd` but `-cd` does crash.
**ASan and gdb stacktrace**:
```
=================================================================
==478==ERROR: AddressSanitizer: heap-use-after-free on address 0x608000105fd0 at pc 0x7ffff6ee1676 bp 0x7fffd46c4400 sp 0x7fffd46c3ba8
READ of size 11 at 0x608000105fd0 thread T49
#0 0x7ffff6ee1675 in memcmp (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x77675)
#1 0x7ffff34a1277 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x121277)
#2 0x475a8a in bool std::operator< <char, std::char_traits<char>, std::allocator<char> >(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&) /usr/include/c++/5/bits/basic_string.h:4989
#3 0x462a60 in std::less<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&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const /usr/include/c++/5/bits/stl_function.h:387
#4 0x4c413b in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::_M_lower_bound(std::_Rb_tree_node<std::pair<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> > > >*, std::_Rb_tree_node<std::pair<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> > > >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/5/bits/stl_tree.h:1628
#5 0x4c3694 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::lower_bound(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/5/bits/stl_tree.h:1091
#6 0x4c2f62 in std::map<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::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::lower_bound(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/5/bits/stl_map.h:916
#7 0x521844 in std::map<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::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) /usr/include/c++/5/bits/stl_map.h:499
#8 0x7da690 in ring::Smartools::setResolution(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int) /home/hlefeuvre/Development/ring-daemon/src/smartools.cpp:100
#9 0x9853a9 in ring::video::SinkClient::update(ring::video::Observable<std::shared_ptr<ring::VideoFrame> >*, std::shared_ptr<ring::VideoFrame> const&) /home/hlefeuvre/Development/ring-daemon/src/media/video/sinkclient.cpp:337
#10 0x71570e in ring::video::Observable<std::shared_ptr<ring::VideoFrame> >::notify(std::shared_ptr<ring::VideoFrame>) /home/hlefeuvre/Development/ring-daemon/src/media/video/video_base.h:97
#11 0x71345c in ring::video::VideoGenerator::publishFrame() /home/hlefeuvre/Development/ring-daemon/src/media/video/video_base.cpp:50
#12 0x72c859 in ring::video::VideoInput::captureFrame() /home/hlefeuvre/Development/ring-daemon/src/media/video/video_input.cpp:249
#13 0x72bf6d in ring::video::VideoInput::process() /home/hlefeuvre/Development/ring-daemon/src/media/video/video_input.cpp:162
#14 0x734c5d in void std::_Mem_fn_base<void (ring::video::VideoInput::*)(), true>::operator()<, void>(ring::video::VideoInput*) const /usr/include/c++/5/functional:600
#15 0x733c34 in void std::_Bind<std::_Mem_fn<void (ring::video::VideoInput::*)()> (ring::video::VideoInput*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) /usr/include/c++/5/functional:1074
#16 0x732d86 in void std::_Bind<std::_Mem_fn<void (ring::video::VideoInput::*)()> (ring::video::VideoInput*)>::operator()<, void>() /usr/include/c++/5/functional:1133
#17 0x731e1e in std::_Function_handler<void (), std::_Bind<std::_Mem_fn<void (ring::video::VideoInput::*)()> (ring::video::VideoInput*)> >::_M_invoke(std::_Any_data const&) (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x731e1e)
#18 0x4638a3 in std::function<void ()>::operator()() const /usr/include/c++/5/functional:2267
#19 0x7b0ee3 in ring::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>) /home/hlefeuvre/Development/ring-daemon/src/threadloop.cpp:38
#20 0x7b4b3f in void std::_Mem_fn_base<void (ring::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>), true>::operator()<std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()>, void>(ring::ThreadLoop*, std::reference_wrapper<std::thread::id>&&, std::function<bool ()>&&, std::function<void ()>&&, std::function<void ()>&&) const (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x7b4b3f)
#21 0x7b4874 in void std::_Bind_simple<std::_Mem_fn<void (ring::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>)> (ring::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()>)>::_M_invoke<0ul, 1ul, 2ul, 3ul, 4ul>(std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul>) (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x7b4874)
#22 0x7b45d9 in std::_Bind_simple<std::_Mem_fn<void (ring::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>)> (ring::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()>)>::operator()() (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x7b45d9)
#23 0x7b4569 in std::thread::_Impl<std::_Bind_simple<std::_Mem_fn<void (ring::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>)> (ring::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()>)> >::_M_run() (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x7b4569)
#24 0x7ffff3438c7f (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8c7f)
#25 0x7ffff49196b9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)
#26 0x7ffff2b9e41c in clone (/lib/x86_64-linux-gnu/libc.so.6+0x10741c)
0x608000105fd0 is located 48 bytes inside of 96-byte region [0x608000105fa0,0x608000106000)
freed by thread T0 here:
#0 0x7ffff6f03b2a in operator delete(void*) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99b2a)
#1 0x4bc9f7 in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<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> > > > >::deallocate(std::_Rb_tree_node<std::pair<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> > > >*, unsigned long) /usr/include/c++/5/ext/new_allocator.h:110
#2 0x4bc938 in std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<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> > > > > >::deallocate(std::allocator<std::_Rb_tree_node<std::pair<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> > > > >&, std::_Rb_tree_node<std::pair<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> > > >*, unsigned long) /usr/include/c++/5/bits/alloc_traits.h:517
#3 0x4bc87e in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::_M_put_node(std::_Rb_tree_node<std::pair<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> > > >*) /usr/include/c++/5/bits/stl_tree.h:495
#4 0x4bc719 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::_M_drop_node(std::_Rb_tree_node<std::pair<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> > > >*) /usr/include/c++/5/bits/stl_tree.h:562
#5 0x4bc3fb in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::_M_erase(std::_Rb_tree_node<std::pair<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> > > >*) /usr/include/c++/5/bits/stl_tree.h:1614
#6 0x4bc203 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::~_Rb_tree() /usr/include/c++/5/bits/stl_tree.h:858
#7 0x4bbd35 in std::map<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::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::~map() /usr/include/c++/5/bits/stl_map.h:96
#8 0x7d9ddf in ring::Smartools::~Smartools() /home/hlefeuvre/Development/ring-daemon/src/smartools.cpp:42
#9 0x7ffff2ad0ff7 (/lib/x86_64-linux-gnu/libc.so.6+0x39ff7)
previously allocated by thread T49 here:
#0 0x7ffff6f03532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
#1 0x4c4cc9 in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<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> > > > >::allocate(unsigned long, void const*) /usr/include/c++/5/ext/new_allocator.h:104
#2 0x4c4a5b in std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<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> > > > > >::allocate(std::allocator<std::_Rb_tree_node<std::pair<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> > > > >&, unsigned long) /usr/include/c++/5/bits/alloc_traits.h:491
#3 0x4c41c0 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::_M_get_node() /usr/include/c++/5/bits/stl_tree.h:491
#4 0x5226b8 in std::_Rb_tree_node<std::pair<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> > > >* std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&>&&, std::tuple<>&&) /usr/include/c++/5/bits/stl_tree.h:545
#5 0x5221e7 in std::_Rb_tree_iterator<std::pair<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> > > > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<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> > > >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&>&&, std::tuple<>&&) /usr/include/c++/5/bits/stl_tree.h:2170
#6 0x521951 in std::map<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::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) /usr/include/c++/5/bits/stl_map.h:502
#7 0x7da730 in ring::Smartools::setResolution(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int) /home/hlefeuvre/Development/ring-daemon/src/smartools.cpp:101
#8 0x9853a9 in ring::video::SinkClient::update(ring::video::Observable<std::shared_ptr<ring::VideoFrame> >*, std::shared_ptr<ring::VideoFrame> const&) /home/hlefeuvre/Development/ring-daemon/src/media/video/sinkclient.cpp:337
#9 0x71570e in ring::video::Observable<std::shared_ptr<ring::VideoFrame> >::notify(std::shared_ptr<ring::VideoFrame>) /home/hlefeuvre/Development/ring-daemon/src/media/video/video_base.h:97
#10 0x71345c in ring::video::VideoGenerator::publishFrame() /home/hlefeuvre/Development/ring-daemon/src/media/video/video_base.cpp:50
#11 0x72c859 in ring::video::VideoInput::captureFrame() /home/hlefeuvre/Development/ring-daemon/src/media/video/video_input.cpp:249
#12 0x72bf6d in ring::video::VideoInput::process() /home/hlefeuvre/Development/ring-daemon/src/media/video/video_input.cpp:162
#13 0x734c5d in void std::_Mem_fn_base<void (ring::video::VideoInput::*)(), true>::operator()<, void>(ring::video::VideoInput*) const /usr/include/c++/5/functional:600
#14 0x733c34 in void std::_Bind<std::_Mem_fn<void (ring::video::VideoInput::*)()> (ring::video::VideoInput*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) /usr/include/c++/5/functional:1074
#15 0x732d86 in void std::_Bind<std::_Mem_fn<void (ring::video::VideoInput::*)()> (ring::video::VideoInput*)>::operator()<, void>() /usr/include/c++/5/functional:1133
#16 0x731e1e in std::_Function_handler<void (), std::_Bind<std::_Mem_fn<void (ring::video::VideoInput::*)()> (ring::video::VideoInput*)> >::_M_invoke(std::_Any_data const&) (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x731e1e)
#17 0x4638a3 in std::function<void ()>::operator()() const /usr/include/c++/5/functional:2267
#18 0x7b0ee3 in ring::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>) /home/hlefeuvre/Development/ring-daemon/src/threadloop.cpp:38
#19 0x7b4b3f in void std::_Mem_fn_base<void (ring::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>), true>::operator()<std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()>, void>(ring::ThreadLoop*, std::reference_wrapper<std::thread::id>&&, std::function<bool ()>&&, std::function<void ()>&&, std::function<void ()>&&) const (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x7b4b3f)
#20 0x7b4874 in void std::_Bind_simple<std::_Mem_fn<void (ring::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>)> (ring::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()>)>::_M_invoke<0ul, 1ul, 2ul, 3ul, 4ul>(std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul>) (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x7b4874)
#21 0x7b45d9 in std::_Bind_simple<std::_Mem_fn<void (ring::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>)> (ring::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()>)>::operator()() (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x7b45d9)
#22 0x7b4569 in std::thread::_Impl<std::_Bind_simple<std::_Mem_fn<void (ring::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>)> (ring::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()>)> >::_M_run() (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x7b4569)
#23 0x7ffff3438c7f (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8c7f)
Thread T49 created by T0 here:
#0 0x7ffff6ea0253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7ffff3438dc2 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xb8dc2)
SUMMARY: AddressSanitizer: heap-use-after-free ??:0 memcmp
Shadow bytes around the buggy address:
0x0c1080018ba0: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
0x0c1080018bb0: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
0x0c1080018bc0: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
0x0c1080018bd0: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
0x0c1080018be0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c1080018bf0: fa fa fa fa fd fd fd fd fd fd[fd]fd fd fd fd fd
0x0c1080018c00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c1080018c10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c1080018c20: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c1080018c30: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c1080018c40: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
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
Heap right redzone: fb
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack partial redzone: f4
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
==478==ABORTING
Thread 50 "dring" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffd46c8700 (LWP 601)]
0x00007ffff2acc428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
54 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007ffff2acc428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1 0x00007ffff2ace02a in __GI_abort () at abort.c:89
#2 0x00007ffff6f17d99 in ?? () from /usr/lib/x86_64-linux-gnu/libasan.so.2
#3 0x00007ffff6f0a769 in ?? () from /usr/lib/x86_64-linux-gnu/libasan.so.2
#4 0x00007ffff6f0f5a2 in ?? () from /usr/lib/x86_64-linux-gnu/libasan.so.2
#5 0x00007ffff6f096e6 in __asan_report_error () from /usr/lib/x86_64-linux-gnu/libasan.so.2
#6 0x00007ffff6ee1691 in memcmp () from /usr/lib/x86_64-linux-gnu/libasan.so.2
#7 0x00007ffff34a1278 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#8 0x0000000000475a8b in std::operator< <char, std::char_traits<char>, std::allocator<char> > (__lhs="local height", __rhs="local width") at /usr/include/c++/5/bits/basic_string.h:4989
#9 0x0000000000462a61 in std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::operator() (this=0x1f41100 <ring::Smartools::getInstance()::instance_>,
__x="local height", __y="local width") at /usr/include/c++/5/bits/stl_function.h:387
#10 0x00000000004c413c in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::_M_lower_bound (this=0x1f41100 <ring::Smartools::getInstance()::instance_>, __x=0x608000105fa0, __y=0x1f41108 <ring::Smartools::getInstance()::instance_+8>, __k="local width")
at /usr/include/c++/5/bits/stl_tree.h:1628
#11 0x00000000004c3695 in std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<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> > >, std::_Select1st<std::pair<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> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::lower_bound
(this=0x1f41100 <ring::Smartools::getInstance()::instance_>, __k="local width") at /usr/include/c++/5/bits/stl_tree.h:1091
#12 0x00000000004c2f63 in std::map<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::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::lower_bound (this=0x1f41100 <ring::Smartools::getInstance()::instance_>, __x="local width")
at /usr/include/c++/5/bits/stl_map.h:916
#13 0x0000000000521845 in std::map<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::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<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> > > > >::operator[](std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) (
this=0x1f41100 <ring::Smartools::getInstance()::instance_>, __k=<unknown type in /home/hlefeuvre/Development/ring-daemon/bin/dring, CU 0x19c75c, DIE 0x1b821d>)
at /usr/include/c++/5/bits/stl_map.h:499
#14 0x00000000007da691 in ring::Smartools::setResolution (this=0x1f41100 <ring::Smartools::getInstance()::instance_>, id="local", width=1280, height=720) at smartools.cpp:100
#15 0x00000000009853aa in ring::video::SinkClient::update (this=0x60f000044c00, frame_p=std::shared_ptr (count 2, weak 0) 0x607000120050) at sinkclient.cpp:337
#16 0x000000000071570f in ring::video::Observable<std::shared_ptr<ring::VideoFrame> >::notify (this=0x617000056010, data=std::shared_ptr (count 2, weak 0) 0x607000120050) at video_base.h:97
#17 0x000000000071345d in ring::video::VideoGenerator::publishFrame (this=0x617000056010) at video_base.cpp:50
#18 0x000000000072c85a in ring::video::VideoInput::captureFrame (this=0x617000056010) at video_input.cpp:249
#19 0x000000000072bf6e in ring::video::VideoInput::process (this=0x617000056010) at video_input.cpp:162
#20 0x0000000000734c5e in std::_Mem_fn_base<void (ring::video::VideoInput::*)(), true>::operator()<, void>(ring::video::VideoInput*) const (this=0x6030008d4150, __object=0x617000056010)
at /usr/include/c++/5/functional:600
#21 0x0000000000733c35 in std::_Bind<std::_Mem_fn<void (ring::video::VideoInput::*)()> (ring::video::VideoInput*)>::__call<void, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) (this=0x6030008d4150,
__args=<unknown type in /home/hlefeuvre/Development/ring-daemon/bin/dring, CU 0x75e7bf, DIE 0x79c8c4>) at /usr/include/c++/5/functional:1074
#22 0x0000000000732d87 in std::_Bind<std::_Mem_fn<void (ring::video::VideoInput::*)()> (ring::video::VideoInput*)>::operator()<, void>() (this=0x6030008d4150) at /usr/include/c++/5/functional:1133
#23 0x0000000000731e1f in std::_Function_handler<void (), std::_Bind<std::_Mem_fn<void (ring::video::VideoInput::*)()> (ring::video::VideoInput*)> >::_M_invoke(std::_Any_data const&) (__functor=...)
at /usr/include/c++/5/functional:1871
```
This is CWE-416 but security implications are negligible IMO.Hugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/36device revokation: password check failure and crash2022-11-14T21:52:32ZHugo Lefeuvredevice revokation: password check failure and crash**Affects**: latest daemon master with opendht from the contribs
**How to reproduce**:
You will need an account A with non-empty password (let's say "123456789")
1. open GNOME client
2. go to account A's settings
3. try to revoke devi...**Affects**: latest daemon master with opendht from the contribs
**How to reproduce**:
You will need an account A with non-empty password (let's say "123456789")
1. open GNOME client
2. go to account A's settings
3. try to revoke device, password is asked
4. enter empty password
Expected: daemon detects bad password and GNOME client displays bad password dialog.
What happens: daemon fails to catch bad password & dht crashes.
**gdb stacktrace**:
```
[1533936396.816|15896|ringaccount.cpp :2119 ] Query for local certificate store: 4e9fcf8b3abab01b5bf17a974090a0c91f7c3f87: 1 found.
[Thread 0x7fffeaddf700 (LWP 15901) exited]
[Thread 0x7fffe8ddb700 (LWP 15905) exited]
[1533936402.917|15896|ringaccount.cpp :3292 ] [Account 9fba7138a1fc3f51] found 1 devices for c2383a4923f3f3ead1b9f725456e8ff9d69581a3
[1533936413.395|15913|ringaccount.cpp :926 ] [Account 9fba7138a1fc3f51] reading account archive
[1533936413.395|15913|fileutils.cpp :424 ] Reading archive from /home/hlefeuvre/.local/share/ring/9fba7138a1fc3f51/export.gz
[1533936414.505|15913|fileutils.cpp :441 ] Error decrypting archive: Can't decrypt data
[1533936414.505|15913|thread_pool.cpp :79 ] Exception running task: Can't decrypt data
Dropping packet with high delay: 0.826318
[1533936418.547|15913|ringaccount.cpp :926 ] [Account 9fba7138a1fc3f51] reading account archive
[1533936418.547|15913|fileutils.cpp :424 ] Reading archive from /home/hlefeuvre/.local/share/ring/9fba7138a1fc3f51/export.gz
[1533936418.547|15913|accountarchive.cpp:31 ] Loading account archive (10664 bytes)
[New Thread 0x7fffe8ddb700 (LWP 15932)]
[Thread 0x7fffe8ddb700 (LWP 15932) exited]
Thread 1 "dring" received signal SIGSEGV, Segmentation fault.
0x0000000000b08f94 in dht::crypto::Certificate::getExpiration() const ()
(gdb) bt
#0 0x0000000000b08f94 in dht::crypto::Certificate::getExpiration() const ()
#1 0x0000000000b0c6a2 in dht::crypto::RevocationList::sign(dht::crypto::PrivateKey const&, dht::crypto::Certificate const&, std::chrono::duration<long, std::ratio<1l, 1000000000l> >) ()
#2 0x00000000006569a7 in dht::crypto::RevocationList::sign (this=0x6030003516b0, id=...) at /home/hlefeuvre/Development/ring-daemon/contrib/x86_64-linux-gnu/include/opendht/crypto.h:212
#3 0x000000000060eeba in ring::RingAccount::<lambda(const std::shared_ptr<dht::crypto::Certificate>&)>::operator()(const std::shared_ptr<dht::crypto::Certificate> &) (__closure=0x6080000958a0,
crt=std::shared_ptr (count 4, weak 0) 0x60800000fe30) at ringaccount.cpp:1123
#4 0x000000000063eda3 in std::_Function_handler<void(const std::shared_ptr<dht::crypto::Certificate>&), ring::RingAccount::revokeDevice(const string&, const string&)::<lambda(const std::shared_ptr<dht::crypto::Certificate>&)> >::_M_invoke(const std::_Any_data &, const std::shared_ptr<dht::crypto::Certificate> &) (__functor=..., __args#0=std::shared_ptr (count 4, weak 0) 0x60800000fe30)
at /usr/include/c++/5/functional:1871
#5 0x0000000000678909 in std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>::operator()(std::shared_ptr<dht::crypto::Certificate> const&) const (this=0x7fffffffcb80,
__args#0=std::shared_ptr (count 4, weak 0) 0x60800000fe30) at /usr/include/c++/5/functional:2267
#6 0x000000000062720f in ring::RingAccount::findCertificate(dht::Hash<20ul> const&, std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>&&) (this=0x623000007110, h=...,
cb=<unknown type in /home/hlefeuvre/Development/ring-daemon/bin/dring, CU 0x4b98e6, DIE 0x5f4616>) at ringaccount.cpp:2580
#7 0x000000000060f774 in ring::RingAccount::revokeDevice (this=0x623000007110, password="", device="25a30306bd68013858d55f9edad096c65f523048") at ringaccount.cpp:1133
#8 0x0000000000527061 in DRing::revokeDevice (accountID="9fba7138a1fc3f51", password="", deviceID="25a30306bd68013858d55f9edad096c65f523048") at configurationmanager.cpp:308
#9 0x00000000004d163b in DBusConfigurationManager::revokeDevice (this=0x61500001f980, accountID="9fba7138a1fc3f51", password="", device="25a30306bd68013858d55f9edad096c65f523048")
at dbusconfigurationmanager.cpp:93
#10 0x00000000004dcf7b in cx::ring::Ring::ConfigurationManager_adaptor::_revokeDevice_stub (this=0x61500001f980, call=...) at dbusconfigurationmanager.adaptor.h:1495
#11 0x00000000004fa932 in DBus::Callback<cx::ring::Ring::ConfigurationManager_adaptor, DBus::Message, DBus::CallMessage const&>::call (this=0x6030000249a0, param=...)
at /home/hlefeuvre/Development/ring-daemon/contrib/x86_64-linux-gnu/include/dbus-c++-1/dbus-c++/util.h:283
#12 0x0000000000505cff in DBus::Slot<DBus::Message, DBus::CallMessage const&>::call(DBus::CallMessage const&) const () at /usr/include/c++/5/ext/new_allocator.h:120
#13 0x0000000000504df2 in DBus::InterfaceAdaptor::dispatch_method(DBus::CallMessage const&) () at /usr/include/c++/5/ext/new_allocator.h:120
#14 0x000000000050d777 in DBus::ObjectAdaptor::handle_message(DBus::Message const&) () at /usr/include/c++/5/ext/new_allocator.h:120
#15 0x000000000050ccee in DBus::ObjectAdaptor::Private::message_function_stub(DBusConnection*, DBusMessage*, void*) () at /usr/include/c++/5/ext/new_allocator.h:120
#16 0x00007ffff6c3f813 in ?? () from /lib/x86_64-linux-gnu/libdbus-1.so.3
#17 0x00007ffff6c30d94 in dbus_connection_dispatch () from /lib/x86_64-linux-gnu/libdbus-1.so.3
#18 0x00000000004fc812 in DBus::Connection::Private::do_dispatch() () at /usr/include/c++/5/ext/new_allocator.h:120
#19 0x00000000004ff779 in DBus::Dispatcher::dispatch_pending(std::__cxx11::list<DBus::Connection::Private*, std::allocator<DBus::Connection::Private*> >&) ()
at /usr/include/c++/5/ext/new_allocator.h:120
#20 0x00000000004ff577 in DBus::Dispatcher::dispatch_pending() () at /usr/include/c++/5/ext/new_allocator.h:120
#21 0x00000000005032ca in DBus::BusDispatcher::do_iteration() () at /usr/include/c++/5/ext/new_allocator.h:120
#22 0x0000000000502f78 in DBus::BusDispatcher::enter() () at /usr/include/c++/5/ext/new_allocator.h:120
#23 0x0000000000459fcf in DBusClient::event_loop (this=0x60600000a340) at dbusclient.cpp:250
#24 0x00000000004541d1 in main (argc=2, argv=0x7fffffffdc88) at main.cpp:236
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/45heap-use-after-free in PulseLayer::getCaptureDeviceList2022-11-14T21:52:32ZHugo Lefeuvreheap-use-after-free in PulseLayer::getCaptureDeviceList**Affects:** latest ring daemon master
PulseLayer::getCaptureDeviceList seems to be affected by a race condition and resulting heap-use-after-free (media/audio/pulseaudio/pulselayer.cpp:242).
**Logs with ASan crash report:**
```
fe38c...**Affects:** latest ring daemon master
PulseLayer::getCaptureDeviceList seems to be affected by a race condition and resulting heap-use-after-free (media/audio/pulseaudio/pulselayer.cpp:242).
**Logs with ASan crash report:**
```
fe38c3ef98edd87ace33efb3183230194f8fba88
[1536090351.878| 6964|ringaccount.cpp :2591 ] Can't set certificate status for existing contacts 3c2a2fae84be1713e6d68d39360faa7441220c00
[1536090351.882| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090351.903| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090351.912| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090351.922| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090351.931| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090351.942| 6964|namedirectory.cpp :66 ] Can't parse URI:
[1536090351.942| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090351.945| 6964|namedirectory.cpp :66 ] Can't parse URI:
[1536090351.950| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090351.961| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090351.968| 6964|manager.cpp :2414 ] Audio manager chosen already in use. No changes made.
[1536090351.968| 6964|configurationmanager.cpp:621 ] Get audio plugin default
[1536090351.970| 6964|pulselayer.cpp :153 ] Waiting....
[1536090351.970| 7013|pulselayer.cpp :153 ] Waiting....
[1536090351.970| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090351.970| 7013|pulselayer.cpp :153 ] Waiting....
[1536090351.971| 7013|pulselayer.cpp :157 ] Connection to PulseAudio server established
[1536090351.971| 7013|pulselayer.cpp :186 ] Updating PulseAudio sink list
[1536090351.971| 7013|pulselayer.cpp :202 ] Updating PulseAudio source list
[1536090351.971| 7013|pulselayer.cpp :218 ] Updating PulseAudio server infos
[1536090351.971| 6964|manager.cpp :2164 ] No audio layer created, possibly built without audio support
=================================================================
==6964==ERROR: AddressSanitizer: heap-use-after-free on address 0x61800001f188 at pc 0x0000008cd866 bp 0x7fff07e3e190 sp 0x7fff07e3e180
READ of size 8 at 0x61800001f188 thread T0
[1536090351.972| 7013|pulselayer.cpp :635 ] PulseAudio server info:
Server name: pulseaudio
Server version: 8.0
Default Sink alsa_output.pci-0000_00_1b.0.analog-stereo
Default Source alsa_input.usb-046d_HD_Pro_Webcam_C920_8A8B667F-02.analog-stereo
Default Sample Specification: s16le 2ch 44100Hz
Default Channel Map: front-left,front-right
[1536090352.012| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090352.020| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090352.029| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090352.039| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
#0 0x8cd865 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_length(unsigned long) /usr/include/c++/5/bits/basic_string.h:131
#1 0x8cd865 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_set_length(unsigned long) /usr/include/c++/5/bits/basic_string.h:164
#2 0x8cd865 in void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag) /usr/include/c++/5/bits/basic_string.tcc:236
#3 0x8cd865 in void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct_aux<char*>(char*, char*, std::__false_type) /usr/include/c++/5/bits/basic_string.h:195
#4 0x8cd865 in void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*) /usr/include/c++/5/bits/basic_string.h:214
#5 0x8cd865 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/5/bits/basic_string.h:400
#6 0x8cd865 in void __gnu_cxx::new_allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::construct<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, 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> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/5/ext/new_allocator.h:120
#7 0x8cd865 in void std::allocator_traits<std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::construct<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(std::allocator<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> > const&) /usr/include/c++/5/bits/alloc_traits.h:530
#8 0x8cd865 in void std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::emplace_back<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&) /usr/include/c++/5/bits/vector.tcc:96
#9 0x8cd865 in ring::PulseLayer::getCaptureDeviceList[abi:cxx11]() const /home/hlefeuvre/Development/ring-daemon/src/media/audio/pulseaudio/pulselayer.cpp:242
[1536090352.048| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090352.057| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090352.067| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090352.076| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090352.086| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090352.094| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
[1536090352.102| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
#10 0x6fd2ea in ring::Manager::getAudioInputDeviceList[abi:cxx11]() /home/hlefeuvre/Development/ring-daemon/src/manager.cpp:2223
[1536090352.114| 6985|certstore.cpp :75 ] CertificateStore: loaded 12 local certificates.
#11 0x50acb7 in DRing::getAudioInputDeviceList[abi:cxx11]() /home/hlefeuvre/Development/ring-daemon/src/client/configurationmanager.cpp:578
#12 0x4bf03f in DBusConfigurationManager::getAudioInputDeviceList[abi:cxx11]() /home/hlefeuvre/Development/ring-daemon/bin/dbus/dbusconfigurationmanager.cpp:265
#13 0x4bf03f in cx::ring::Ring::ConfigurationManager_adaptor::_getAudioInputDeviceList_stub(DBus::CallMessage const&) /home/hlefeuvre/Development/ring-daemon/bin/dbus/dbusconfigurationmanager.adaptor.h:1993
#14 0x4b0cb4 in DBus::Callback<cx::ring::Ring::ConfigurationManager_adaptor, DBus::Message, DBus::CallMessage const&>::call(DBus::CallMessage const&) const /home/hlefeuvre/Development/ring-daemon/contrib/x86_64-linux-gnu/include/dbus-c++-1/dbus-c++/util.h:283
#15 0x4e39ee in DBus::Slot<DBus::Message, DBus::CallMessage const&>::call(DBus::CallMessage const&) const (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x4e39ee)
#16 0x4e280f in DBus::InterfaceAdaptor::dispatch_method(DBus::CallMessage const&) (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x4e280f)
#17 0x4ecf1a in DBus::ObjectAdaptor::handle_message(DBus::Message const&) (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x4ecf1a)
#18 0x4ec491 in DBus::ObjectAdaptor::Private::message_function_stub(DBusConnection*, DBusMessage*, void*) (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x4ec491)
#19 0x7fb37e9cc812 (/lib/x86_64-linux-gnu/libdbus-1.so.3+0x21812)
#20 0x7fb37e9bdd93 in dbus_connection_dispatch (/lib/x86_64-linux-gnu/libdbus-1.so.3+0x12d93)
#21 0x4d97b1 in DBus::Connection::Private::do_dispatch() (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x4d97b1)
#22 0x4dd080 in DBus::Dispatcher::dispatch_pending(std::__cxx11::list<DBus::Connection::Private*, std::allocator<DBus::Connection::Private*> >&) (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x4dd080)
#23 0x4dce7e in DBus::Dispatcher::dispatch_pending() (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x4dce7e)
#24 0x4e0c0d in DBus::BusDispatcher::do_iteration() (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x4e0c0d)
#25 0x4e08bb in DBus::BusDispatcher::enter() (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x4e08bb)
#26 0x4590a2 in DBusClient::event_loop() /home/hlefeuvre/Development/ring-daemon/bin/dbus/dbusclient.cpp:250
#27 0x45131f in main /home/hlefeuvre/Development/ring-daemon/bin/main.cpp:236
#28 0x7fb37a84482f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
#29 0x457f18 in _start (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x457f18)
0x61800001f188 is located 264 bytes inside of 896-byte region [0x61800001f080,0x61800001f400)
freed by thread T34 (threaded-ml) here:
#0 0x7fb37ec90b2a in operator delete(void*) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99b2a)
#1 0x8d5953 in __gnu_cxx::new_allocator<ring::PaDeviceInfos>::deallocate(ring::PaDeviceInfos*, unsigned long) /usr/include/c++/5/ext/new_allocator.h:110
#2 0x8d5953 in std::allocator_traits<std::allocator<ring::PaDeviceInfos> >::deallocate(std::allocator<ring::PaDeviceInfos>&, ring::PaDeviceInfos*, unsigned long) /usr/include/c++/5/bits/alloc_traits.h:517
#3 0x8d5953 in std::_Vector_base<ring::PaDeviceInfos, std::allocator<ring::PaDeviceInfos> >::_M_deallocate(ring::PaDeviceInfos*, unsigned long) /usr/include/c++/5/bits/stl_vector.h:178
#4 0x8d5953 in void std::vector<ring::PaDeviceInfos, std::allocator<ring::PaDeviceInfos> >::_M_emplace_back_aux<ring::PaDeviceInfos>(ring::PaDeviceInfos&&) /usr/include/c++/5/bits/vector.tcc:438
previously allocated by thread T34 (threaded-ml) here:
#0 0x7fb37ec90532 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x99532)
#1 0x8d4e1b in __gnu_cxx::new_allocator<ring::PaDeviceInfos>::allocate(unsigned long, void const*) /usr/include/c++/5/ext/new_allocator.h:104
#2 0x8d4e1b in std::allocator_traits<std::allocator<ring::PaDeviceInfos> >::allocate(std::allocator<ring::PaDeviceInfos>&, unsigned long) /usr/include/c++/5/bits/alloc_traits.h:491
#3 0x8d4e1b in std::_Vector_base<ring::PaDeviceInfos, std::allocator<ring::PaDeviceInfos> >::_M_allocate(unsigned long) /usr/include/c++/5/bits/stl_vector.h:170
#4 0x8d4e1b in void std::vector<ring::PaDeviceInfos, std::allocator<ring::PaDeviceInfos> >::_M_emplace_back_aux<ring::PaDeviceInfos>(ring::PaDeviceInfos&&) /usr/include/c++/5/bits/vector.tcc:412
#5 0x15aed8f (/home/hlefeuvre/Development/ring-daemon/bin/dring+0x15aed8f)
Thread T34 (threaded-ml) created by T0 here:
#0 0x7fb37ec2d253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7fb37a1e984c in pa_thread_new (/usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-8.0.so+0x4f84c)
SUMMARY: AddressSanitizer: heap-use-after-free /usr/include/c++/5/bits/basic_string.h:131 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_length(unsigned long)
Shadow bytes around the buggy address:
0x0c307fffbde0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c307fffbdf0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c307fffbe00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c307fffbe10: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c307fffbe20: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c307fffbe30: fd[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c307fffbe40: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c307fffbe50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c307fffbe60: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c307fffbe70: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c307fffbe80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
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
Heap right redzone: fb
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack partial redzone: f4
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
==6964==ABORTING
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/140ios (lte) -> android, sometimes there is a 30 seconds delay during media nego...2019-08-29T14:44:21ZSébastien Blinios (lte) -> android, sometimes there is a 30 seconds delay during media negotiationMakes the call unusable.Makes the call unusable.Iteration 14Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/134Call can cut after 30 secs if bad transport selected2019-08-29T14:44:20ZSébastien BlinCall can cut after 30 secs if bad transport selectedIf we see the following logs at the start of a call:
```
[1565812513.241| 1648|instant_messaging.cpp:184 ] pjsip_dlg_send_request failed: Unsuitable transport selected (PJSIP_ETPNOTSUITABLE)
```
The call will cut after 30 secs because...If we see the following logs at the start of a call:
```
[1565812513.241| 1648|instant_messaging.cpp:184 ] pjsip_dlg_send_request failed: Unsuitable transport selected (PJSIP_ETPNOTSUITABLE)
```
The call will cut after 30 secs because the SIP message is not sent.
A bad ip is resolved in sip_resolve.c. Currently digging.Iteration 14Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/48missing call to callFailure in timeout case2022-11-14T21:52:32ZHugo Lefeuvremissing call to callFailure in timeout caseIntroduced in 9a12c78a.
In the case where call timeout is reached, the daemon calls hangup(486), terminating the call. However this hangup call is not followed by any kind of callFailure() call meaning that the tone and media states in ...Introduced in 9a12c78a.
In the case where call timeout is reached, the daemon calls hangup(486), terminating the call. However this hangup call is not followed by any kind of callFailure() call meaning that the tone and media states in the manager will not be reinitialized. As a consequence the daemon will continue to ring even if the call has ended.
Should be fixed asap.Hugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/52restclient.cpp:59:16: error: 'pollEvents' is not a member of 'DRing'2021-12-07T18:13:27Zszotsakirestclient.cpp:59:16: error: 'pollEvents' is not a member of 'DRing'I get compilation error when trying to compile today's ring-daemon snapshot (only ring-daemon, in a separate container):
```
[ 197s] restclient.cpp: In member function 'int RestClient::event_loop()':
[ 197s] restclient.cpp:59:16: erro...I get compilation error when trying to compile today's ring-daemon snapshot (only ring-daemon, in a separate container):
```
[ 197s] restclient.cpp: In member function 'int RestClient::event_loop()':
[ 197s] restclient.cpp:59:16: error: 'pollEvents' is not a member of 'DRing'
[ 197s] DRing::pollEvents();
[ 197s] ^~~~~~~~~~
[ 198s] make[3]: *** [Makefile:547: libclient_rest_la-restclient.lo] Error 1
[ 198s] make[3]: *** Waiting for unfinished jobs....
```
Command line switches:
```
%configure --with-alsa \
--with-pulse \
--with-jack \
--with-dbus \
--enable-video \
--with-sdes \
--with-speex \
--with-speexdsp \
--with-opus \
--with-upnp \
--with-natpmp \
--enable-ipv6 \
--enable-accel \
--enable-ringns \
--without-nodejs \
--with-restcpp \
--without-portaudio \
--disable-static
```Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/56Enhance failure messages2022-11-26T22:44:58ZSébastien BlinEnhance failure messagesWhen a user send a message to a contact, the status of this message can change to "failed". The major problem here, is, (as discussed in https://git.ring.cx/savoirfairelinux/ring-project/issues/517) it's totally unclear for the user why ...When a user send a message to a contact, the status of this message can change to "failed". The major problem here, is, (as discussed in https://git.ring.cx/savoirfairelinux/ring-project/issues/517) it's totally unclear for the user why the message failed.
The failed status MUST be re-designed to explain what is wrong for the user.
Is it a network issue? A confirmation timeout? Because no devices is detected? etc.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/66connectivity issues leading to unstable file transfer2020-09-30T19:33:15ZHugo Lefeuvreconnectivity issues leading to unstable file transferThe file transfer feature is quite unreliable on my devices/network, around 1/3 of attempted file transfers fail.
Devices: Android (WiFi + 4G), GNOME client (Ethernet)
I have investigated the issue, and many of these failures seem to b...The file transfer feature is quite unreliable on my devices/network, around 1/3 of attempted file transfers fail.
Devices: Android (WiFi + 4G), GNOME client (Ethernet)
I have investigated the issue, and many of these failures seem to be due to connectivity issues at unfavorable moments.
**First scenario:**
1. A sends rx DHT request to B
2. B receives rx DHT request and replies with a list of addresses on the DHT
3. A does not receive the answer in time and timeouts
Typical logs:
```
[1542546917.185|27153|p2p.cpp :526 ] [Account b9243250525b44cb] [CNX] rx DHT request from 8004386f1052cae68e543ebb87992612f218ded6
[1542546917.186|27153|ringaccount.cpp :2438 ] Found peer device: 8004386f1052cae68e543ebb87992612f218ded6 account:3c2a2fae84be1713e6d68d39360
faa7441220c00 CA:310d17e467cfb06ee20e2ddc0e75ebee0ba55640
[1542546917.187|27153|sip_utils.cpp :203 ] Registered thread 0x7f7cd12ac158 (0x69A0)
[1542546917.187| 7535|sip_utils.cpp :203 ] Registered thread 0x7f7cb77fd158 (0x69A0)
[1542546917.187|27153|turn_transport.cpp:357 ] Connecting to TURN 51.254.39.157:3478
[1542546917.187|27153|turn_transport.cpp:357 ] Connecting to TURN 51.254.39.157:3478
[1542546917.187| 7536|sip_utils.cpp :203 ] Registered thread 0x7f7cb6ffc158 (0x69A0)
[1542546917.210| 7536|turn_transport.cpp:214 ] TURN server disconnected (Deallocated)
[1542546917.212| 7535|turn_transport.cpp:211 ] TURN server ready, peer relay address: 51.254.39.157:28253
[1542546917.218|27153|p2p.cpp :558 ] [Account b9243250525b44cb] [CNX] authorized peer connection from 141.x.x.x
[1542546917.218|27153|p2p.cpp :582 ] [Account b9243250525b44cb] [CNX] connection accepted, DHT reply to 8004386f1052cae68e543ebb8799
2612f218ded6
[1542546920.329|27857|ringaccount.cpp :2051 ] [Account b9243250525b44cb] Dht status : IPv4 connected; IPv6 connecting
[1542546920.336|27857|ringaccount.cpp :2051 ] [Account b9243250525b44cb] Dht status : IPv4 connected; IPv6 connected
[1542546921.933|27149|siptransport.cpp :223 ] pjsip transport@0x7f7c8800bfb0 DTLS to 100.124.24.241 -> DESTROY
[1542546921.933|27149|siptransport.cpp :249 ] unmap pjsip transport@0x7f7c8800bfb0 {SipTransport@(nil)}
[1542546921.933|27149|sips_transport_ice.cpp:214 ] SipsIceTransport@0x7f7c8800bf40: destroying
[1542546921.933|27149|sips_transport_ice.cpp:256 ] ~SipIceTransport@0x7f7c8800bf40 {tr=0x7f7c8800bfb0}
[1542546921.934|27149|sips_transport_ice.cpp:277 ] ~SipIceTransport@0x7f7c8800bf40 {tr=0x7f7c8800bfb0} bye
```
Nothing comes after that. Peer seems to time out.
The SIP logs are not are not always present and might be unrelated, but I didn't remove them just in case.
The `IPv4 connected; IPv6 connecting` lines mean changes in IPv6 connectivity right ?Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/67Messages fails when flooding2018-11-28T20:30:43ZSébastien BlinMessages fails when flooding# How to reproduce
In a conversation, send quickly a lot of messages. After some messages, the messages are not sent and fails immediately.
# Expected result
All messages should be sent# How to reproduce
In a conversation, send quickly a lot of messages. After some messages, the messages are not sent and fails immediately.
# Expected result
All messages should be sentAdrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/76Mute is broken since some patches on Linux.2019-01-11T18:45:50ZSébastien BlinMute is broken since some patches on Linux.I still don't know since when :)I still don't know since when :)Philippe GorleyPhilippe Gorleyhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/141file transfer: cancel is broken2019-09-12T13:34:58ZSébastien Blinfile transfer: cancel is brokenIteration 15Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/92Incoming SIP calls fail2019-08-15T13:53:25ZFrançois Naggar-TremblayIncoming SIP calls failUsing linphone accountsUsing linphone accountsMing Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/155Jams: Auth error should stop account creation2019-09-28T15:11:04ZSébastien BlinJams: Auth error should stop account creationAnd a deadlock occursAnd a deadlock occursIteration 16 (POC prep)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/156[Split account]Backup account with password is broken2019-09-28T15:11:02ZSébastien Blin[Split account]Backup account with password is brokenIteration 16 (POC prep)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/147[Split account]Import from device crash on multiple platforms2019-09-28T15:10:58ZSébastien Blin[Split account]Import from device crash on multiple platformsIteration 16 (POC prep)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/163Can't search amarok@ns.jami.net2019-09-28T15:10:48ZSébastien BlinCan't search amarok@ns.jami.netIteration 16 (POC prep)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/158Android: video frozen in conference, or black screen2019-11-21T15:01:34ZSébastien BlinAndroid: video frozen in conference, or black screenIteration 17 (Video conferences stabilization)Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/127p2p file transfer: there is no public ip in ICE msg2019-08-12T13:53:00ZSébastien Blinp2p file transfer: there is no public ip in ICE msgall is in the title, the public ip is missing, so the negotiation via TURN doesn't work during the ICE negotiation (only when fallbacking)all is in the title, the public ip is missing, so the negotiation via TURN doesn't work during the ICE negotiation (only when fallbacking)Iteration 12Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/150[JAMS] Revoke device doesn't work2021-04-19T14:29:51ZSébastien Blin[JAMS] Revoke device doesn't workNew release 1Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/120calls: multi-device doesn't seem to work2020-09-30T21:37:08ZMohamed Fenjirocalls: multi-device doesn't seem to workScenario:
Call from account1 (one device) to account2 (two devices). Place a call. Accept one device of account2, the call is kept as pending on the other clients.
Use case:
Once the call is accepted on one of the device, the call sho...Scenario:
Call from account1 (one device) to account2 (two devices). Place a call. Accept one device of account2, the call is kept as pending on the other clients.
Use case:
Once the call is accepted on one of the device, the call should go in CURRENT and close on the others (device of Acc1 and 2nd device of Acc2).Iteration 9Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/111Daemon crashes upon attempting to send a SIP text message2019-06-10T14:32:57ZMaxim CournoyerDaemon crashes upon attempting to send a SIP text message### Reproducer
1. Configure SIP account (I used voip.ms with the Gnome client)
2. Attempt to send a text message to a phone number (XXXXXXXXXX).
3. Observe the assertion crash below:
```
Starting program: /gnu/store/5ly4xxm5rq6w7rbhlgm...### Reproducer
1. Configure SIP account (I used voip.ms with the Gnome client)
2. Attempt to send a text message to a phone number (XXXXXXXXXX).
3. Observe the assertion crash below:
```
Starting program: /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/ring/dring -cdp
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/gnu/store/h90vnqw0nwd0hhm1l5dgxsdrigddfmq4-glibc-2.28/lib/libthread_db.so.1".
Jami Daemon 7.5.0, by Savoir-faire Linux 2004-2018
https://jami.net/
[Video support enabled]
[Detaching after fork from child process 2206]
[1558321843.073| 2205|account_factory.cpp:40 ] registered SIP account
[1558321843.073| 2205|account_factory.cpp:43 ] registered RING account
[1558321843.073| 2205|data_transfer.cpp :663 ] [XFER] facade created, pimpl @0x4bff90
[New Thread 0x7ffff2d60700 (LWP 2207)]
[1558321843.073| 2205|ringbufferpool.cpp:118 ] Ringbuffer created with id 'audiolayer_id'
[1558321843.192| 2205|video_device.h :129 ] Default video settings: 960x540, 30 FPS
[1558321843.192| 2205|video_device_monitor.cpp:197 ] Manager not initialized yet
[New Thread 0x7ffff23cf700 (LWP 2209)]
[1558321843.192| 2205|manager.cpp :639 ] Not initialized
[1558321843.193| 2205|manager.cpp :639 ] Not initialized
23:10:43.193 os_core_unix.c !pjlib 2.7.2 for POSIX initialized
[1558321843.193| 2205|manager.cpp :700 ] pjsip version 2.7.2 for x86_64-unknown-linux-gnu initialized
[1558321843.193| 2205|manager.cpp :703 ] GNU TLS version 3.6.5 initialized
[1558321843.193| 2205|ice_transport.cpp :189 ] [ice] added host stun server
[1558321843.193| 2205|ice_transport.cpp :189 ] [ice] added host stun server
[1558321843.193| 2205|manager.cpp :710 ] Configuration file path: /home/mcournoyer/.config/ring/dring.yml
[1558321843.193| 2205|manager.cpp :419 ] Could not open configuration file
[New Thread 0x7ffff1a3e700 (LWP 2210)]
[1558321843.195| 2205|pulselayer.cpp :136 ] Waiting....
[1558321843.196| 2210|pulselayer.cpp :136 ] Waiting....
[1558321843.196| 2210|pulselayer.cpp :136 ] Waiting....
[1558321843.196| 2210|pulselayer.cpp :140 ] Connection to PulseAudio server established
[1558321843.196| 2210|pulselayer.cpp :169 ] Updating PulseAudio sink list
[1558321843.196| 2210|pulselayer.cpp :185 ] Updating PulseAudio source list
[1558321843.196| 2210|pulselayer.cpp :201 ] Updating PulseAudio server infos
[New Thread 0x7fffed0ad700 (LWP 2211)]
[1558321843.199| 2210|pulselayer.cpp :592 ] PulseAudio server info:
Server name: pulseaudio
Server version: 12.2
Default Sink alsa_output.pci-0000_00_1f.3.analog-stereo
Default Source alsa_input.pci-0000_00_1f.3.analog-stereo
Default Sample Specification: s16le 2ch 44100Hz
Default Channel Map: front-left,front-right
[Thread 0x7fffed0ad700 (LWP 2211) exited]
[1558321851.729| 2205|system_codec_container.cpp:157 ] Encoders found: H264 VP8 MP4V-ES H263-1998 opus G722 speex speex speex PCMA PCMU
[1558321851.729| 2205|system_codec_container.cpp:158 ] Decoders found: H264 VP8 MP4V-ES H263-1998 opus G722 speex speex speex PCMA PCMU
[1558321851.729| 2205|sipvoiplink.cpp :511 ] Using SIP nameserver: 192.168.10.1
[1558321851.729| 2205|sipvoiplink.cpp :509 ] Error printing SIP nameserver: Unknown error -6
[1558321851.729| 2205|siptransport.cpp :201 ] SipTransportBroker@0x4bbd20
[New Thread 0x7fffdbfff700 (LWP 2255)]
[1558321851.730| 2205|sipvoiplink.cpp :605 ] SIPVoIPLink@0x4bc460
[1558321851.730| 2255|sip_utils.cpp :203 ] Registered thread 0x7fffdbfff4d0 (0x89D)
[1558321851.730| 2205|sipvoiplink.cpp :610 ] ~SIPVoIPLink@0x4bc460
[1558321851.730| 2205|siptransport.cpp :206 ] ~SipTransportBroker@0x4bbd20
[1558321851.730| 2205|siptransport.cpp :213 ] destroying SipTransportBroker@0x4bbd20
[1558321852.732| 2205|sipvoiplink.cpp :638 ] destroying SIPVoIPLink@0x4bc460
[Thread 0x7fffdbfff700 (LWP 2255) exited]
[1558321852.733| 2205|manager.cpp :2719 ] Adding account 63bc8e5210fc211d
[1558321852.733| 2205|system_codec_container.cpp:157 ] Encoders found: H264 VP8 MP4V-ES H263-1998 opus G722 speex speex speex PCMA PCMU
[1558321852.733| 2205|system_codec_container.cpp:158 ] Decoders found: H264 VP8 MP4V-ES H263-1998 opus G722 speex speex speex PCMA PCMU
[1558321852.733| 2205|sipvoiplink.cpp :511 ] Using SIP nameserver: 192.168.10.1
[1558321852.733| 2205|sipvoiplink.cpp :509 ] Error printing SIP nameserver: Unknown error -6
[1558321852.733| 2205|siptransport.cpp :201 ] SipTransportBroker@0x4bbd20
[New Thread 0x7fffdbfff700 (LWP 2256)]
[1558321852.733| 2205|sipvoiplink.cpp :605 ] SIPVoIPLink@0x606380
[1558321852.733| 2256|sip_utils.cpp :203 ] Registered thread 0x7fffdbfff4d0 (0x89D)
[1558321852.733| 2205|upnp_context.cpp :169 ] UPnP: IPv6 support enabled, but we will use IPv4
[New Thread 0x7fffdb66e700 (LWP 2257)]
[New Thread 0x7fffdacdd700 (LWP 2258)]
[New Thread 0x7fffda34c700 (LWP 2259)]
[New Thread 0x7fffd99bb700 (LWP 2260)]
[New Thread 0x7fffd902a700 (LWP 2261)]
[New Thread 0x7fffd3fff700 (LWP 2262)]
[New Thread 0x7fffd366e700 (LWP 2263)]
[New Thread 0x7fffd2cdd700 (LWP 2264)]
[1558321852.785| 2205|upnp_context.cpp :180 ] UPnP: using IPv4
[1558321852.785| 2205|upnp_context.cpp :184 ] UPnP: initialiazed on 192.168.10.172:49152
[1558321853.590| 2205|sipaccount.cpp :1709 ] Presence enabled for 63bc8e5210fc211d : false.
[1558321853.590| 2205|sipaccount.cpp :597 ] No credentials set, inferring them...
[1558321853.590| 2205|sipaccount.cpp :716 ] doRegister
[1558321853.590| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[New Thread 0x7fffd234c700 (LWP 2265)]
[1558321853.591| 2265|sip_utils.cpp :203 ] Registered thread 0x7fffd234c4d0 (0x89D)
[1558321853.591| 2205|manager.cpp :1717 ] Saving Configuration to XDG directory /home/mcournoyer/.config/ring/dring.yml
[1558321853.591| 2265|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321853.591| 2265|sipaccount.cpp :769 ] doRegister isIP2IP.
[1558321853.591| 2265|siptransport.cpp :362 ] Created UDP transport on default : 0.0.0.0:5060
[1558321853.591| 2265|siptransport.cpp :82 ] SipTransport@0x7fffbc0029d0 {tr=0x7fffbc000f88 {rc=2}}
[1558321853.591| 2265|message_engine.cpp:198 ] [Account 63bc8e5210fc211d] couldn't load messages from /home/mcournoyer/.cache/ring/63bc8e5210fc211d/messages: basic_ios::clear
[Thread 0x7fffd234c700 (LWP 2265) exited]
[Thread 0x7fffdacdd700 (LWP 2258) exited]
[Thread 0x7fffd3fff700 (LWP 2262) exited]
[1558321867.075| 2205|sipaccount.cpp :302 ] Removing transport from account
[1558321867.075| 2205|siptransport.cpp :95 ] ~SipTransport@0x7fffbc0029d0 {tr=0x7fffbc000f88 {rc=2}}
[1558321867.075| 2205|sipaccount.cpp :716 ] doRegister
[1558321867.075| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[New Thread 0x7fffd3fff700 (LWP 2267)]
[1558321867.075| 2267|message_engine.cpp:252 ] [Account 63bc8e5210fc211d] Couldn't save messages to /home/mcournoyer/.cache/ring/63bc8e5210fc211d/messages: basic_ios::clear
[1558321867.075| 2267|message_engine.cpp:254 ] [Account 63bc8e5210fc211d] saved 0 messages to /home/mcournoyer/.cache/ring/63bc8e5210fc211d/messages
[New Thread 0x7fffdacdd700 (LWP 2268)]
[1558321867.075| 2205|manager.cpp :2626 ] Set account details for 63bc8e5210fc211d
[1558321867.076| 2205|account.cpp :445 ] Couldn't find key "Account.keepAliveEnabled"
[1558321867.076| 2205|sipaccount.cpp :1709 ] Presence enabled for 63bc8e5210fc211d : false.
[1558321867.076| 2205|manager.cpp :1717 ] Saving Configuration to XDG directory /home/mcournoyer/.config/ring/dring.yml
[1558321867.076| 2205|sipaccount.cpp :716 ] doRegister montreal6.voip.ms
[1558321867.076| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[1558321867.076| 2268|sip_utils.cpp :203 ] Registered thread 0x7fffdacdd4d0 (0x89D)
[1558321867.076| 2268|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321867.077| 2268|sipvoiplink.cpp :1182 ] try to resolve 'montreal6.voip.ms' (port: 0)
[New Thread 0x7fffd234c700 (LWP 2269)]
[Thread 0x7fffdacdd700 (LWP 2268) exited]
[1558321867.077| 2269|sip_utils.cpp :203 ] Registered thread 0x7fffd234c4d0 (0x89D)
[1558321867.078| 2269|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321867.078| 2269|sipvoiplink.cpp :1182 ] try to resolve 'montreal6.voip.ms' (port: 0)
[Thread 0x7fffd234c700 (LWP 2269) exited]
[1558321867.102| 2256|sipaccount.cpp :828 ] Creating transport
[1558321867.102| 2256|siptransport.cpp :319 ] Recycling transport {UDP transport on default:5060}
[1558321867.102| 2256|siptransport.cpp :82 ] SipTransport@0x7fffd40013c0 {tr=0x7fffbc000f88 {rc=2}}
[1558321867.128| 2256|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321867.128| 2256|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321867.177| 2256|sipaccount.cpp :1045 ] SIP registration failed, status=403 (Forbidden)
[1558321870.931| 2205|sipaccount.cpp :302 ] Removing transport from account
[1558321870.931| 2205|siptransport.cpp :95 ] ~SipTransport@0x7fffd40013c0 {tr=0x7fffbc000f88 {rc=7}}
[1558321870.931| 2205|sipaccount.cpp :865 ] doUnregister VoipLinkException occurred: Registration structure is NULL
[1558321870.931| 2205|sipaccount.cpp :716 ] doRegister montreal6.voip.ms
[1558321870.931| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[New Thread 0x7fffd234c700 (LWP 2270)]
[1558321870.932| 2270|sip_utils.cpp :203 ] Registered thread 0x7fffd234c4d0 (0x89D)
[1558321870.932| 2270|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321870.932| 2270|sipvoiplink.cpp :1182 ] try to resolve 'montreal6.voip.ms' (port: 0)
[1558321870.932| 2270|sipaccount.cpp :828 ] Creating transport
[1558321870.932| 2270|siptransport.cpp :319 ] Recycling transport {UDP transport on default:5060}
[1558321870.932| 2270|siptransport.cpp :82 ] SipTransport@0x7fffc0001060 {tr=0x7fffbc000f88 {rc=7}}
[1558321870.933| 2205|manager.cpp :2626 ] Set account details for 63bc8e5210fc211d
[1558321870.933| 2270|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321870.933| 2270|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321870.933| 2205|sipaccount.cpp :302 ] Removing transport from account
[1558321870.933| 2205|siptransport.cpp :95 ] ~SipTransport@0x7fffc0001060 {tr=0x7fffbc000f88 {rc=11}}
[1558321870.933| 2205|sipaccount.cpp :1142 ] pjsip_regc_send failed with error 171001: Object is busy (PJSIP_EBUSY)
[1558321870.933| 2205|sipaccount.cpp :865 ] doUnregister VoipLinkException occurred: Unable to send request to unregister sip account
[1558321870.933| 2205|account.cpp :445 ] Couldn't find key "Account.keepAliveEnabled"
[1558321870.933| 2205|sipaccount.cpp :1709 ] Presence enabled for 63bc8e5210fc211d : false.
[1558321870.933| 2205|manager.cpp :1717 ] Saving Configuration to XDG directory /home/mcournoyer/.config/ring/dring.yml
[1558321870.934| 2205|sipaccount.cpp :716 ] doRegister montreal6.voip.ms
[1558321870.934| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[New Thread 0x7fffd234c700 (LWP 2271)]
[Thread 0x7fffd234c700 (LWP 2270) exited]
[1558321870.934| 2271|sip_utils.cpp :203 ] Registered thread 0x7fffd234c4d0 (0x89D)
[1558321870.934| 2271|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321870.934| 2271|sipvoiplink.cpp :1182 ] try to resolve 'montreal6.voip.ms' (port: 0)
[1558321870.934| 2271|sipaccount.cpp :828 ] Creating transport
[1558321870.934| 2271|siptransport.cpp :319 ] Recycling transport {UDP transport on default:5060}
[1558321870.934| 2271|siptransport.cpp :82 ] SipTransport@0x7fffc0007d70 {tr=0x7fffbc000f88 {rc=11}}
[1558321870.935| 2271|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321870.935| 2271|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[Thread 0x7fffd234c700 (LWP 2271) exited]
[1558321870.952| 2256|sipaccount.cpp :1045 ] SIP registration failed, status=403 (Forbidden)
[1558321877.084| 2205|sipaccount.cpp :302 ] Removing transport from account
[1558321877.084| 2205|siptransport.cpp :95 ] ~SipTransport@0x7fffc0007d70 {tr=0x7fffbc000f88 {rc=2}}
[1558321877.085| 2205|sipaccount.cpp :865 ] doUnregister VoipLinkException occurred: Registration structure is NULL
[1558321877.085| 2205|sipaccount.cpp :716 ] doRegister montreal6.voip.ms
[1558321877.085| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[New Thread 0x7fffd234c700 (LWP 2272)]
[1558321877.085| 2272|sip_utils.cpp :203 ] Registered thread 0x7fffd234c4d0 (0x89D)
[1558321877.085| 2272|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321877.085| 2272|sipvoiplink.cpp :1182 ] try to resolve 'montreal6.voip.ms' (port: 0)
[1558321877.085| 2205|manager.cpp :2626 ] Set account details for 63bc8e5210fc211d
[1558321877.085| 2272|sipaccount.cpp :828 ] Creating transport
[1558321877.085| 2272|siptransport.cpp :319 ] Recycling transport {UDP transport on default:5060}
[1558321877.085| 2272|siptransport.cpp :82 ] SipTransport@0x7fffc0001000 {tr=0x7fffbc000f88 {rc=2}}
[1558321877.085| 2272|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321877.085| 2272|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321877.085| 2205|sipaccount.cpp :302 ] Removing transport from account
[Thread 0x7fffd234c700 (LWP 2272) exited]
[1558321877.085| 2205|siptransport.cpp :95 ] ~SipTransport@0x7fffc0001000 {tr=0x7fffbc000f88 {rc=6}}
[1558321877.085| 2205|sipaccount.cpp :1142 ] pjsip_regc_send failed with error 171001: Object is busy (PJSIP_EBUSY)
[1558321877.086| 2205|sipaccount.cpp :865 ] doUnregister VoipLinkException occurred: Unable to send request to unregister sip account
[1558321877.086| 2205|account.cpp :445 ] Couldn't find key "Account.keepAliveEnabled"
[1558321877.086| 2205|sipaccount.cpp :1709 ] Presence enabled for 63bc8e5210fc211d : false.
[1558321877.086| 2205|manager.cpp :1717 ] Saving Configuration to XDG directory /home/mcournoyer/.config/ring/dring.yml
[1558321877.086| 2205|sipaccount.cpp :716 ] doRegister montreal6.voip.ms
[1558321877.086| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[New Thread 0x7fffd234c700 (LWP 2273)]
[1558321877.086| 2273|sip_utils.cpp :203 ] Registered thread 0x7fffd234c4d0 (0x89D)
[1558321877.086| 2273|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321877.086| 2273|sipvoiplink.cpp :1182 ] try to resolve 'montreal6.voip.ms' (port: 0)
[1558321877.086| 2273|sipaccount.cpp :828 ] Creating transport
[1558321877.086| 2273|siptransport.cpp :319 ] Recycling transport {UDP transport on default:5060}
[1558321877.086| 2273|siptransport.cpp :82 ] SipTransport@0x7fffc0004bb0 {tr=0x7fffbc000f88 {rc=6}}
[1558321877.086| 2273|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321877.086| 2273|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[Thread 0x7fffd234c700 (LWP 2273) exited]
[1558321877.118| 2256|sipaccount.cpp :1045 ] SIP registration failed, status=403 (Forbidden)
[1558321882.739| 2205|sipaccount.cpp :302 ] Removing transport from account
[1558321882.739| 2205|siptransport.cpp :95 ] ~SipTransport@0x7fffc0004bb0 {tr=0x7fffbc000f88 {rc=2}}
[1558321882.740| 2205|sipaccount.cpp :865 ] doUnregister VoipLinkException occurred: Registration structure is NULL
[1558321882.740| 2205|sipaccount.cpp :716 ] doRegister montreal6.voip.ms
[1558321882.740| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[New Thread 0x7fffd234c700 (LWP 2274)]
[1558321882.746| 2274|sip_utils.cpp :203 ] Registered thread 0x7fffd234c4d0 (0x89D)
[1558321882.746| 2274|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321882.746| 2274|sipvoiplink.cpp :1182 ] try to resolve 'montreal6.voip.ms' (port: 0)
[1558321882.746| 2274|sipaccount.cpp :828 ] Creating transport
[1558321882.746| 2274|siptransport.cpp :319 ] Recycling transport {UDP transport on default:5060}
[1558321882.746| 2274|siptransport.cpp :82 ] SipTransport@0x7fffb8000f80 {tr=0x7fffbc000f88 {rc=2}}
[1558321882.746| 2205|manager.cpp :2626 ] Set account details for 63bc8e5210fc211d
[1558321882.746| 2274|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321882.746| 2274|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321882.746| 2205|sipaccount.cpp :302 ] Removing transport from account
[1558321882.746| 2205|siptransport.cpp :95 ] [Thread 0x7fffd234c700 (LWP 2274) exited]
~SipTransport@0x7fffb8000f80 {tr=0x7fffbc000f88 {rc=6}}
[1558321882.746| 2205|sipaccount.cpp :1142 ] pjsip_regc_send failed with error 171001: Object is busy (PJSIP_EBUSY)
[1558321882.746| 2205|sipaccount.cpp :865 ] doUnregister VoipLinkException occurred: Unable to send request to unregister sip account
[1558321882.746| 2205|account.cpp :445 ] Couldn't find key "Account.keepAliveEnabled"
[1558321882.746| 2205|sipaccount.cpp :1709 ] Presence enabled for 63bc8e5210fc211d : false.
[1558321882.746| 2205|manager.cpp :1717 ] Saving Configuration to XDG directory /home/mcournoyer/.config/ring/dring.yml
[1558321882.747| 2205|sipaccount.cpp :716 ] doRegister montreal6.voip.ms
[1558321882.747| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[New Thread 0x7fffd234c700 (LWP 2275)]
[1558321882.747| 2275|sip_utils.cpp :203 ] Registered thread 0x7fffd234c4d0 (0x89D)
[1558321882.747| 2275|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321882.747| 2275|sipvoiplink.cpp :1182 ] try to resolve 'montreal6.voip.ms' (port: 0)
[1558321882.747| 2275|sipaccount.cpp :828 ] Creating transport
[1558321882.747| 2275|siptransport.cpp :319 ] Recycling transport {UDP transport on default:5060}
[1558321882.747| 2275|siptransport.cpp :82 ] SipTransport@0x7fffb8007cb0 {tr=0x7fffbc000f88 {rc=6}}
[1558321882.747| 2275|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321882.747| 2275|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[Thread 0x7fffd234c700 (LWP 2275) exited]
[1558321882.769| 2256|sipaccount.cpp :1905 ] IP address change detected for account 63bc8e5210fc211d (192.168.10.172:5060 --> 66.158.152.210:5060). Updating registration (using method 2)
[1558321882.769| 2256|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321882.770| 2256|sipaccount.cpp :1082 ] Contact overwritten
[1558321882.770| 2256|message_engine.cpp:198 ] [Account 63bc8e5210fc211d] couldn't load messages from /home/mcournoyer/.cache/ring/63bc8e5210fc211d/messages: basic_ios::clear
[1558321884.004| 2205|sipaccount.cpp :302 ] Removing transport from account
[1558321884.004| 2205|siptransport.cpp :95 ] ~SipTransport@0x7fffb8007cb0 {tr=0x7fffbc000f88 {rc=23}}
[1558321884.004| 2205|sipaccount.cpp :716 ] doRegister montreal6.voip.ms
[1558321884.004| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[1558321884.005| 2267|message_engine.cpp:252 ] [Account 63bc8e5210fc211d] Couldn't save messages to /home/mcournoyer/.cache/ring/63bc8e5210fc211d/messages: basic_ios::clear
[1558321884.005| 2267|message_engine.cpp:254 ] [Account 63bc8e5210fc211d] saved 0 messages to /home/mcournoyer/.cache/ring/63bc8e5210fc211d/messages
[New Thread 0x7fffd234c700 (LWP 2278)]
[1558321884.009| 2278|sip_utils.cpp :203 ] Registered thread 0x7fffd234c4d0 (0x89D)
[1558321884.009| 2278|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321884.009| 2278|sipvoiplink.cpp :1182 ] try to resolve 'montreal6.voip.ms' (port: 0)
[1558321884.009| 2278|sipaccount.cpp :828 ] Creating transport
[1558321884.009| 2278|siptransport.cpp :319 ] Recycling transport {UDP transport on default:5060}
[1558321884.009| 2278|siptransport.cpp :82 ] SipTransport@0x7fffb80012e0 {tr=0x7fffbc000f88 {rc=27}}
[1558321884.009| 2205|manager.cpp :2626 ] Set account details for 63bc8e5210fc211d
[1558321884.010| 2278|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[Thread 0x7fffd234c700 (LWP 2278) exited]
[1558321884.010| 2205|sipaccount.cpp :302 ] Removing transport from account
[1558321884.010| 2205|siptransport.cpp :95 ] ~SipTransport@0x7fffb80012e0 {tr=0x7fffbc000f88 {rc=31}}
[1558321884.010| 2205|sipaccount.cpp :1142 ] pjsip_regc_send failed with error 171001: Object is busy (PJSIP_EBUSY)
[1558321884.010| 2205|sipaccount.cpp :865 ] doUnregister VoipLinkException occurred: Unable to send request to unregister sip account
[1558321884.010| 2205|account.cpp :445 ] Couldn't find key "Account.keepAliveEnabled"
[1558321884.010| 2205|sipaccount.cpp :1709 ] Presence enabled for 63bc8e5210fc211d : false.
[1558321884.010| 2205|manager.cpp :1717 ] Saving Configuration to XDG directory /home/mcournoyer/.config/ring/dring.yml
[1558321884.010| 2205|sipaccount.cpp :716 ] doRegister montreal6.voip.ms
[1558321884.010| 2205|sipaccount.cpp :720 ] UPnP: waiting for IGD to register SIP account
[New Thread 0x7fffd234c700 (LWP 2279)]
[1558321884.011| 2279|sip_utils.cpp :203 ] Registered thread 0x7fffd234c4d0 (0x89D)
[1558321884.011| 2279|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[1558321884.011| 2279|sipvoiplink.cpp :1182 ] try to resolve 'montreal6.voip.ms' (port: 0)
[1558321884.011| 2279|sipaccount.cpp :828 ] Creating transport
[1558321884.011| 2279|siptransport.cpp :319 ] Recycling transport {UDP transport on default:5060}
[1558321884.011| 2279|siptransport.cpp :82 ] SipTransport@0x7fffb8007cb0 {tr=0x7fffbc000f88 {rc=31}}
[1558321884.011| 2279|upnp_context.cpp :288 ] UPnP: check for valid IGD timeout
[Thread 0x7fffd234c700 (LWP 2279) exited]
[1558321884.098| 2256|message_engine.cpp:198 ] [Account 63bc8e5210fc211d] couldn't load messages from /home/mcournoyer/.cache/ring/63bc8e5210fc211d/messages: basic_ios::clear
[1558321931.700| 2207|message_engine.cpp:97 ] [message 14240881271831399598] Retry sending
[1558321931.700| 2267|message_engine.cpp:252 ] [Account 63bc8e5210fc211d] Couldn't save messages to /home/mcournoyer/.cache/ring/63bc8e5210fc211d/messages: basic_ios::clear
[1558321931.700| 2267|message_engine.cpp:254 ] [Account 63bc8e5210fc211d] saved 1 messages to /home/mcournoyer/.cache/ring/63bc8e5210fc211d/messages
dring: ../src/pj/os_core_unix.c:692: pj_thread_this: Assertion `!"Calling pjlib from unknown/external thread. You must " "register external threads with pj_thread_register() " "before calling any pjlib functions."' failed.
Thread 2 "dring" received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff2d60700 (LWP 2207)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) thread apply all bt
Thread 17 (Thread 0x7fffd3fff700 (LWP 2267)):
#0 0x00007ffff5253062 in futex_wait_cancelable (private=<optimized out>, expected=0,
futex_word=0x7ffff7f87c40 <ring::ThreadPool::instance()::pool+192>)
at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 __pthread_cond_wait_common (abstime=0x0,
mutex=0x7ffff7f87bf0 <ring::ThreadPool::instance()::pool+112>,
cond=0x7ffff7f87c18 <ring::ThreadPool::instance()::pool+152>) at pthread_cond_wait.c:502
#2 __pthread_cond_wait (cond=0x7ffff7f87c18 <ring::ThreadPool::instance()::pool+152>,
mutex=0x7ffff7f87bf0 <ring::ThreadPool::instance()::pool+112>)
at pthread_cond_wait.c:655
#3 0x00007ffff4f7abac in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
from /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/libstdc++.so.6
#4 0x00007ffff7c1b4eb in std::thread::_Impl<std::_Bind_simple<ring::ThreadPool::run(std::function<void ()>&&)::{lambda()#1} ()> >::_M_run() ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#5 0x00007ffff4f7faf0 in execute_native_thread_routine ()
from /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/libstdc++.so.6
#6 0x00007ffff524d019 in start_thread (arg=0x7fffd3fff700) at pthread_create.c:486
#7 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
--Type <RET> for more, q to quit, c to continue without paging--
Thread 15 (Thread 0x7fffd2cdd700 (LWP 2264)):
#0 0x00007ffff489f9df in __GI___select (nfds=19, readfds=0x7fffd2cd8cd0, writefds=0x0,
exceptfds=0x7fffd2cd8c50, timeout=0x0) at ../sysdeps/unix/sysv/linux/select.c:41
#1 0x00007ffff767c658 in RunMiniServer ()
from /gnu/store/jw6z4zzsa4jn56pfxiw6g5l6xryaphxm-libupnp-1.6.25/lib/libupnp.so.6
#2 0x00007ffff766aeff in WorkerThread ()
from /gnu/store/jw6z4zzsa4jn56pfxiw6g5l6xryaphxm-libupnp-1.6.25/lib/libthreadutil.so.6
#3 0x00007ffff524d019 in start_thread (arg=0x7fffd2cdd700) at pthread_create.c:486
#4 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 14 (Thread 0x7fffd366e700 (LWP 2263)):
#0 0x00007ffff52533d6 in futex_abstimed_wait_cancelable (private=<optimized out>,
abstime=0x7fffd366a030, expected=0, futex_word=0x7ffff7697434 <gSendThreadPool+84>)
at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1 __pthread_cond_wait_common (abstime=0x7fffd366a030,
mutex=0x7ffff76973e0 <gSendThreadPool>, cond=0x7ffff7697408 <gSendThreadPool+40>)
at pthread_cond_wait.c:539
#2 __pthread_cond_timedwait (cond=0x7ffff7697408 <gSendThreadPool+40>,
mutex=0x7ffff76973e0 <gSendThreadPool>, abstime=0x7fffd366a030)
at pthread_cond_wait.c:667
--Type <RET> for more, q to quit, c to continue without paging--
#3 0x00007ffff766abf7 in WorkerThread ()
from /gnu/store/jw6z4zzsa4jn56pfxiw6g5l6xryaphxm-libupnp-1.6.25/lib/libthreadutil.so.6
#4 0x00007ffff524d019 in start_thread (arg=0x7fffd366e700) at pthread_create.c:486
#5 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 12 (Thread 0x7fffd902a700 (LWP 2261)):
#0 0x00007ffff52533d6 in futex_abstimed_wait_cancelable (private=<optimized out>,
abstime=0x7fffd9026030, expected=0,
futex_word=0x7ffff7696dd4 <gMiniServerThreadPool+84>)
at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1 __pthread_cond_wait_common (abstime=0x7fffd9026030,
mutex=0x7ffff7696d80 <gMiniServerThreadPool>,
cond=0x7ffff7696da8 <gMiniServerThreadPool+40>) at pthread_cond_wait.c:539
#2 __pthread_cond_timedwait (cond=0x7ffff7696da8 <gMiniServerThreadPool+40>,
mutex=0x7ffff7696d80 <gMiniServerThreadPool>, abstime=0x7fffd9026030)
at pthread_cond_wait.c:667
#3 0x00007ffff766abf7 in WorkerThread ()
from /gnu/store/jw6z4zzsa4jn56pfxiw6g5l6xryaphxm-libupnp-1.6.25/lib/libthreadutil.so.6
#4 0x00007ffff524d019 in start_thread (arg=0x7fffd902a700) at pthread_create.c:486
#5 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
--Type <RET> for more, q to quit, c to continue without paging--
Thread 11 (Thread 0x7fffd99bb700 (LWP 2260)):
#0 0x00007ffff52533d6 in futex_abstimed_wait_cancelable (private=<optimized out>,
abstime=0x7fffd99b7030, expected=0, futex_word=0x7ffff7697090 <gRecvThreadPool+80>)
at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1 __pthread_cond_wait_common (abstime=0x7fffd99b7030,
mutex=0x7ffff7697040 <gRecvThreadPool>, cond=0x7ffff7697068 <gRecvThreadPool+40>)
at pthread_cond_wait.c:539
#2 __pthread_cond_timedwait (cond=0x7ffff7697068 <gRecvThreadPool+40>,
mutex=0x7ffff7697040 <gRecvThreadPool>, abstime=0x7fffd99b7030)
at pthread_cond_wait.c:667
#3 0x00007ffff766abf7 in WorkerThread ()
from /gnu/store/jw6z4zzsa4jn56pfxiw6g5l6xryaphxm-libupnp-1.6.25/lib/libthreadutil.so.6
#4 0x00007ffff524d019 in start_thread (arg=0x7fffd99bb700) at pthread_create.c:486
#5 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 10 (Thread 0x7fffda34c700 (LWP 2259)):
#0 0x00007ffff52533d6 in futex_abstimed_wait_cancelable (private=<optimized out>,
abstime=0x7fffda348030, expected=0, futex_word=0x7ffff7697090 <gRecvThreadPool+80>)
at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1 __pthread_cond_wait_common (abstime=0x7fffda348030,
mutex=0x7ffff7697040 <gRecvThreadPool>, cond=0x7ffff7697068 <gRecvThreadPool+40>)
--Type <RET> for more, q to quit, c to continue without paging--
at pthread_cond_wait.c:539
#2 __pthread_cond_timedwait (cond=0x7ffff7697068 <gRecvThreadPool+40>,
mutex=0x7ffff7697040 <gRecvThreadPool>, abstime=0x7fffda348030)
at pthread_cond_wait.c:667
#3 0x00007ffff766abf7 in WorkerThread ()
from /gnu/store/jw6z4zzsa4jn56pfxiw6g5l6xryaphxm-libupnp-1.6.25/lib/libthreadutil.so.6
#4 0x00007ffff524d019 in start_thread (arg=0x7fffda34c700) at pthread_create.c:486
#5 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 8 (Thread 0x7fffdb66e700 (LWP 2257)):
#0 0x00007ffff5253062 in futex_wait_cancelable (private=<optimized out>, expected=0,
futex_word=0x7ffff7697330 <gTimerThread+80>)
at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 __pthread_cond_wait_common (abstime=0x0, mutex=0x7ffff76972e0 <gTimerThread>,
cond=0x7ffff7697308 <gTimerThread+40>) at pthread_cond_wait.c:502
#2 __pthread_cond_wait (cond=0x7ffff7697308 <gTimerThread+40>,
mutex=0x7ffff76972e0 <gTimerThread>) at pthread_cond_wait.c:655
#3 0x00007ffff766bcb0 in TimerThreadWorker ()
from /gnu/store/jw6z4zzsa4jn56pfxiw6g5l6xryaphxm-libupnp-1.6.25/lib/libthreadutil.so.6
#4 0x00007ffff766aeff in WorkerThread ()
from /gnu/store/jw6z4zzsa4jn56pfxiw6g5l6xryaphxm-libupnp-1.6.25/lib/libthreadutil.so.6
--Type <RET> for more, q to quit, c to continue without paging--
#5 0x00007ffff524d019 in start_thread (arg=0x7fffdb66e700) at pthread_create.c:486
#6 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 7 (Thread 0x7fffdbfff700 (LWP 2256)):
#0 0x00007ffff489f9df in __GI___select (nfds=1024, readfds=0x7fffdbffad48,
writefds=0x7fffdbffab28, exceptfds=0x7fffdbffa908, timeout=0x7fffdbffa7c0)
at ../sysdeps/unix/sysv/linux/select.c:41
#1 0x00007ffff7eb8a18 in pj_sock_select ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#2 0x00007ffff7eb45c5 in pj_ioqueue_poll ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#3 0x00007ffff7e5923c in pjsip_endpt_handle_events2 ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#4 0x00007ffff7e592fd in pjsip_endpt_handle_events ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#5 0x00007ffff7c82b7f in std::thread::_Impl<std::_Bind_simple<ring::SIPVoIPLink::SIPVoIPLink()::{lambda()#1} ()> >::_M_run() ()
--Type <RET> for more, q to quit, c to continue without paging--
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#6 0x00007ffff4f7faf0 in execute_native_thread_routine ()
from /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/libstdc++.so.6
#7 0x00007ffff524d019 in start_thread (arg=0x7fffdbfff700) at pthread_create.c:486
#8 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 4 (Thread 0x7ffff1a3e700 (LWP 2210)):
#0 0x00007ffff489d6a1 in __GI___poll (fds=0x7fffe8007380, nfds=3, timeout=-1)
at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007ffff7a33011 in poll_func ()
from /gnu/store/s795jav4270x940spl48a885nhw4axnx-pulseaudio-12.2/lib/libpulse.so.0
#2 0x00007ffff7a24c91 in pa_mainloop_poll ()
from /gnu/store/s795jav4270x940spl48a885nhw4axnx-pulseaudio-12.2/lib/libpulse.so.0
#3 0x00007ffff7a252ce in pa_mainloop_iterate ()
from /gnu/store/s795jav4270x940spl48a885nhw4axnx-pulseaudio-12.2/lib/libpulse.so.0
#4 0x00007ffff7a25380 in pa_mainloop_run ()
from /gnu/store/s795jav4270x940spl48a885nhw4axnx-pulseaudio-12.2/lib/libpulse.so.0
#5 0x00007ffff7a32f76 in thread ()
from /gnu/store/s795jav4270x940spl48a885nhw4axnx-pulseaudio-12.2/lib/libpulse.so.0
#6 0x00007ffff79d0f88 in internal_thread_func ()
--Type <RET> for more, q to quit, c to continue without paging--
from /gnu/store/s795jav4270x940spl48a885nhw4axnx-pulseaudio-12.2/lib/pulseaudio/libpulsecommon-12.2.so
#7 0x00007ffff524d019 in start_thread (arg=0x7ffff1a3e700) at pthread_create.c:486
#8 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 3 (Thread 0x7ffff23cf700 (LWP 2209)):
#0 0x00007ffff489f9df in __GI___select (nfds=7, readfds=0x7ffff23cafb0, writefds=0x0,
exceptfds=0x0, timeout=0x7ffff23caf60) at ../sysdeps/unix/sysv/linux/select.c:41
#1 0x00007ffff7e2c001 in ring::video::VideoDeviceMonitorImpl::run() ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#2 0x00007ffff4f7faf0 in execute_native_thread_routine ()
from /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/libstdc++.so.6
#3 0x00007ffff524d019 in start_thread (arg=0x7ffff23cf700) at pthread_create.c:486
#4 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 2 (Thread 0x7ffff2d60700 (LWP 2207)):
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007ffff47eaca1 in __GI_abort () at abort.c:79
#2 0x00007ffff47e2577 in __assert_fail_base (fmt=<optimized out>,
assertion=assertion@entry=0x7ffff7f01610 "!\"Calling pjlib from unknown/external thread. --Type <RET> for more, q to quit, c to continue without paging--
You must \" \"register external threads with pj_thread_register() \" \"before calling any pjlib functions.\"", file=file@entry=0x7ffff7f01478 "../src/pj/os_core_unix.c",
line=line@entry=692,
function=function@entry=0x7ffff7f01838 <__PRETTY_FUNCTION__.5615> "pj_thread_this")
at assert.c:92
#3 0x00007ffff47e2622 in __GI___assert_fail (
assertion=0x7ffff7f01610 "!\"Calling pjlib from unknown/external thread. You must \" \"register external threads with pj_thread_register() \" \"before calling any pjlib functions.\"", file=0x7ffff7f01478 "../src/pj/os_core_unix.c", line=692,
function=0x7ffff7f01838 <__PRETTY_FUNCTION__.5615> "pj_thread_this") at assert.c:101
#4 0x00007ffff7eb5403 in pj_thread_this ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#5 0x00007ffff7eb5c29 in pj_mutex_lock ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#6 0x00007ffff7ebd02a in pj_lock_acquire ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#7 0x00007ffff7ebf967 in cpool_create_pool ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so--Type <RET> for more, q to quit, c to continue without paging--
.0
#8 0x00007ffff7ebedb2 in pj_pool_create ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#9 0x00007ffff7e590ca in pjsip_endpt_create_pool ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#10 0x00007ffff7e5fdd4 in pjsip_tx_data_create ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#11 0x00007ffff7e59a21 in pjsip_endpt_create_tdata ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#12 0x00007ffff7e5aa24 in pjsip_endpt_create_request ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#13 0x00007ffff7c6dcac in ring::SIPAccount::sendTextMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<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::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<c--Type <RET> for more, q to quit, c to continue without paging--
har, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, unsigned long) ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#14 0x00007ffff7dec1e7 in ring::im::MessageEngine::retrySend(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#15 0x00007ffff7c51775 in ring::ScheduledExecutor::loop() ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#16 0x00007ffff7c518d5 in std::thread::_Impl<std::_Bind_simple<ring::ScheduledExecutor::ScheduledExecutor()::{lambda()#1} ()> >::_M_run() ()
from /gnu/store/5ly4xxm5rq6w7rbhlgma17h4bb1gfmn1-libring-20190319.4.a16a99f/lib/libring.so.0
#17 0x00007ffff4f7faf0 in execute_native_thread_routine ()
from /gnu/store/4sqps8dczv3g7rwbdibfz6rf5jlk7w90-gcc-5.5.0-lib/lib/libstdc++.so.6
#18 0x00007ffff524d019 in start_thread (arg=0x7ffff2d60700) at pthread_create.c:486
#19 0x00007ffff48a792f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Thread 1 (Thread 0x7ffff2d6f5c0 (LWP 2205)):
--Type <RET> for more, q to quit, c to continue without paging--
#0 0x00007ffff489d6a1 in __GI___poll (fds=0x7fffffffcfa0, nfds=2, timeout=10000)
at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007ffff7fb2834 in DBus::DefaultMainLoop::dispatch() ()
from /gnu/store/2m2niahhg7s1j2krrx8zr46jdgfw12qy-dbus-c++-0.9.0/lib/libdbus-c++-1.so.0
#2 0x00007ffff7fb34bb in DBus::BusDispatcher::enter() ()
from /gnu/store/2m2niahhg7s1j2krrx8zr46jdgfw12qy-dbus-c++-0.9.0/lib/libdbus-c++-1.so.0
#3 0x000000000040fd9d in DBusClient::event_loop() ()
#4 0x000000000040f498 in main ()
```Iteration 9Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/95Audio record is broken2019-06-10T14:32:02ZAdministratorAudio record is broken```
Thread 5 "dring" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff5326700 (LWP 400)]
0x0000000000ba8952 in avcodec_is_open (s=s@entry=0x20) at libavcodec/utils.c:1873
1873 return !!s->internal;
Missing sep...```
Thread 5 "dring" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff5326700 (LWP 400)]
0x0000000000ba8952 in avcodec_is_open (s=s@entry=0x20) at libavcodec/utils.c:1873
1873 return !!s->internal;
Missing separate debuginfos, use: dnf debuginfo-install alsa-lib-1.1.8-1.fc29.x86_64 bzip2-libs-1.0.6-28.fc29.x86_64 dbus-libs-1.12.12-1.fc29.x86_64 flac-libs-1.3.2-8.fc29.x86_64 gsm-1.0.18-3.fc29.x86_64 jsoncpp-1.8.4-5.fc29.x86_64 libICE-1.0.9-14.fc29.x86_64 libSM-1.2.3-1.fc29.x86_64 libX11-1.6.7-1.fc29.x86_64 libX11-xcb-1.6.7-1.fc29.x86_64 libXau-1.0.8-14.fc29.x86_64 libXext-1.3.3-10.fc29.x86_64 libXfixes-5.0.3-8.fc29.x86_64 libXtst-1.2.3-8.fc29.x86_64 libasyncns-0.8-15.fc29.x86_64 libatomic-8.3.1-2.fc29.x86_64 libblkid-2.32.1-1.fc29.x86_64 libcap-2.25-12.fc29.x86_64 libdrm-2.4.97-1.fc29.x86_64 libgcc-8.3.1-2.fc29.x86_64 libgcrypt-1.8.4-1.fc29.x86_64 libgpg-error-1.33-1.fc29.x86_64 libmount-2.32.1-1.fc29.x86_64 libogg-1.3.3-1.fc29.x86_64 libselinux-2.8-6.fc29.x86_64 libstdc++-8.3.1-2.fc29.x86_64 libuuid-2.32.1-1.fc29.x86_64 libva-2.4.0-2.fc29.x86_64 libvdpau-1.1.1-11.fc29.x86_64 libxcb-1.13.1-1.fc29.x86_64 lz4-libs-1.8.3-1.fc29.x86_64 nss-mdns-0.14.1-2.fc29.x86_64 opus-1.3-1.fc29.x86_64 pulseaudio-libs-12.2-1.fc29.x86_64 speex-1.2.0-2.fc29.x86_64 speexdsp-1.2-0.14.rc3.fc29.x86_64 sssd-client-2.0.0-5.fc29.x86_64 xz-libs-5.2.4-3.fc29.x86_64 yaml-cpp-0.6.1-4.fc29.x86_64 zlib-1.2.11-14.fc29.x86_64
(gdb) bt
#0 0x0000000000ba8952 in avcodec_is_open (s=s@entry=0x20) at libavcodec/utils.c:1873
#1 0x0000000000af7591 in avcodec_send_frame (avctx=0x20, frame=0x7fffc4004dc0) at libavcodec/encode.c:389
#2 0x0000000000681714 in jami::MediaEncoder::encode(AVFrame*, int) () at libavcodec/utils.c:1136
#3 0x0000000000687549 in jami::MediaRecorder::filterAndEncode(jami::MediaFilter*, int) () at libavcodec/utils.c:1136
#4 0x00000000006907ff in std::_Function_handler<void (), jami::MediaRecorder::startRecording()::{lambda()#1}>::_M_invoke(std::_Any_data const&) () at libavcodec/utils.c:1136
#5 0x00000000005e5b08 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::ThreadPool::run(std::function<void ()>&&)::{lambda()#1}> > >::_M_run() () at libavcodec/utils.c:1136
#6 0x00007ffff75ca9a3 in ?? () from /lib64/libstdc++.so.6
#7 0x00007ffff7bca58e in start_thread () from /lib64/libpthread.so.0
#8 0x00007ffff729d6a3 in clone () from /lib64/libc.so.6
```Iteration 9Philippe GorleyPhilippe Gorleyhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/108ICE session not closed at the end of a call2019-08-12T21:20:29ZSébastien BlinICE session not closed at the end of a call# Reproduce step
1. Run `SIPLOGLEVEL=5 ./bin/dring -pcd`
2. Do a call
3. Hangup (or the peer hang up)
4. Wait ~ 30 secs
# Current result
Keep alive are still transmitted, this is bad for the battery IMO
# Expected
Transport should b...# Reproduce step
1. Run `SIPLOGLEVEL=5 ./bin/dring -pcd`
2. Do a call
3. Hangup (or the peer hang up)
4. Wait ~ 30 secs
# Current result
Keep alive are still transmitted, this is bad for the battery IMO
# Expected
Transport should be stoppedSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/121ipv4<->ipv4 (no TURN) call hang (connecting)2019-07-17T13:37:22ZSébastien Blinipv4<->ipv4 (no TURN) call hang (connecting)Iteration 10Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/160Seems like hardware acceleration is actived even if it's not and bug when dri...2021-02-04T13:56:04ZSébastien BlinSeems like hardware acceleration is actived even if it's not and bug when drivers are not herePierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/164joinConferences() doesn't work2019-09-28T15:12:32ZSébastien BlinjoinConferences() doesn't workIteration 17 (Video conferences stabilization)Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/180Missed call after one call2020-12-15T21:14:36ZMuhammad FattahiMissed call after one callUsing freepbx 15(using Asterisk 16)
After one call i must kill process jami then try to call.
Otherwise after one call any calls are missed call and nothing happened.
Other client like linphone work currectly.
OS: Ubuntu 18.04Using freepbx 15(using Asterisk 16)
After one call i must kill process jami then try to call.
Otherwise after one call any calls are missed call and nothing happened.
Other client like linphone work currectly.
OS: Ubuntu 18.04Ming Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/186SIP proxy field is not used correctly2020-12-13T23:57:25ZJami BotSIP proxy field is not used correctlyIssue generated from Tuleap's migration script.
**Originally submitted by: Raman Gupta (rocketraman)**
A detailed description of the bug. Use following fields for description field:
\* Environment:
Ring v1.0.0 on Linux Fedora 25 ...Issue generated from Tuleap's migration script.
**Originally submitted by: Raman Gupta (rocketraman)**
A detailed description of the bug. Use following fields for description field:
\* Environment:
Ring v1.0.0 on Linux Fedora 25
\* Reproduce steps:
Using the hostname and proxy fields to connect to a domain mydomain.com and proxy server proxy.versature.com. The configuration should set up Ring to connect to proxy.versature.com, passing the mydomain.com in the subsequent SIP request(s).
\* Expected result:
I would expect ring to connect successfully using this configuration. As a point of comparison, Zoiper will connect successfully.
\* Actual result:
The actual result is that Ring attempts to make a SIP connection to the hostname, ignoring the proxy field. The debug logs at SIPLOGLEVEL=4 are:
```
[1496261573.159|18869|sipaccount.cpp:698 ] doRegister mydomain.com
[1496261573.159|18869|sipvoiplink.cpp:1220 ] try to resolve 'mydomain.com' (port: 0)
16:12:53.159 resolver.c Transmitting 38 bytes to NS 0 (127.0.0.1:53): DNS SRV query for \_sip.\_udp.mydomain.com: Success
16:12:53.190 \_sip.\_udp.redo DNS SRV resolution failed for \_sip.\_udp.mydomain.com: DNS "Name Error" (PJLIB\_UTIL\_EDNS\_NXDOMAIN)
16:12:53.190 \_sip.\_udp.redo DNS SRV resolution failed for \_sip.\_udp.mydomain.com, trying resolving A/AAAA record for mydomain.com
16:12:53.190 resolver.c Transmitting 28 bytes to NS 0 (127.0.0.1:53): DNS A query for mydomain.com: Success
16:12:53.190 resolver.c Transmitting 28 bytes to NS 0 (127.0.0.1:53): DNS AAAA query for mydomain.com: Success
[1496261573.220|18869|sipaccount.cpp:815 ] Creating transport
16:12:53.220 udp0x18cc530 SIP UDP transport started, published address is 192.168.1.6:5062
[1496261573.220|18869|siptransport.cpp:357 ] Created UDP transport on default : 0.0.0.0:5062
[1496261573.221|18869|siptransport.cpp:82 ] SipTransport@0x190acc0 {tr=0x1919ec8 {rc=2}}
[1496261573.221|18869|sip\_utils.cpp:87 ] Adding route proxy.versature.com
[1496261605.223|18869|sipaccount.cpp:1033 ] SIP registration failed, status=408 (Request Timeout)
[1496261605.223|18869|sipaccount.cpp:2018 ] Scheduling re-registration retry in 53 seconds..
[1496261658.316|18869|sip\_utils.cpp:87 ] Adding route proxy.versature.com
[1496261690.321|18869|sipaccount.cpp:1033 ] SIP registration failed, status=408 (Request Timeout)
[1496261690.321|18869|sipaccount.cpp:2018 ] Scheduling re-registration retry in 302 seconds..
```
IF the system is configured with \_sip.\_udp SRV records on the domain provided in the hostname to point to the proxy, and the proxy field is left blank, then Ring successfully looks up the SRV record and connects to the proxy given there. Explicitly providing the proxy does not work as shown above.
The way I think it should work (and the way I think Zoiper works) is that you have a "domain/hostname" [1] setting and a "proxy" setting. The logic would be:
1) If proxy is set, Ring connects to the proxy and then passes username@domain in the SIP header.
2) If proxy is not set, then Ring looks for the proxy in the DNS SRV records for domain and if it exists, Ring connects to it and then passes username@domain to it.
3) Lastly, if the DNS SRV record does not exist, Ring attempts to connect to the A record of the domain/hostname setting, and again passes username@domain to it.
That way the auth information is completely configurable (username + domain) and the server that handles the request is completely configurable (proxy). The server to physically connect to is configurable either by DNS record on the domain, OR by explicit configuration in the proxy field.
[1] The "domain/hostname" config value would replace the current "hostname" config value.
The codepath to make the SIP connection as described above already exists -- its just that its impossible to configure the UI currently to trigger it. Given an SRV record of \_sip.\_udp.mydomain.com pointing to proxy.versature.com port 5060, Ring makes a connection to proxy.versature.com and passes all information with domain @mydomain.com. Here is a trace https://pastebin.com/raw/5z39MRu8.Ming Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/201ffmpeg: add G711, G729 codecs (SIP)2021-12-29T21:26:12Zovariffmpeg: add G711, G729 codecs (SIP)Please add the following codecs to Jami:
* [G.711a](https://en.wikipedia.org/wiki/G.711)
* [G.711u](https://en.wikipedia.org/wiki/G.711)
* [G.729a](https://en.wikipedia.org/wiki/G.729)
What do you think?
Thank you
> MyNetFone uses th...Please add the following codecs to Jami:
* [G.711a](https://en.wikipedia.org/wiki/G.711)
* [G.711u](https://en.wikipedia.org/wiki/G.711)
* [G.729a](https://en.wikipedia.org/wiki/G.729)
What do you think?
Thank you
> MyNetFone uses the **G.711a** codec, it is the standard codec used in Australia and Europe. The **G.711u** codec is used within the US, and may be present in PBXs or UC platforms from US vendors. The **G.729a** codec is often used for conference calling services.<br>
> https://www.mynetfone.com.au/support/faq/question/477
> The patents for G.711, released in 1972, have expired, so it may be used without the need for a licence
> https://en.wikipedia.org/wiki/G.711#Licensing
> As of January 1, 2017, the patent terms of most licensed patents under the G.729 Consortium have expired, the remaining unexpired patents are usable on a royalty-free basis.<br>
> https://en.wikipedia.org/wiki/G.729.1
https://git.jami.net/savoirfairelinux/ring-daemon/issues/200Backloghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/659swarm: stay in "Already fetching for"2021-12-01T21:30:50ZSébastien Blinswarm: stay in "Already fetching for"Sometime, communication between 2 same devices is blocked.
In the logs, I see "Already fetching for"
For now, no scenario is identifiedSometime, communication between 2 same devices is blocked.
In the logs, I see "Already fetching for"
For now, no scenario is identifiedSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/256Stuck in Connecting: Some negotiations are blocked2020-07-16T18:48:37ZSébastien BlinStuck in Connecting: Some negotiations are blockedRelated to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Observation
The ice become complete too soon with no valid pairs:
@@@ Updating States
@@@ on_ice_complete
[1593797289.007|37053|manager.cpp :243 ] 13:28...Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Observation
The ice become complete too soon with no valid pairs:
@@@ Updating States
@@@ on_ice_complete
[1593797289.007|37053|manager.cpp :243 ] 13:28:09.007 sip:1018943881119817 ...ICE process complete, status=Success
[1593797289.007|37053|manager.cpp :243 ] 13:28:09.007 sip:1018943881119817 ...Valid list
(called a second time after that when negotiation is done
# Reproduce steps
still unknownIteration 19Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/230Contacts are not displayed after account creation from the DHT2020-06-18T19:54:46ZCyrille BéraudContacts are not displayed after account creation from the DHTIteration 18Sébastien BlinAdrien BéraudKateryna KostiukMing Rui ZhangSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/243Stuck in Connecting: Closed sockets are not detected all the time2020-07-02T20:06:36ZSébastien BlinStuck in Connecting: Closed sockets are not detected all the timeRelated to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Reproduce Steps
1. device A calls device B
2. Call is working
3. device B cut its connectivity
4. device A calls device B
5. device A is blocked in "Connecting"
...Related to https://git.jami.net/savoirfairelinux/ring-daemon/issues/227
# Reproduce Steps
1. device A calls device B
2. Call is working
3. device B cut its connectivity
4. device A calls device B
5. device A is blocked in "Connecting"
# Expected result
Jami should detect that the socket is unusable and stop the call if fallback fails
+ icecb.on_destroy should be calledIteration 19Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/746One-sided turn issue2022-08-05T03:09:22ZSébastien BlinOne-sided turn issue# Scenario
(Not on all devices, seems a timing issue)
+ Alice got TURN disabled (ipv4 only, no upnp)
+ Bob got TURN enabled
+ Bob calls TURN
# Expected
+ TURN should be used
# Current result
+ Bob negotiation's failed (normal), but...# Scenario
(Not on all devices, seems a timing issue)
+ Alice got TURN disabled (ipv4 only, no upnp)
+ Bob got TURN enabled
+ Bob calls TURN
# Expected
+ TURN should be used
# Current result
+ Bob negotiation's failed (normal), but he doesn't wait any TURN connection (controlling_passive_timeout)
---
# Second scenario
+ First call fails sometimes
## Observations
+ Peer stop to connect to the TURN server too soon:
```
[1659635463.681|10859|manager.cpp :261 ]13:51:03.681 0x7ff984184290 Check 2: [1] 192.168.49.92:9-->192.252.140.236:19442: connection failed after 8 attempts
[1659635463.681|10859|manager.cpp :261 ]13:51:03.681 0x7ff984184290 Check 2: [1] 192.168.49.92:9-->192.252.140.236:19442: state changed from Pending to Failed
```
However, the peer is only creating the permission one second after:
```
[1659635464.702|23173|manager.cpp :261 ]13:51:04.702 tcprel0x7fa41412a670 .TX 124 bytes STUN message to 192.252.140.236:3478:
--- begin STUN message ---
STUN CreatePermission request
```
Because the first put encrypted on a hash is slower than the othersSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/162Call-Swarm: link to current rdv2023-11-17T16:32:48ZSébastien BlinCall-Swarm: link to current rdv+ Modify messages to use the "rendezvous" word in non 1:1
+ Add a priority to get the best host (mobile/non mobile/ipv6/resources)
+ Maybe use the DRT to avoid to connect to a non connected mobile.+ Modify messages to use the "rendezvous" word in non 1:1
+ Add a priority to get the best host (mobile/non mobile/ipv6/resources)
+ Maybe use the DRT to avoid to connect to a non connected mobile.Swarm-chat2023-03-31https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/327remote management2023-05-05T19:06:30Zevkogan1remote managementClient1-GTK. Client2-Android.
Video call, turn off the microphone on Client1. Switch the camera to client2. The microphone is turned on on Client1, and without indication.
Turn off the camera on client2 and turn off/on the microphone ...Client1-GTK. Client2-Android.
Video call, turn off the microphone on Client1. Switch the camera to client2. The microphone is turned on on Client1, and without indication.
Turn off the camera on client2 and turn off/on the microphone on Client1. The camera on client2 turns on.
Is this covert espionage SOFTWARE? :)https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/341Still some ice nego failures2020-11-09T17:10:15ZSébastien BlinStill some ice nego failuresIteration 22Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/684Swarm: handle expiration changed2022-03-02T15:16:21ZSébastien BlinSwarm: handle expiration changedWhen a certificate got expired, it can be renewed with a new expiration. Swarm must be updated for new messages.
This needs some preparative work:
First, the migration behaviour should be fully validated and testable/automatized, this ...When a certificate got expired, it can be renewed with a new expiration. Swarm must be updated for new messages.
This needs some preparative work:
First, the migration behaviour should be fully validated and testable/automatized, this is currently in progress (https://review.jami.net/c/jami-daemon/+/20112, https://github.com/savoirfairelinux/opendht/pull/573)
A few tests must be added (This part is now in review https://review.jami.net/c/jami-daemon/+/20120):
+ If a device is expired, check that the migration is updating the same device's expiration (in progress, seems not the case)
+ If an account is expired, check that the migration is updating the same certificates
+ If device is revoked, a new device should be generated
Then, once this is validated, we will need to add some tests for:
+ After a device migration, the account should be able to commit on a swarm
+ After an account migration, the account should be able to commit on a swarm
This part is in review https://review.jami.net/c/jami-daemon/+/20127Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/487libnatpmp is not detected in configure step on linux2021-03-31T13:57:08ZMohamed Chibanilibnatpmp is not detected in configure step on linuxMaxim CournoyerMaxim Cournoyerhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/530Medias: Big lag when a lot of person leave the conference2021-12-23T21:46:55ZSébastien BlinMedias: Big lag when a lot of person leave the conference# Scenario
+ Be in a rdv with 10 people
+ Every body leave except 2 people
# Current result
+ Big lag on video
# Expected
+ No lag# Scenario
+ Be in a rdv with 10 people
+ Every body leave except 2 people
# Current result
+ Big lag on video
# Expected
+ No lagBackloghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/542Reproduce connecting2021-05-25T14:06:57ZSébastien BlinReproduce connecting# Scenario
+ Call device A (network 0)
+ A decline call
+ A change to network 1
+ Call device A (network 1) after ~30secs tcp closed + call OK
+ **NOTE: network 1 must be accessible only via TURN, it's important (A<->TURN<->B)**
+ A dec...# Scenario
+ Call device A (network 0)
+ A decline call
+ A change to network 1
+ Call device A (network 1) after ~30secs tcp closed + call OK
+ **NOTE: network 1 must be accessible only via TURN, it's important (A<->TURN<->B)**
+ A decline call
+ A change to network 0
+ Call device A
# Expected result
On TCP timeout the call should come
# Current result
Stay connecting...
# Observation
+ Coturn doesn't seems to detect half open connections. In fact, the bug here is that our keep alive are sent every 30 secs, but... A->TURN is opened ; TURN->B is closed. And the keep alive / packets will be ok during 5 minutes (the allocation time) before TURN to actually drop the connectionSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/660Conference, various crash on peer exit2021-11-24T14:58:45ZSébastien BlinConference, various crash on peer exit# Scenario
+ Alice call Bob
+ Alice adds Carla to the conference
+ Bob stop
+ Crash
```
0x00007fffedfe7364 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator std::basic_string_view<char, std::c...# Scenario
+ Alice call Bob
+ Alice adds Carla to the conference
+ Bob stop
+ Crash
```
0x00007fffedfe7364 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator std::basic_string_view<char, std::char_traits<char> >() const () from /lib64/libstdc++.so.6
(gdb) bt
#0 0x00007fffedfe7364 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator std::basic_string_view<char, std::char_traits<char> >() const () at /lib64/libstdc++.so.6
#1 0x00007fffec0f563c in std::less<void>::_S_cmp<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string_view<char, std::char_traits<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string_view<char, std::char_traits<char> > const&, std::integral_constant<bool, false>) (__t=<error reading variable: Cannot access memory at address 0x40>, __u="") at /usr/include/c++/10/bits/stl_function.h:601
#2 0x00007fffec0f569f in std::less<void>::operator()<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string_view<char, std::char_traits<char> > const&>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string_view<char, std::char_traits<char> > const&) const (this=0xc3c6c8, __t=<error reading variable: Cannot access memory at address 0x40>, __u="") at /usr/include/c++/10/bits/stl_function.h:586
#3 0x00007fffec0f0eeb in std::_Rb_tree<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::_Identity<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<void>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_lower_bound_tr<std::basic_string_view<char, std::char_traits<char> >, void>(std::basic_string_view<char, std::char_traits<char> > const&) const (this=0xc3c6c8, __k="") at /usr/include/c++/10/bits/stl_tree.h:1346
#4 0x00007fffec0eb35e in std::_Rb_tree<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::_Identity<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::less<void>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_find_tr<std::basic_string_view<char, std::char_traits<char> >, void>(std::basic_string_view<char, std::char_traits<char> > const&) const (this=0xc3c6c8, __k="") at /usr/include/c++/10/bits/stl_tree.h:1314
#5 0x00007fffec0e63b3 in std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<void>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::find<std::basic_string_view<char, std::char_traits<char> > >(std::basic_string_view<char, std::char_traits<char> > const&) const (this=0xc3c6c8, __x="") at /usr/include/c++/10/bits/stl_set.h:812
#6 0x00007fffec0d9002 in jami::Conference::isModerator(std::basic_string_view<char, std::char_traits<char> >) const (this=0xc3c4a0, uri="") at conference.cpp:946
#7 0x00007fffec0d327a in operator()() const (__closure=0x7ffe9e2422c0) at conference.cpp:100
#8 0x00007fffec0dc11a in operator()() (this=0x7ffe9e2422c0) at manager.h:1057
#9 0x00007fffec0de730 in std::__invoke_impl<void, jami::runOnMainThread<jami::Conference::Conference(bool)::<lambda(std::vector<jami::video::SourceInfo>&&)>::<lambda()> >::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...)
at /usr/include/c++/10/bits/invoke.h:60
#10 0x00007fffec0ddef4 in std::__invoke_r<void, jami::runOnMainThread<jami::Conference::Conference(bool)::<lambda(std::vector<jami::video::SourceInfo>&&)>::<lambda()> >::<lambda()>&>(struct {...} &) (__fn=...) at /usr/include/c++/10/bits/invoke.h:110
#11 0x00007fffec0dd337 in std::_Function_handler<void(), jami::runOnMainThread<jami::Conference::Conference(bool)::<lambda(std::vector<jami::video::SourceInfo>&&)>::<lambda()> >::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
at /usr/include/c++/10/bits/std_function.h:291
#12 0x00007fffec1328d8 in std::function<void ()>::operator()() const (this=0x7ffe9e5d5e40) at /usr/include/c++/10/bits/std_function.h:622
#13 0x00007fffec205ce3 in jami::ScheduledExecutor::loop() (this=0xdc94a0) at scheduled_executor.cpp:137
#14 0x00007fffec2052a1 in operator()() const (__closure=0xe2e828) at scheduled_executor.cpp:32
#15 0x00007fffec207212 in std::__invoke_impl<void, jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> >(std::__invoke_other, struct {...} &&) (__f=...) at /usr/include/c++/10/bits/invoke.h:60
#16 0x00007fffec2071c7 in std::__invoke<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> >(struct {...} &&) (__fn=...) at /usr/include/c++/10/bits/invoke.h:95
#17 0x00007fffec207174 in std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0xe2e828) at /usr/include/c++/10/thread:264
#18 0x00007fffec207148 in std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > >::operator()(void) (this=0xe2e828) at /usr/include/c++/10/thread:271
#19 0x00007fffec20712c in std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > > >::_M_run(void) (this=0xe2e820) at /usr/include/c++/10/thread:215
#20 0x00007fffedf38444 in execute_native_thread_routine () at /lib64/libstdc++.so.6
#21 0x00007fffed9513f9 in start_thread () at /lib64/libpthread.so.0
#22 0x00007fffedc354c3 in clone () at /lib64/libc.so.6
```
```
Thread 72 "jami-qt" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffebaffd640 (LWP 3232921)]
std::_Rb_tree<jami::Observable<std::shared_ptr<DRing::MediaFrame> >*, std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<jami::Observable<std::shared_ptr<DRing::MediaFrame> >*>, std::allocator<std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_lower_bound (this=0x817f990, __x=0xc, __y=0x817f998, __k=@0x7ffebaff92f0: 0xd117170) at /usr/include/c++/10/bits/stl_tree.h:1937
1937 if (!_M_impl._M_key_compare(_S_key(__x), __k))
(gdb) bt
#0 std::_Rb_tree<jami::Observable<std::shared_ptr<DRing::MediaFrame> >*, std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<jami::Observable<std::shared_ptr<DRing::MediaFrame> >*>, std::allocator<std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_lower_bound(std::_Rb_tree_node<std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*, std::_Rb_tree_node_base*, jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const&) (this=0x817f990, __x=0xc, __y=0x817f998, __k=@0x7ffebaff92f0: 0xd117170) at /usr/include/c++/10/bits/stl_tree.h:1937
#1 0x00007fffec0ea361 in std::_Rb_tree<jami::Observable<std::shared_ptr<DRing::MediaFrame> >*, std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<jami::Observable<std::shared_ptr<DRing::MediaFrame> >*>, std::allocator<std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::find(jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const&) (this=0x817f990, __k=@0x7ffebaff92f0: 0xd117170)
at /usr/include/c++/10/bits/stl_tree.h:2555
#2 0x00007fffec0e6513 in std::map<jami::Observable<std::shared_ptr<DRing::MediaFrame> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<jami::Observable<std::shared_ptr<DRing::MediaFrame> >*>, std::allocator<std::pair<jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::find(jami::Observable<std::shared_ptr<DRing::MediaFrame> >* const&) (this=0x817f990, __x=@0x7ffebaff92f0: 0xd117170)
at /usr/include/c++/10/bits/stl_map.h:1170
#3 0x00007fffec0d9af9 in jami::Conference::detachVideo(jami::Observable<std::shared_ptr<DRing::MediaFrame> >*) (this=0x817f860, frame=0xd117170) at conference.cpp:610
#4 0x00007fffec324a1a in jami::video::VideoRtpSession::setupConferenceVideoPipeline(jami::Conference&) (this=0xd120760, conference=...) at ./media/video/video_rtp_session.cpp:352
#5 0x00007fffec324795 in jami::video::VideoRtpSession::setupVideoPipeline() (this=0xd120760) at ./media/video/video_rtp_session.cpp:324
#6 0x00007fffec3242dc in jami::video::VideoRtpSession::start(std::unique_ptr<jami::IceSocket, std::default_delete<jami::IceSocket> >, std::unique_ptr<jami::IceSocket, std::default_delete<jami::IceSocket> >)
(this=0xd120760, rtp_sock=std::unique_ptr<jami::IceSocket> = {...}, rtcp_sock=std::unique_ptr<jami::IceSocket> = {...}) at ./media/video/video_rtp_session.cpp:271
#7 0x00007fffec37350e in jami::SIPCall::startAllMedia() (this=0xd117280) at ./sip/sipcall.cpp:2037
#8 0x00007fffec3756b4 in jami::SIPCall::onIceNegoSucceed() (this=0xd117280) at ./sip/sipcall.cpp:2472
#9 0x00007fffec378a1e in operator()() const (__closure=0x7ffb880099c0) at ./sip/sipcall.cpp:3129
#10 0x00007fffec37c878 in operator()() (this=0x7ffb880099c0) at ./manager.h:1057
#11 0x00007fffec3825e2 in std::__invoke_impl<void, jami::runOnMainThread<jami::SIPCall::initIceMediaTransport(bool, std::optional<jami::IceTransportOptions>)::<lambda(bool)>::<lambda()> >::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...)
at /usr/include/c++/10/bits/invoke.h:60
#12 0x00007fffec3813d2 in std::__invoke_r<void, jami::runOnMainThread<jami::SIPCall::initIceMediaTransport(bool, std::optional<jami::IceTransportOptions>)::<lambda(bool)>::<lambda()> >::<lambda()>&>(struct {...} &) (__fn=...) at /usr/include/c++/10/bits/invoke.h:110
#13 0x00007fffec37f7c3 in std::_Function_handler<void(), jami::runOnMainThread<jami::SIPCall::initIceMediaTransport(bool, std::optional<jami::IceTransportOptions>)::<lambda(bool)>::<lambda()> >::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
at /usr/include/c++/10/bits/std_function.h:291
#14 0x00007fffec134480 in std::function<void ()>::operator()() const (this=0x7ffb880098f0) at /usr/include/c++/10/bits/std_function.h:622
#15 0x00007fffec20789d in jami::ScheduledExecutor::loop() (this=0xdcc320) at scheduled_executor.cpp:137
#16 0x00007fffec206e5b in operator()() const (__closure=0xdfcab8) at scheduled_executor.cpp:32
#17 0x00007fffec208dcc in std::__invoke_impl<void, jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> >(std::__invoke_other, struct {...} &&) (__f=...) at /usr/include/c++/10/bits/invoke.h:60
#18 0x00007fffec208d81 in std::__invoke<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> >(struct {...} &&) (__fn=...) at /usr/include/c++/10/bits/invoke.h:95
#19 0x00007fffec208d2e in std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0xdfcab8) at /usr/include/c++/10/thread:264
#20 0x00007fffec208d02 in std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > >::operator()(void) (this=0xdfcab8) at /usr/include/c++/10/thread:271
#21 0x00007fffec208ce6 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > > >::_M_run(void) (this=0xdfcab0) at /usr/include/c++/10/thread:215
#22 0x00007fffedf38444 in execute_native_thread_routine () at /lib64/libstdc++.so.6
#23 0x00007fffed9513f9 in start_thread () at /lib64/libpthread.so.0
#24 0x00007fffedc354c3 in clone () at /lib64/libc.so.6
```
```
0x00007fffedf23e53 in std::_Rb_tree_increment(std::_Rb_tree_node_base const*) () from /lib64/libstdc++.so.6
(gdb) bt
#0 0x00007fffedf23e53 in std::_Rb_tree_increment(std::_Rb_tree_node_base const*) () at /lib64/libstdc++.so.6
#1 0x00007fffec0e6993 in std::_Rb_tree_const_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::operator++() (this=0x7ffecaff92d8) at /usr/include/c++/10/bits/stl_tree.h:368
#2 0x00007fffec0dd8e7 in jami::Conference::isHost(std::basic_string_view<char, std::char_traits<char> >) const (this=0x9448cf0, uri="host") at conference.cpp:1158
#3 0x00007fffec0dc040 in jami::Conference::isHandRaised(std::basic_string_view<char, std::char_traits<char> >) const (this=0x9448cf0, uri="host") at conference.cpp:948
#4 0x00007fffec0d634d in operator()() const (__closure=0x7ffafc4be450) at conference.cpp:108
#5 0x00007fffec0dee4c in operator()() (this=0x7ffafc4be450) at manager.h:1057
#6 0x00007fffec0e045e in std::__invoke_impl<void, jami::runOnMainThread<jami::Conference::Conference(bool)::<lambda(std::vector<jami::video::SourceInfo>&&)>::<lambda()> >::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...)
at /usr/include/c++/10/bits/invoke.h:60
#7 0x00007fffec0e005c in std::__invoke_r<void, jami::runOnMainThread<jami::Conference::Conference(bool)::<lambda(std::vector<jami::video::SourceInfo>&&)>::<lambda()> >::<lambda()>&>(struct {...} &) (__fn=...) at /usr/include/c++/10/bits/invoke.h:110
#8 0x00007fffec0dfa21 in std::_Function_handler<void(), jami::runOnMainThread<jami::Conference::Conference(bool)::<lambda(std::vector<jami::video::SourceInfo>&&)>::<lambda()> >::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
at /usr/include/c++/10/bits/std_function.h:291
#9 0x00007fffec134480 in std::function<void ()>::operator()() const (this=0x7ffb241e8d40) at /usr/include/c++/10/bits/std_function.h:622
#10 0x00007fffec20789d in jami::ScheduledExecutor::loop() (this=0xdcb3a0) at scheduled_executor.cpp:137
#11 0x00007fffec206e5b in operator()() const (__closure=0xde11c8) at scheduled_executor.cpp:32
#12 0x00007fffec208dcc in std::__invoke_impl<void, jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> >(std::__invoke_other, struct {...} &&) (__f=...) at /usr/include/c++/10/bits/invoke.h:60
#13 0x00007fffec208d81 in std::__invoke<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> >(struct {...} &&) (__fn=...) at /usr/include/c++/10/bits/invoke.h:95
#14 0x00007fffec208d2e in std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0xde11c8) at /usr/include/c++/10/thread:264
#15 0x00007fffec208d02 in std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > >::operator()(void) (this=0xde11c8) at /usr/include/c++/10/thread:271
#16 0x00007fffec208ce6 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > > >::_M_run(void) (this=0xde11c0) at /usr/include/c++/10/thread:215
#17 0x00007fffedf38444 in execute_native_thread_routine () at /lib64/libstdc++.so.6
#18 0x00007fffed9513f9 in start_thread () at /lib64/libpthread.so.0
#19 0x00007fffedc354c3 in clone () at /lib64/libc.so.6
(gdb)
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/658Lag with decodingAccelerated: true2021-12-23T21:54:34ZSébastien BlinLag with decodingAccelerated: trueIn fact I see 3 bugs:
1. In `SinkClient::update`
doTransfer is True even if video-split is not used yet (cf Conference::sendConferenceInfos(), no delay if createSinks is commented). This must be false if sink is not used. This means th...In fact I see 3 bugs:
1. In `SinkClient::update`
doTransfer is True even if video-split is not used yet (cf Conference::sendConferenceInfos(), no delay if createSinks is commented). This must be false if sink is not used. This means that registerSinkClient is done in LRC even if sink is not used
2. HAVE_SHM is true if libwrap is true in LRC. We should change the configure to have enable-shm with dbus and not with libwrap.
3. `HardwareAccel::transferToMainMemory` is called for every participant, for every sink client. It should be done only once and then cropped by the sink clients.Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/665swarm: removeContact("self") removes all swarm2021-11-26T15:15:24ZSébastien Blinswarm: removeContact("self") removes all swarm# Scenario
Click on remove contact on a conversation with self => it removes all conv# Scenario
Click on remove contact on a conversation with self => it removes all convSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/676Crash in OpenSL Layer - Android2021-12-16T14:19:41ZSébastien BlinCrash in OpenSL Layer - AndroidPotential crash on playstore:
```
backtrace:
#00 pc 0000000000085888 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+248)
#00 pc 00000000009cf9ec /data/app/~~QWALmU1nwmeEvS6MLMbQ2Q==/cx.ring-IkugpkPqtZLOBFWZ6inK1Q==/lib...Potential crash on playstore:
```
backtrace:
#00 pc 0000000000085888 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+248)
#00 pc 00000000009cf9ec /data/app/~~QWALmU1nwmeEvS6MLMbQ2Q==/cx.ring-IkugpkPqtZLOBFWZ6inK1Q==/lib/arm64/libring.so
#00 pc 00000000009d18d8 /data/app/~~QWALmU1nwmeEvS6MLMbQ2Q==/cx.ring-IkugpkPqtZLOBFWZ6inK1Q==/lib/arm64/libring.so
#00 pc 000000000001c0e8 /system/lib64/libwilhelm.so (audioTrack_callBack_pullFromBuffQueue(int, void*, void*)+180)
#00 pc 0000000000079c68 /system/lib64/libaudioclient.so (android::AudioTrack::processAudioBuffer()+2368)
#00 pc 0000000000078f7c /system/lib64/libaudioclient.so (android::AudioTrack::AudioTrackThread::threadLoop()+312)
#00 pc 00000000000154dc /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+460)
#00 pc 00000000000a4d20 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
#00 pc 0000000000014cd8 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
#00 pc 00000000000eb0ec /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 pc 000000000008b850 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
```
On my device:
```
2021-12-15 10:27:34.827 26087-26087/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2021-12-15 10:27:34.827 26087-26087/? A/DEBUG: Build fingerprint: 'motorola/kiev_retailu/kiev:11/RZKS31.Q3-25-15-1/d940e8:user/release-keys'
2021-12-15 10:27:34.827 26087-26087/? A/DEBUG: Revision: 'pvt'
2021-12-15 10:27:34.827 26087-26087/? A/DEBUG: ABI: 'arm64'
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: Timestamp: 2021-12-15 10:27:34-0500
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: pid: 22160, tid: 26084, name: AudioTrack >>> cx.ring <<<
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: uid: 10387
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8ecfe25800000000
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: x0 8ecfe25800000000 x1 b4000072d1ce0b00 x2 00000000000001e0 x3 8ecfe25800000000
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: x4 b4000072d1ce0ce0 x5 8ecfe258000001e0 x6 0000000000000000 x7 0000000000000000
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: x8 00000000000000f0 x9 0000000000000000 x10 8ecfe26000000071 x11 0000000000000000
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: x12 0000000000000000 x13 0000000000000000 x14 0000000000000002 x15 00000071e214c000
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: x16 0000007185219fe8 x17 0000007483a222c0 x18 0000007180846000 x19 b400007331c1c400
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: x20 b400007331c1b9b0 x21 00000071e214ba00 x22 b4000072a1c21130 x23 b400007331c1bbd8
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: x24 000000748308cea9 x25 00000071e214c000 x26 0000007183fc8454 x27 00000074851c0140
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: x28 00000071e214ba08 x29 00000071e214b5d0
2021-12-15 10:27:34.828 26087-26087/? A/DEBUG: lr 0000007183fc7f50 sp 00000071e214b5b0 pc 0000007483a22248 pst 0000000020001000
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: backtrace:
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #00 pc 000000000004a248 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+248) (BuildId: 1fdafb7d457cc367eb58ced21a4fa8ac)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #01 pc 0000000000e79f4c /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (std::__ndk1::enable_if<(is_same<std::__ndk1::remove_const<short const>::type, short>::value) && (is_trivially_copy_assignable<short>::value), short*>::type std::__ndk1::__copy<short const, short>(short const*, short const*, short*)+80)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #02 pc 0000000000e79eec /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (short* std::__ndk1::copy<short const*, short*>(short const*, short const*, short*)+84)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #03 pc 0000000000e747f8 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (std::__ndk1::enable_if<__is_cpp17_random_access_iterator<short const*>::value, short*>::type std::__ndk1::copy_n<short const*, int, short*>(short const*, int, short*)+52)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #04 pc 0000000000e72000 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (jami::OpenSLLayer::engineServiceRing()+572)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #05 pc 0000000000e774d4 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (decltype(*(std::__ndk1::forward<jami::OpenSLLayer*&>(fp0)).*fp()) std::__ndk1::__invoke<void (jami::OpenSLLayer::*&)(), jami::OpenSLLayer*&, void>(void (jami::OpenSLLayer::*&)(), jami::OpenSLLayer*&)+100)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #06 pc 0000000000e77460 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (std::__ndk1::__bind_return<void (jami::OpenSLLayer::*)(), std::__ndk1::tuple<jami::OpenSLLayer*>, std::__ndk1::tuple<>, __is_valid_bind_return<void (jami::OpenSLLayer::*)(), std::__ndk1::tuple<jami::OpenSLLayer*>, std::__ndk1::tuple<> >::value>::type std::__ndk1::__apply_functor<void (jami::OpenSLLayer::*)(), std::__ndk1::tuple<jami::OpenSLLayer*>, 0ul, std::__ndk1::tuple<> >(void (jami::OpenSLLayer::*&)(), std::__ndk1::tuple<jami::OpenSLLayer*>&, std::__ndk1::__tuple_indices<0ul>, std::__ndk1::tuple<>&&)+72)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #07 pc 0000000000e77408 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (std::__ndk1::__bind_return<void (jami::OpenSLLayer::*)(), std::__ndk1::tuple<jami::OpenSLLayer*>, std::__ndk1::tuple<>, __is_valid_bind_return<void (jami::OpenSLLayer::*)(), std::__ndk1::tuple<jami::OpenSLLayer*>, std::__ndk1::tuple<> >::value>::type std::__ndk1::__bind<void (jami::OpenSLLayer::*)(), jami::OpenSLLayer*>::operator()<>()+40)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #08 pc 0000000000e773bc /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (decltype(std::__ndk1::forward<std::__ndk1::__bind<void (jami::OpenSLLayer::*)(), jami::OpenSLLayer*>&>(fp)()) std::__ndk1::__invoke<std::__ndk1::__bind<void (jami::OpenSLLayer::*)(), jami::OpenSLLayer*>&>(std::__ndk1::__bind<void (jami::OpenSLLayer::*)(), jami::OpenSLLayer*>&)+24)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #09 pc 0000000000e77370 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (void std::__ndk1::__invoke_void_return_wrapper<void>::__call<std::__ndk1::__bind<void (jami::OpenSLLayer::*)(), jami::OpenSLLayer*>&>(std::__ndk1::__bind<void (jami::OpenSLLayer::*)(), jami::OpenSLLayer*>&)+24)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #10 pc 0000000000e77348 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (std::__ndk1::__function::__alloc_func<std::__ndk1::__bind<void (jami::OpenSLLayer::*)(), jami::OpenSLLayer*>, std::__ndk1::allocator<std::__ndk1::__bind<void (jami::OpenSLLayer::*)(), jami::OpenSLLayer*> >, void ()>::operator()()+24)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #11 pc 0000000000e76308 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (std::__ndk1::__function::__func<std::__ndk1::__bind<void (jami::OpenSLLayer::*)(), jami::OpenSLLayer*>, std::__ndk1::allocator<std::__ndk1::__bind<void (jami::OpenSLLayer::*)(), jami::OpenSLLayer*> >, void ()>::operator()()+24)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #12 pc 0000000000c2dc14 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (std::__ndk1::__function::__value_func<void ()>::operator()() const+56)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #13 pc 0000000000c2d6f0 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (std::__ndk1::function<void ()>::operator()() const+20)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #14 pc 0000000000e7a5d0 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (jami::opensl::AudioPlayer::processSLCallback(SLAndroidSimpleBufferQueueItf_ const* const*)+336)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #15 pc 0000000000e7a470 /data/app/~~Vlyg2gq6SPkC7Wb7M_ToPg==/cx.ring-u9ihF0JKX163ILKSJyh-FA==/lib/arm64/libring.so (jami::opensl::bqPlayerCallback(SLAndroidSimpleBufferQueueItf_ const* const*, void*)+28)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #16 pc 000000000001c118 /system/lib64/libwilhelm.so (audioTrack_callBack_pullFromBuffQueue(int, void*, void*)+180) (BuildId: 3dc436cad2f5774c2a5d1236156e2640)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #17 pc 0000000000078b78 /system/lib64/libaudioclient.so (android::AudioTrack::processAudioBuffer()+2376) (BuildId: e6b35b953c2ab1e220e508553e2c3803)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #18 pc 0000000000077f40 /system/lib64/libaudioclient.so (android::AudioTrack::AudioTrackThread::threadLoop()+272) (BuildId: e6b35b953c2ab1e220e508553e2c3803)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #19 pc 0000000000015598 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+460) (BuildId: 5d6af74124211886d954d61c96514a46)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #20 pc 00000000000a1ec8 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+144) (BuildId: 8dd68419fe710778585e2c5c133d86e0)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #21 pc 0000000000014d94 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412) (BuildId: 5d6af74124211886d954d61c96514a46)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #22 pc 00000000000afc6c /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) (BuildId: 1fdafb7d457cc367eb58ced21a4fa8ac)
2021-12-15 10:27:34.868 26087-26087/? A/DEBUG: #23 pc 00000000000502c8 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 1fdafb7d457cc367eb58ced21a4fa8ac)
2021-12-15 10:27:35.236 991-991/? E/tombstoned: Tombstone written to: /data/tombstones/tombstone_11
2021-12-15 10:27:35.274 1697-8175/? E/FrameEvents: updateAcquireFence: Did not find frame.
```
Randomly happens when receiving a crash.
Observations. buf->cap_ is completely incorrect, so it's rather a bad queue or a bad buf_manager.hSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/714Conversation: status erased, removed but conversation is still in contact.yaml2022-02-09T21:49:59ZMaxime CalletConversation: status erased, removed but conversation is still in contact.yamlWhile syncing conversations data from another device, some conversations are still listed in the conversation.yml file while their status is erased and removed.
The daemon should clear this conversation.
json example for a conversatio...While syncing conversations data from another device, some conversations are still listed in the conversation.yml file while their status is erased and removed.
The daemon should clear this conversation.
json example for a conversation:
```
"7e20d508e92e58928003c8a6b580e4374004ada4": {
"created": 1643907807,
"erased": 1643924392,
"id": "7e20d508e92e58928003c8a6b580e4374004ada4",
"lastDisplayed": "",
"members": [
{
"uri": "77d1acf5b271d7c73032ef010241b94fb3a32b07"
}
],
"removed": 1643924392
},
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/715IceTransport: Deadlock on Call::hangUp()2022-02-07T22:58:58ZOlivier DionIceTransport: Deadlock on Call::hangUp()Detected with scenario `bulk-call` with tracepoints enabled.
Deadlocks happens usually after 1 or 2 calls.
[gdb.txt](/uploads/2aa2b322b38006f9bac1e5c44213f52b/gdb.txt)
Deadlock graph:
```text
Thread 1
|
| jami::Obser...Detected with scenario `bulk-call` with tracepoints enabled.
Deadlocks happens usually after 1 or 2 calls.
[gdb.txt](/uploads/2aa2b322b38006f9bac1e5c44213f52b/gdb.txt)
Deadlock graph:
```text
Thread 1
|
| jami::Observable::detach() : mutex_
|
v
+-->Thread 44
| |
| | jami::IceTransport::send() : ice_st->grp_lock
| |
| v
| Thread 43
| |
| | IceTransport::Impl::getSelectedCandidate() : iceMutex_
| |
+------+
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/727Camera not opening if rdv host joins2023-02-17T13:51:27ZSébastien BlinCamera not opening if rdv host joins# Scenario
+ Alice is a rdv host
+ Bob calls alice (he will be alone in a rdv)
+ Alice joins the call
# Expected
+ Alice and Bob should see their video in the rdv
# Current
+ Alice's camera is not opening and mute is broken
# Obser...# Scenario
+ Alice is a rdv host
+ Bob calls alice (he will be alone in a rdv)
+ Alice joins the call
# Expected
+ Alice and Bob should see their video in the rdv
# Current
+ Alice's camera is not opening and mute is broken
# Observation
+ Device is busy and not opening
+ The camera become unusable for all apps as busy, even after leaving jamihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/738Swarm: infinite loading loop and incorrect merge check2022-06-27T19:40:37ZSébastien BlinSwarm: infinite loading loop and incorrect merge check# Scenario
+ Migrate an account
+ Do a merge commit right after this
# Expected
The repository should have correct informations
# Current result
The repository is malformed and causes infinite loading messages loop
# Detected probl...# Scenario
+ Migrate an account
+ Do a merge commit right after this
# Expected
The repository should have correct informations
# Current result
The repository is malformed and causes infinite loading messages loop
# Detected problems
+ LRC should not call loadingMessages in loop in case of an error
+ we should check the author of the merge commit
+ we should never create a merge commit after a migration without adding the certificateSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/855Issue if you add an unkown contact by sending text messages - Can't decline a...2024-02-19T16:14:56ZElysIssue if you add an unkown contact by sending text messages - Can't decline a contact request (same contact multiple times in contact list?) Multi-Device issue?using newest version of Jami Windows 10 and Android
just Windows 10 (="username1"): enable "Allow calls from unknown peers" AND "Allow incoming files from unknown contacts"
Steps to reproduce:
1. Windows 10: Remove (NOT block) a contac...using newest version of Jami Windows 10 and Android
just Windows 10 (="username1"): enable "Allow calls from unknown peers" AND "Allow incoming files from unknown contacts"
Steps to reproduce:
1. Windows 10: Remove (NOT block) a contact ("username2") from your contact list; Android keep the Windows 10 user ("username1") in the contact list
1. Android: Write a text message (Android -> Windows 10)
1. Windows 10: You get an invitation
1. Windows 10: Accept the invitation
1. Windows 10: You get an error message "An error occurred while fetching this repository"
1. Windows 10: You only view an invitation but the contact ("username2") won't move to the contact list
1. Windows 10: You have to delete the contact
Now exit Jami (Windows 10) and enter Jami again
Another option: Starting from step 5 mentioned above
1. Windows 10: Now instead of a username you get the identifier of the contact; you accept the contact request
1. Windows 10: You (also) get an error message "An error occurred while fetching this repository"
1. Now exit Jami (just Windows 10)
1. Windows 10: enter Jami again; you get the message "Waiting until [identifier] connects to synchronize the conversation." but after a few seconds still "An error occurred while fetching this repository"
1. Windows 10: Now remove the contact ("username2") it does NOT work
1. Just Windows 10: Exit Jami and enter Jami again: Contact ("username2") is still in the contact list; If you try to remove the contact again it's still not possible
You have to **block** (not delete!) the contact to get rid of it in the contact list
As soon as you unblock the contact you get the **same contact twice** in the contact list: One contact will show just "Swarm created", the other (same) contact will still show "An error occurred while fetching this repository"; If you make a call Android -> Windows 10 the second same contact will receive the call
However - now you can remove the contact and it will be goneSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/779conference: detached host appearing2023-12-27T18:01:47ZAline Gondim Santosconference: detached host appearingJoin a rdv from two different devices;
Crash one of them (force jami quit without correctly ending the call)
On the other one you will see the host in the place of this crashed participant. If the crashed participant is still there (a ...Join a rdv from two different devices;
Crash one of them (force jami quit without correctly ending the call)
On the other one you will see the host in the place of this crashed participant. If the crashed participant is still there (a frozen component), you can change the layout one or two times and the host will take its place.
Expected: the crashed participant should disappear and the host should not take its place.Aline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/781TURN init add TURN after timeout2022-12-07T21:22:27ZSébastien BlinTURN init add TURN after timeout# Scenario
+ Set turnserver to 1.1.1.1
+ start a call => timeout 30 sec before initialization# Scenario
+ Set turnserver to 1.1.1.1
+ start a call => timeout 30 sec before initializationSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/861Regression sdbus-cpp: Quit client doesn't leave daemon2023-06-15T19:17:20ZSébastien BlinRegression sdbus-cpp: Quit client doesn't leave daemon# Scenario
+ Launch client
+ Launch daemon
+ Quit client via systray
# Expected
Daemon should leave
# Current result
Daemon stays up# Scenario
+ Launch client
+ Launch daemon
+ Quit client via systray
# Expected
Daemon should leave
# Current result
Daemon stays upSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/871Lock on long merge commits2023-10-26T17:52:03ZSébastien BlinLock on long merge commitsOn Jami:Core, sometimes, we can't send messages. A thread seems to be blocked on git_merge_commits (with a lot of merge_annotated_commit)
The reason is still unclear.On Jami:Core, sometimes, we can't send messages. A thread seems to be blocked on git_merge_commits (with a lot of merge_annotated_commit)
The reason is still unclear.Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/878CPU rapidly increased during video call when video muted on another side2023-09-08T15:24:55ZKateryna KostiukCPU rapidly increased during video call when video muted on another sidesteps to reproduce:
- Start a video call between A and B.
- Monitor CPU usage on A.
- Mute video on B.
- On A, CPU usage increases and stays high.steps to reproduce:
- Start a video call between A and B.
- Monitor CPU usage on A.
- Mute video on B.
- On A, CPU usage increases and stays high.Adrien BéraudSébastien BlinAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/928heap-use-after-free in turn_sock (TCP)2024-01-09T16:26:58ZSébastien Blinheap-use-after-free in turn_sock (TCP)### Describe the bug
No precise scenario, but ASAN crash detected randomly:
```
=================================================================
==15049==ERROR: AddressSanitizer: heap-use-after-free on address 0x0002b00b5648 at pc 0x0...### Describe the bug
No precise scenario, but ASAN crash detected randomly:
```
=================================================================
==15049==ERROR: AddressSanitizer: heap-use-after-free on address 0x0002b00b5648 at pc 0x0001056f5610 bp 0x00029dd327b0 sp 0x00029dd327a8
#0 0x1056f560c in stun_on_request_complete+0xc8c (Jami:arm64+0x102a8560c)
#1 0x1056ea7f4 in stun_tsx_on_complete+0x2a8 (Jami:arm64+0x102a7a7f4)
#2 0x1056f2498 in retransmit_timer_callback+0x12c (Jami:arm64+0x102a82498)
#3 0x105685fec in pj_timer_heap_poll+0x468 (Jami:arm64+0x102a15fec)
#4 0x104a4acbc in dhtnet::IceTransport::Impl::handleEvents(unsigned int)+0x110 (Jami:arm64+0x101ddacbc)
#5 0x104a65a5c in void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, dhtnet::IceTransport::Impl::initIceInstance(dhtnet::IceTransportOptions const&)::$_6>>(void*)+0x154 (Jami:arm64+0x101df5a5c)
#6 0x186caf030 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x7030)
#7 0x186ca9e38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1e38)
0x0002b00b5648 is located 200 bytes inside of 256-byte region [0x0002b00b5580,0x0002b00b5680)
freed by thread T1102 here:
#0 0x111b5ace0 in wrap_free+0x98 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x52ce0)
#1 0x1056738d4 in pj_pool_destroy_int+0xbc (Jami:arm64+0x102a038d4)
#2 0x105674788 in cpool_release_pool+0xec (Jami:arm64+0x102a04788)
#3 0x105704130 in dataconn_on_data_read+0x180 (Jami:arm64+0x102a94130)
#4 0x105663b48 in ioqueue_on_read_complete+0x39c (Jami:arm64+0x1029f3b48)
#5 0x1056537a4 in ioqueue_dispatch_read_event+0x700 (Jami:arm64+0x1029e37a4)
#6 0x1056587bc in pj_ioqueue_poll+0x900 (Jami:arm64+0x1029e87bc)
#7 0x104a4ad9c in dhtnet::IceTransport::Impl::handleEvents(unsigned int)+0x1f0 (Jami:arm64+0x101ddad9c)
#8 0x104a65a5c in void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, dhtnet::IceTransport::Impl::initIceInstance(dhtnet::IceTransportOptions const&)::$_6>>(void*)+0x154 (Jami:arm64+0x101df5a5c)
#9 0x186caf030 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x7030)
#10 0x186ca9e38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1e38)
previously allocated by thread T1102 here:
#0 0x111b5aba4 in wrap_malloc+0x94 (libclang_rt.asan_osx_dynamic.dylib:arm64e+0x52ba4)
#1 0x105660234 in default_block_alloc+0x50 (Jami:arm64+0x1029f0234)
#2 0x105672d68 in pj_pool_allocate_find+0x110 (Jami:arm64+0x102a02d68)
#3 0x105672f94 in pj_pool_calloc+0x7c (Jami:arm64+0x102a02f94)
#4 0x1056633a4 in pj_activesock_create+0x254 (Jami:arm64+0x1029f33a4)
#5 0x105700f6c in turn_on_connection_attempt+0x9d0 (Jami:arm64+0x102a90f6c)
#6 0x1056f59e8 in stun_on_rx_indication+0xe4 (Jami:arm64+0x102a859e8)
#7 0x1056e9914 in pj_stun_session_on_rx_pkt+0x69c (Jami:arm64+0x102a79914)
#8 0x1056fb5e4 in pj_turn_session_on_rx_pkt2+0x1ec (Jami:arm64+0x102a8b5e4)
#9 0x1056fb2f8 in pj_turn_session_on_rx_pkt+0x10c (Jami:arm64+0x102a8b2f8)
#10 0x105703930 in on_data_read_asock+0x468 (Jami:arm64+0x102a93930)
#11 0x105663a5c in ioqueue_on_read_complete+0x2b0 (Jami:arm64+0x1029f3a5c)
#12 0x1056537a4 in ioqueue_dispatch_read_event+0x700 (Jami:arm64+0x1029e37a4)
#13 0x1056587bc in pj_ioqueue_poll+0x900 (Jami:arm64+0x1029e87bc)
#14 0x104a4ad9c in dhtnet::IceTransport::Impl::handleEvents(unsigned int)+0x1f0 (Jami:arm64+0x101ddad9c)
#15 0x104a65a5c in void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, dhtnet::IceTransport::Impl::initIceInstance(dhtnet::IceTransportOptions const&)::$_6>>(void*)+0x154 (Jami:arm64+0x101df5a5c)
#16 0x186caf030 in _pthread_start+0x84 (libsystem_pthread.dylib:arm64e+0x7030)
#17 0x186ca9e38 in thread_start+0x4 (libsystem_pthread.dylib:arm64e+0x1e38)
```
What I see:
+ `turn_sock.c:dataconn_on_data_read` is called with status = 120054 & size = 0
+ This causes a dataconn_cleanup on the connection
+ `turn_session.c:stun_on_request_complete` is then called with method = PJ_STUN_CONNECTION_BIND_METHOD & status = 370004
I guess dataconn_cleanup is called again in turn_on_connection_bind_status but I'm not sure yet.
### Steps to reproduce
None detected yet
### PJSIP version
2.13
### Context
+ macOS, but I guess all platforms should get the same bug
+ Custom patched version, but turn_session/turn_sock should be the same.
### Log, call stack, etc
```shell
cf first part
```
https://github.com/pjsip/pjproject/issues/3776Sébastien BlinSébastien Blin