jami-daemon issueshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues2023-02-06T20:57:50Zhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/428Re-work network congestion detection2023-02-06T20:57:50ZPierre LespagnolRe-work network congestion detectionIn some cases the congestion detection is not efficient, increase the sensibility of the algorithm will help to detect more congestions.In some cases the congestion detection is not efficient, increase the sensibility of the algorithm will help to detect more congestions.BacklogPierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/479Re-enable FEC!2021-03-19T17:44:58ZSébastien BlinRe-enable FEC!https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/518Recording: avoid dead lock with conference2021-04-16T13:43:10ZAline Gondim SantosRecording: avoid dead lock with conferenceAlice call rdv point. She is alone in the rdv conference.
Alice tries to record the call. She will not succeed recording and the call continues normally.
Alice hangup and get stuck.Alice call rdv point. She is alone in the rdv conference.
Alice tries to record the call. She will not succeed recording and the call continues normally.
Alice hangup and get stuck.Aline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/531Crash in sendTextMessage2021-04-27T19:15:54ZSébastien BlinCrash in sendTextMessage```
backtrace:
#00 pc 000000000004dc24 /apex/com.android.runtime/lib64/bionic/libc.so (abort+164)
#00 pc 000000000009ce88 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libc++_shared.so (abort_m...```
backtrace:
#00 pc 000000000004dc24 /apex/com.android.runtime/lib64/bionic/libc.so (abort+164)
#00 pc 000000000009ce88 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libc++_shared.so (abort_message) (SourceCode: /buildbot/src/android/ndk-release-r21/external/libcxx/../../external/libcxxabi/src/abort_message.cpp:76)
#00 pc 000000000009d07c /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libc++_shared.so (demangling_terminate_handler()) (SourceCode: /buildbot/src/android/ndk-release-r21/external/libcxx/../../external/libcxxabi/src/cxa_default_handlers.cpp:62)
#00 pc 00000000000aead0 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libc++_shared.so (std::__terminate(void (*)())) (SourceCode: /buildbot/src/android/ndk-release-r21/external/libcxx/../../external/libcxxabi/src/cxa_handlers.cpp:59)
#00 pc 00000000000ae0fc /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libc++_shared.so (__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*)) (SourceCode: /buildbot/src/android/ndk-release-r21/external/libcxx/../../external/libcxxabi/src/cxa_exception.cpp:152)
#00 pc 00000000000ae058 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libc++_shared.so (__cxa_throw) (SourceCode: /buildbot/src/android/ndk-release-r21/external/libcxx/../../external/libcxxabi/src/cxa_exception.cpp:284)
#00 pc 000000000009c1dc /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libc++_shared.so (std::__ndk1::__throw_system_error(int, char const*)) (SourceCode: /buildbot/src/android/ndk-release-r21/external/libcxx/src/system_error.cpp:287)
#00 pc 0000000000473c50 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (std::__ndk1::unique_lock<std::__ndk1::mutex>::unlock()) (SourceCode: /opt/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__mutex_base:265)
#00 pc 0000000000473c50 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (jami::JamiAccount::sendTextMessage(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, unsigned long, bool)::$_67::operator()(dht::Hash<20ul> const&) const::'lambda'(bool)::operator()(bool) const) (SourceCode: /var/lib/jenkins/workspace/packaging-deploy-android-pipeline/ring-project/client-android/../daemon/src/jamidht/jamiaccount.cpp:3597)
#00 pc 0000000000473c50 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (decltype(std::__ndk1::forward<jami::JamiAccount::sendTextMessage(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, unsigned long, bool)::$_67::operator()(dht::Hash<20ul> const&) const::'lambda'(bool)&>(fp)(std::__ndk1::forward<bool>(fp0))) std::__ndk1::__invoke<jami::JamiAccount::sendTextMessage(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, unsigned long, bool)::$_67::operator()(dht::Hash<20ul> const&) const::'lambda'(bool)&, bool>(jami::JamiAccount::sendTextMessage(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, unsigned long, bool)::$_67::operator()(dht::Hash<20ul> const&) const::'lambda'(bool)&, bool&&)) (SourceCode: /opt/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/type_traits:3501)
#00 pc 0000000000473c50 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (void std::__ndk1::__invoke_void_return_wrapper<void>::__call<jami::JamiAccount::sendTextMessage(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, unsigned long, bool)::$_67::operator()(dht::Hash<20ul> const&) const::'lambda'(bool)&, bool>(jami::JamiAccount::sendTextMessage(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, unsigned long, bool)::$_67::operator()(dht::Hash<20ul> const&) const::'lambda'(bool)&, bool&&)) (SourceCode: /opt/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__functional_base:348)
#00 pc 0000000000473c50 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (std::__ndk1::__function::__alloc_func<jami::JamiAccount::sendTextMessage(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, unsigned long, bool)::$_67::operator()(dht::Hash<20ul> const&) const::'lambda'(bool), std::__ndk1::allocator<jami::JamiAccount::sendTextMessage(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, unsigned long, bool)::$_67::operator()(dht::Hash<20ul> const&) const::'lambda'(bool)>, void (bool)>::operator()(bool&&)) (SourceCode: /opt/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/functional:1540)
#00 pc 0000000000473c50 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (std::__ndk1::__function::__func<jami::JamiAccount::sendTextMessage(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, unsigned long, bool)::$_67::operator()(dht::Hash<20ul> const&) const::'lambda'(bool), std::__ndk1::allocator<jami::JamiAccount::sendTextMessage(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, std::__ndk1::map<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >, std::__ndk1::less<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > >, std::__ndk1::allocator<std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > > > > const&, unsigned long, bool)::$_67::operator()(dht::Hash<20ul> const&) const::'lambda'(bool)>, void (bool)>::operator()(bool&&)) (SourceCode: /opt/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/functional:1714)
#00 pc 00000000006f0c80 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (std::__ndk1::__function::__func<std::__ndk1::__bind<std::__ndk1::function<void (bool)>, std::__ndk1::placeholders::__ph<1> const&>, std::__ndk1::allocator<std::__ndk1::__bind<std::__ndk1::function<void (bool)>, std::__ndk1::placeholders::__ph<1> const&> >, void (bool, std::__ndk1::vector<std::__ndk1::shared_ptr<dht::Node>, std::__ndk1::allocator<std::__ndk1::shared_ptr<dht::Node> > > const&)>::operator()(bool&&, std::__ndk1::vector<std::__ndk1::shared_ptr<dht::Node>, std::__ndk1::allocator<std::__ndk1::shared_ptr<dht::Node> > > const&))
#00 pc 0000000000713a38 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (std::__ndk1::__function::__func<dht::DhtRunner::bindOpDoneCallback(std::__ndk1::function<void (bool, std::__ndk1::vector<std::__ndk1::shared_ptr<dht::Node>, std::__ndk1::allocator<std::__ndk1::shared_ptr<dht::Node> > > const&)>&&)::$_6, std::__ndk1::allocator<dht::DhtRunner::bindOpDoneCallback(std::__ndk1::function<void (bool, std::__ndk1::vector<std::__ndk1::shared_ptr<dht::Node>, std::__ndk1::allocator<std::__ndk1::shared_ptr<dht::Node> > > const&)>&&)::$_6>, void (bool, std::__ndk1::vector<std::__ndk1::shared_ptr<dht::Node>, std::__ndk1::allocator<std::__ndk1::shared_ptr<dht::Node> > > const&)>::operator()(bool&&, std::__ndk1::vector<std::__ndk1::shared_ptr<dht::Node>, std::__ndk1::allocator<std::__ndk1::shared_ptr<dht::Node> > > const&)) (SourceCode: dhtrunner.cpp)
#00 pc 0000000000732724 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (std::__ndk1::__function::__func<dht::DhtProxyClient::put(dht::Hash<20ul> const&, std::__ndk1::shared_ptr<dht::Value>, std::__ndk1::function<void (bool, std::__ndk1::vector<std::__ndk1::shared_ptr<dht::Node>, std::__ndk1::allocator<std::__ndk1::shared_ptr<dht::Node> > > const&)>, std::__ndk1::chrono::time_point<std::__ndk1::chrono::steady_clock, std::__ndk1::chrono::duration<long long, std::__ndk1::ratio<1l, 1000000000l> > >, bool)::$_5::operator()(bool) const::'lambda'(), std::__ndk1::allocator<dht::DhtProxyClient::put(dht::Hash<20ul> const&, std::__ndk1::shared_ptr<dht::Value>, std::__ndk1::function<void (bool, std::__ndk1::vector<std::__ndk1::shared_ptr<dht::Node>, std::__ndk1::allocator<std::__ndk1::shared_ptr<dht::Node> > > const&)>, std::__ndk1::chrono::time_point<std::__ndk1::chrono::steady_clock, std::__ndk1::chrono::duration<long long, std::__ndk1::ratio<1l, 1000000000l> > >, bool)::$_5::operator()(bool) const::'lambda'()>, void ()>::operator()()) (SourceCode: dht_proxy_client.cpp)
#00 pc 0000000000725a38 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (dht::DhtProxyClient::periodic(unsigned char const*, unsigned long, dht::SockAddr, std::__ndk1::chrono::time_point<std::__ndk1::chrono::steady_clock, std::__ndk1::chrono::duration<long long, std::__ndk1::ratio<1l, 1000000000l> > > const&))
#00 pc 0000000000739618 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (dht::DhtProxyClient::periodic(unsigned char const*, unsigned long, sockaddr const*, unsigned int, std::__ndk1::chrono::time_point<std::__ndk1::chrono::steady_clock, std::__ndk1::chrono::duration<long long, std::__ndk1::ratio<1l, 1000000000l> > > const&))
#00 pc 000000000070baa0 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (dht::DhtRunner::loop_())
#00 pc 0000000000713078 /data/app/~~gpEGz9izymetwpYzDyHGhw==/cx.ring-6Dl8MU7JomtuXJ_732xHGQ==/lib/arm64/libring.so (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, dht::DhtRunner::run(dht::DhtRunner::Config const&, dht::DhtRunner::Context&&)::$_3> >(void*)) (SourceCode: dhtrunner.cpp)
#00 pc 00000000000b4fb4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 pc 000000000004fb64 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/526TURN caching issue2021-04-27T19:16:40ZSébastien BlinTURN caching issue# Scenario
+ Use Jami
+ Close the computer
+ Re-open it
+ A connectivity change occurs and TURN is re-cached.
# Expected
If the TURN is available, the cache should be correctly updated
# Current
Sometimes the cache is deleted
# Rea...# Scenario
+ Use Jami
+ Close the computer
+ Re-open it
+ A connectivity change occurs and TURN is re-cached.
# Expected
If the TURN is available, the cache should be correctly updated
# Current
Sometimes the cache is deleted
# Reason
NM is giving the connectivity change before that the network is really available, so the resolution can give a "network unreachable". Instead of that, we should wait that the DHT is connected (so that we are ready to use Jami).Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/513malloc(): unaligned tcache chunk detected in ftp_server2021-04-28T14:35:16ZSébastien Blinmalloc(): unaligned tcache chunk detected in ftp_server```
] [FTP] file closed, rx 101 on 101
[1618325820.589|13013|p2p.cpp :352 ] Channel down for incoming transfer with id(10909450105909471284)
[1618325820.589|10975|ftp_server.cpp :66 ] [FTP] server closed
malloc(): unalign...```
] [FTP] file closed, rx 101 on 101
[1618325820.589|13013|p2p.cpp :352 ] Channel down for incoming transfer with id(10909450105909471284)
[1618325820.589|10975|ftp_server.cpp :66 ] [FTP] server closed
malloc(): unaligned tcache chunk detected
--Type <RET> for more, q to quit, c to continue without paging--
Thread 252 "dring" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffc0ff9640 (LWP 13013)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49 ../sysdeps/unix/sysv/linux/raise.c: Aucun fichier ou dossier de ce type.
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1 0x00007ffff717b864 in __GI_abort () at abort.c:79
#2 0x00007ffff71de736 in __libc_message (action=action@entry=do_abort,
fmt=fmt@entry=0x7ffff7303b9c "%s\n") at ../sysdeps/posix/libc_fatal.c:155
#3 0x00007ffff71e708c in malloc_printerr (
str=str@entry=0x7ffff73066d0 "malloc(): unaligned tcache chunk detected")
at malloc.c:5628
#4 0x00007ffff71ec42c in tcache_get (tc_idx=<optimized out>) at malloc.c:3103
#5 GI_libc_malloc (bytes=513) at malloc.c:3221
#6 0x00007ffff7559cac in operator new(unsigned long) ()
from /lib/x86_64-linux-gnu/libstdc++.so.6
#7 0x00007ffff75f37d5 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::reserve(unsigned long) ()
from /lib/x86_64-linux-gnu/libstdc++.so.6
#8 0x00007ffff75e9a23 in std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::overflow(int) ()
from /lib/x86_64-linux-gnu/libstdc++.so.6
#9 0x00007ffff75f1aaa in std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, long) () from /lib/x86_64-linux-gnu/libstdc++.so.6
#10 0x00007ffff75e3ee4 in std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long) ()
from /lib/x86_64-linux-gnu/libstdc++.so.6
--Type <RET> for more, q to quit, c to continue without paging--
#11 0x00007ffff75e41cc in std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char) () from /lib/x86_64-linux-gnu/libstdc++.so.6
#12 0x00005555559f5a5e in contextHeader (file=0x555556a0e3bf "ftp_server.cpp",
line=213) at logger.cpp:131
#13 0x00005555559f5ee8 in jami::Logger::vlog (level=7,
file=0x555556a0e3bf "ftp_server.cpp", line=213, linefeed=true,
format=0x5555569c725b "%s", ap=0x7fffc0ff59c0) at logger.cpp:277
#14 0x00005555559f5de5 in jami::Logger::log (level=7,
file=0x555556a0e3bf "ftp_server.cpp", line=213, linefeed=true,
format=0x5555569c725b "%s") at logger.cpp:226
#15 0x00005555557492a3 in jami::Logger::~Logger (this=0x7fffc0ff5b30,
__in_chrg=<optimized out>) at ./logger.h:109
#16 0x0000555555a346f5 in jami::FtpServer::handleHeader (this=0x7fff60009780,
key="Content-Length", value="101") at ftp_server.cpp:213
#17 0x0000555555a345cc in jami::FtpServer::parseLine (this=0x7fff60009780,
line="Content-Length: 101") at ftp_server.cpp:206
#18 0x0000555555a343d0 in jami::FtpServer::parseStream (this=0x7fff60009780,
buffer="Content-Length: 101\nDisplay-Name: profile.vcf\nOffset: 0\n\n")
at ftp_server.cpp:184
#19 0x0000555555a34141 in jami::FtpServer::write (this=0x7fff60009780,
buffer="Content-Length: 101\nDisplay-Name: profile.vcf\nOffset: 0\n\n")
at ftp_server.cpp:148
--Type <RET> for more, q to quit, c to continue without paging--
#20 0x0000555555bc11e5 in operator() (__closure=0x7fffc0ff6020,
buf=0x7fff10005560 "Content-Length: 101\nDisplay-Name: profile.vcf\nOffset: 0\n\nvcf", len=57) at channeled_transfers.cpp:81
#21 0x0000555555bc2097 in std::invoke_impl<long unsigned int, jami::ChanneledIncomingTransfer::ChanneledIncomingTransfer(const std::shared_ptr<jami::ChannelSocket>&, const std::shared_ptr<jami::FtpServer>&, jami::OnStateChangedCb&&)::<lambda(const uint8_t*, size_t)>&, unsigned char const*, long unsigned int>(std::invoke_other, struct {...} &) (__f=...) at /usr/include/c++/10/bits/invoke.h:60
#22 0x0000555555bc20fd in std::invoke_r<long int, jami::ChanneledIncomingTransfer::ChanneledIncomingTransfer(const std::shared_ptr<jami::ChannelSocket>&, const std::shared_ptr<jami::FtpServer>&, jami::OnStateChangedCb&&)::<lambda(const uint8_t*, size_t)>&, unsigned char const*, long unsigned int>(struct {...} &) (
fn=...) at /usr/include/c++/10/bits/invoke.h:113
#23 0x0000555555bc1acd in std::_Function_handler<long int(unsigned char const*, long unsigned int), jami::ChanneledIncomingTransfer::ChanneledIncomingTransfer(const std::shared_ptr<jami::ChannelSocket>&, const std::shared_ptr<jami::FtpServer>&, jami::OnStateChangedCb&&)::<lambda(const uint8_t*, size_t)> >::Minvoke(const std::_Any_data &, const unsigned char *&&, unsigned long &&) (
functor=...,
args#0=@0x7fffc0ff5f50: 0x7fff10005560 "Content-Length: 101\nDisplay-Name: profile.vcf\nOffset: 0\n\nvcf", __args#1=@0x7fffc0ff5f48: 57)
at /usr/include/c++/10/bits/std_function.h:291
#24 0x00005555558c2775 in std::function<long (unsigned char const*, unsigned lon--Type <RET> for more, q to quit, c to continue without paging--
g)>::operator()(unsigned char const*, unsigned long) const (
this=0x7fffc0ff6020,
args#0=0x7fff10005560 "Content-Length: 101\nDisplay-Name: profile.vcf\nOffset: 0\n\nvcf", args#1=57) at /usr/include/c++/10/bits/std_function.h:622
#25 0x00005555558bb4cf in jami::MultiplexedSocket::Impl::handleChannelPacket (
this=0x7ffefc06a960, channel=9901, pkt=...) at multiplexed_socket.cpp:320
#26 0x00005555558ba37f in jami::MultiplexedSocket::Impl::eventLoop (
this=0x7ffefc06a960) at multiplexed_socket.cpp:192
#27 0x00005555558bfbd4 in jami::MultiplexedSocket::Impl::Impl(jami::MultiplexedSocket&, dht::Hash<20ul> const&, std::unique_ptr<jami::TlsSocketEndpoint, std::default_delete<jami::TlsSocketEndpoint> >)::{lambda()#1}::operator()() const (
__closure=0x7ffefc066fd8) at multiplexed_socket.cpp:50
#28 0x00005555558d7c30 in std::invoke_impl<void, jami::MultiplexedSocket::Impl::Impl(jami::MultiplexedSocket&, dht::Hash<20ul> const&, std::unique_ptr<jami::TlsSocketEndpoint, std::default_delete<jami::TlsSocketEndpoint> >)::{lambda()#1}>(std::invoke_other, jami::MultiplexedSocket::Impl::Impl(jami::MultiplexedSocket&, dht::Hash<20ul> const&, std::unique_ptr<jami::TlsSocketEndpoint, std::default_delete<jami::TlsSocketEndpoint> >)::{lambda()#1}&&) (__f=...)
at /usr/include/c++/10/bits/invoke.h:60
#29 0x00005555558d7bd9 in std::invoke<jami::MultiplexedSocket::Impl::Impl(jami::MultiplexedSocket&, dht::Hash<20ul> const&, std::unique_ptr<jami::TlsSocketEndpoint, std::default_delete<jami::TlsSocketEndpoint> >)::{lambda()#1}>(jami::MultiplexedSocket::Impl::Impl(jami::MultiplexedSocket&, dht::Hash<20ul> const&, std:--Type <RET> for more, q to quit, c to continue without paging--
:unique_ptr<jami::TlsSocketEndpoint, std::default_delete<jami::TlsSocketEndpoint> >)::{lambda()#1}&&) (fn=...) at /usr/include/c++/10/bits/invoke.h:95
#30 0x00005555558d7b7a in std::thread::_Invoker<std::tuple<jami::MultiplexedSocket::Impl::Impl(jami::MultiplexedSocket&, dht::Hash<20ul> const&, std::unique_ptr<jami::TlsSocketEndpoint, std::default_delete<jami::TlsSocketEndpoint> >)::{lambda()#1}> >::Minvoke<0ul>(std::_Index_tuple<0ul>) (this=0x7ffefc066fd8)
at /usr/include/c++/10/thread:264
#31 0x00005555558d7b0e in std::thread::_Invoker<std::tuple<jami::MultiplexedSocket::Impl::Impl(jami::MultiplexedSocket&, dht::Hash<20ul> const&, std::unique_ptr<jami::TlsSocketEndpoint, std::default_delete<jami::TlsSocketEndpoint> >)::{lambda()#1}> >::operator()() (this=0x7ffefc066fd8)
at /usr/include/c++/10/thread:271
#32 0x00005555558d7a5a in std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::MultiplexedSocket::Impl::Impl(jami::MultiplexedSocket&, dht::Hash<20ul> const&, std::unique_ptr<jami::TlsSocketEndpoint, std::default_delete<jami::TlsSocketEndpoint> >)::{lambda()#1}> > >::Mrun() (this=0x7ffefc066fd0)
at /usr/include/c++/10/thread:215
#33 0x00007ffff7586694 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#34 0x00007ffff7be8450 in start_thread (arg=0x7fffc0ff9640)
at pthread_create.c:473
#35 0x00007ffff726cd53 in clone ()
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb)
(gdb)
(gdb)
`̀ `Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/483SIP account: app freezes when finishing call2023-09-29T10:00:22ZKateryna KostiukSIP account: app freezes when finishing callBacklogMohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/557Fuzzing SIP over TLS2023-12-27T18:02:51ZSébastien BlinFuzzing SIP over TLS# Fuzzing SIP over TLS
Currently, I've made a lexer for SIP communication that allows one to construct an object and to manipulate a SIP message.
### Scenarios
#### Shuffle randomly the SIP message
This results in the call been hang ...# Fuzzing SIP over TLS
Currently, I've made a lexer for SIP communication that allows one to construct an object and to manipulate a SIP message.
### Scenarios
#### Shuffle randomly the SIP message
This results in the call been hang after some delay. We probably want to generate random fields instead.
#### Keep changing the SIP version
Version is changed randomly between SIP/1.0 and SIP/2.0.
#### TODO - Change the status code
### Bad SDP body
If the body content of a SDP request is invalid, an assertion failed. The null pointer seems to not be a problem because it's checked, however the caller should probably not call the function in the first place. Will investigate further.
In sdp.cpp:
```c++
583 assert(remoteSession_);
```
```
#0 0x00007ffff39fdd22 in raise () at /usr/lib/libc.so.6
#1 0x00007ffff39e7862 in abort () at /usr/lib/libc.so.6
#2 0x00007ffff39e7747 in _nl_load_domain.cold () at /usr/lib/libc.so.6
#3 0x00007ffff39f6616 in () at /usr/lib/libc.so.6
#4 0x000055555a84fa0e in jami::Sdp::processIncomingOffer(std::vector<jami::MediaAttribute, std::allocator<jami::MediaAttribute> > const&) (this=0x6110015f0080, mediaList=std::vector of length 1, capacity 1 = {...}) at sdp.cpp:583
#5 0x0000555559bc894e in jami::transaction_request_cb(pjsip_rx_data*) (rdata=0x625007721b08) at sipvoiplink.cpp:451
#6 0x000055555aeaf623 in pjsip_endpt_process_rx_data ()
#7 0x000055555aeaf856 in endpt_on_rx_msg ()
#8 0x000055555aeb685e in pjsip_tpmgr_receive_packet ()
#9 0x000055555a079ce0 in jami::tls::ChanneledSIPTransport::handleEvents() (this=0x625007721900) at /usr/include/c++/11.1.0/bits/channeled_transport.cpp:237
#10 0x000055555a070967 in operator()() const (__closure=0x603002aed2b0) at /usr/include/c++/11.1.0/bits/channeled_transport.cpp:150
#11 0x000055555a0809bd in std::__invoke_impl<void, jami::tls::ChanneledSIPTransport::ChanneledSIPTransport(pjsip_endpoint*, int, const std::shared_ptr<jami::ChannelSocket>&, const jami::IpAddr&, const jami::IpAddr&, jami::onShutdownCb&&)::<lambda(const uint8_t*, size_t)>::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/11.1.0/bits/invoke.h:61
#12 0x000055555a07ea22 in std::__invoke_r<void, jami::tls::ChanneledSIPTransport::ChanneledSIPTransport(pjsip_endpoint*, int, const std::shared_ptr<jami::ChannelSocket>&, const jami::IpAddr&, const jami::IpAddr&, jami::onShutdownCb&&)::<lambda(const uint8_t*, size_t)>::<lambda()>&>(struct {...} &) (__fn=...) at /usr/include/c++/11.1.0/bits/invoke.h:111
#13 0x000055555a07d701 in std::_Function_handler<void(), jami::tls::ChanneledSIPTransport::ChanneledSIPTransport(pjsip_endpoint*, int, const std::shared_ptr<jami::ChannelSocket>&, const jami::IpAddr&, const jami::IpAddr&, jami::onShutdownCb&&)::<lambda(const uint8_t*, size_t)>::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/11.1.0/bits/std_function.h:291
#14 0x00005555596e546d in std::function<void ()>::operator()() const (this=0x603002aed2b0) at /usr/include/c++/11.1.0/bits/std_function.h:560
#15 0x0000555559a89730 in jami::ScheduledExecutor::loop() (this=0x625007723e10) at scheduled_executor.cpp:137
#16 0x0000555559a85e1e in operator()() const (__closure=0x603000073a88) at scheduled_executor.cpp:32
#17 0x0000555559a8f8be in std::__invoke_impl<void, jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> >(std::__invoke_other, struct {...} &&) (__f=...) at /usr/include/c++/11.1.0/bits/invoke.h:61
#18 0x0000555559a8f779 in std::__invoke<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> >(struct {...} &&) (__fn=...) at /usr/include/c++/11.1.0/bits/invoke.h:96
#19 0x0000555559a8f64e in std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0x603000073a88) at /usr/include/c++/11.1.0/bits/std_thread.h:253
#20 0x0000555559a8f584 in std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > >::operator()(void) (this=0x603000073a88) at /usr/include/c++/11.1.0/bits/std_thread.h:260
#21 0x0000555559a8f53c in std::thread::_State_impl<std::thread::_Invoker<std::tuple<jami::ScheduledExecutor::ScheduledExecutor()::<lambda()> > > >::_M_run(void) (this=0x603000073a80) at /usr/include/c++/11.1.0/bits/std_thread.h:211
#22 0x00007ffff47333c4 in std::execute_native_thread_routine(void*) (__p=0x603000073a80) at /build/gcc/src/gcc/libstdc++-v3/src/c++11/thread.cc:82
#23 0x00007ffff667a259 in start_thread () at /usr/lib/libpthread.so.0
#24 0x00007ffff3abf5e3 in clone () at /usr/lib/libc.so.6
```
#### Payload attack (SDP Huge value of Content-Length)
Alice duplicates the body of its SDP request N times. N grows at a rate of 2^M.
After some threshold, connection between peer can not be establish if iniated from Alice. Bob can still call Alice.
### Payload attack (SIP MESSAGE)
Alice spam bob with very huge message text.
The TLS connections seems to stop working and Bob receive the message text (short version) over the DHt instead.
### Sending none supported content-type (text/html, text/javascript, etc.)
The content-type is simply ignored. Call can be made.
#### TODO - Sending SIP request over none SIP channel (can be applied to other protocols as well)BacklogOlivier DionOlivier Dionhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/595Swarm 1:1 detect contact left2021-07-28T16:05:38ZSébastien BlinSwarm 1:1 detect contact left+ Change repo to include /invited
+ "Contact left" should be visible in getConversationMembers()
+ Add test
+ DO client changes+ Change repo to include /invited
+ "Contact left" should be visible in getConversationMembers()
+ Add test
+ DO client changesSwarm-chatSébastien BlinAndreas TraczykSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/596Swarm: removeContact should remove syncing conversations2021-07-28T21:14:57ZSébastien BlinSwarm: removeContact should remove syncing conversations+ Fix bug
+ Add test+ Fix bug
+ Add testSwarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/509Bump pjproject to version 2.112021-07-23T15:16:28ZSébastien BlinBump pjproject to version 2.11https://git.jami.net/savoirfairelinux/ring-daemon/blob/master/contrib/src/pjproject/rules.mak
We're using pjproject 2.10, and we need to migrate our patches and remove the one already upstreamed.
Cf new features (like trickle ICE for m...https://git.jami.net/savoirfairelinux/ring-daemon/blob/master/contrib/src/pjproject/rules.mak
We're using pjproject 2.10, and we need to migrate our patches and remove the one already upstreamed.
Cf new features (like trickle ICE for medias?)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/592Swarm: move last read per participant daemon' side2021-07-28T17:15:46ZSébastien BlinSwarm: move last read per participant daemon' side+ getMembers() should return last read
+ react to messageDisplayed/setMessageDisplayed
+ Add test
+ Add method to compute how many messages between two interactions
+ Update LRC
+ Update doc+ getMembers() should return last read
+ react to messageDisplayed/setMessageDisplayed
+ Add test
+ Add method to compute how many messages between two interactions
+ Update LRC
+ Update docSwarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/607ICE - missing srflx candidates in answer2021-08-17T20:05:31ZMohamed ChibaniICE - missing srflx candidates in answerServer reflexive candidates are not added in call answer if UPNP is disabled. This can cause ICE media negotiation failure if the peer is behind a NAT with TURN enabled, and UPNP disabled/unavailable.
Setup:
Endpoint A
TURN enabled
UPNP...Server reflexive candidates are not added in call answer if UPNP is disabled. This can cause ICE media negotiation failure if the peer is behind a NAT with TURN enabled, and UPNP disabled/unavailable.
Setup:
Endpoint A
TURN enabled
UPNP disabled
Endpoint B
TURN disabled
UPNP disabled
A calls B.
Results: failed (notice the absence of srflx cand in B's SDP answer)
Expected: success (connection pair A:relay <-> B:prflx
ICE fails because the TURN server does not authorize connection from prflx candidates because they are unknown to it (they be authorized if the B add the address as a srflx canddiate).
Note that the call is successful if B calls A (because the srflx are included in the offer).Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/602Deadlock with sendBeacon2021-08-17T20:19:30ZSébastien BlinDeadlock with sendBeacon[gdb.txt](/uploads/e9900d59f519af011c3af4eec22deb0c/gdb.txt)[gdb.txt](/uploads/e9900d59f519af011c3af4eec22deb0c/gdb.txt)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/603Extract conversation's code from jamiaccount2021-09-13T17:03:00ZSébastien BlinExtract conversation's code from jamiaccountJamiAccount is too big. Split this classJamiAccount is too big. Split this classSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/600TrustRequest: add signal for conversationRequest removed, and ensure it's cor...2021-08-09T14:35:49ZSébastien BlinTrustRequest: add signal for conversationRequest removed, and ensure it's correctly syncedRelated to https://git.jami.net/savoirfairelinux/ring-project/-/issues/1282Related to https://git.jami.net/savoirfairelinux/ring-project/-/issues/1282Swarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/599Account preferences: add preferences to send or not displayed status2021-08-09T13:30:43ZSébastien BlinAccount preferences: add preferences to send or not displayed statusFor now clients are doing their own logic. This should be moved into the daemon. This allow us to group code from differnt clients.For now clients are doing their own logic. This should be moved into the daemon. This allow us to group code from differnt clients.Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/593Monitoring: add redirection to file2021-08-20T21:11:54ZSébastien BlinMonitoring: add redirection to fileOlivier DionOlivier Dionhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/591Swarm: Add syncing conversations2021-07-28T17:15:46ZSébastien BlinSwarm: Add syncing conversations+ convInfos_ works? => Test case replace convInfos_
+ Add to convInfo when accepting, not when cloned
+ getConversations() must return syncing conversations
+ conversationInfos() must return syncing:true
+ add tests
+ update doc
+ Add p...+ convInfos_ works? => Test case replace convInfos_
+ Add to convInfo when accepting, not when cloned
+ getConversations() must return syncing conversations
+ conversationInfos() must return syncing:true
+ add tests
+ update doc
+ Add patch for LRCSwarm-chatSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/608ICE - add generic srflx candidates only if UPNP candidates are not available2021-08-17T20:05:30ZMohamed ChibaniICE - add generic srflx candidates only if UPNP candidates are not availableCurrently, (generic) srflx candidates generated using the account public address are always added regardless if UPNP candidates are available or not. Having duplicate srflx candidates is not useful, and even worse, it may reduce the chan...Currently, (generic) srflx candidates generated using the account public address are always added regardless if UPNP candidates are available or not. Having duplicate srflx candidates is not useful, and even worse, it may reduce the chance of UPNP candidates to succeed.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/563Huge battery drain when using Jami [blocked by pupnp upstream]2023-09-29T09:44:30ZAndy HiscockHuge battery drain when using Jami [blocked by pupnp upstream]I'm losing about 2% battery a minute on my iPhone 5s. Can this be improved?I'm losing about 2% battery a minute on my iPhone 5s. Can this be improved?BacklogKateryna KostiukKateryna Kostiukhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/587ice_transport: Ice default remote address is not IPv4 nor IPv62021-09-24T16:17:26ZOlivier Dionice_transport: Ice default remote address is not IPv4 nor IPv6RTCP address set by `VideoRtpSession::start` is not an IPv4 nor and IPv6.
See
- [report.txt](/uploads/0c305b28c4737641802f05ec5f13787a/gdb.txt)
- [report2.txt](/uploads/96f2af2d4bda88119c42bf56bd35e7cd/gdb.txt)RTCP address set by `VideoRtpSession::start` is not an IPv4 nor and IPv6.
See
- [report.txt](/uploads/0c305b28c4737641802f05ec5f13787a/gdb.txt)
- [report2.txt](/uploads/96f2af2d4bda88119c42bf56bd35e7cd/gdb.txt)Mohamed ChibaniOlivier DionMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/556SIP Account - Handle and test send/receive of empty offers (no SDP)2021-09-02T15:12:07ZMohamed ChibaniSIP Account - Handle and test send/receive of empty offers (no SDP)Handle send and receive of INVITEs with no media offer (no SDP). Empty offers are already supported in incoming incoming INVITEs. We need to be able to send empty offers as well and handle the media offer sent in the 200 OK answer.
Unit ...Handle send and receive of INVITEs with no media offer (no SDP). Empty offers are already supported in incoming incoming INVITEs. We need to be able to send empty offers as well and handle the media offer sent in the 200 OK answer.
Unit tests must be added to validate handling of empty INVITEs in incoming and outgoing calls.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/553Mutli-stream - Fix Hold/Resume and empty offers2021-12-20T16:08:59ZMohamed ChibaniMutli-stream - Fix Hold/Resume and empty offers- The media direction attribute in the SDP is set to "sendrecv" when a call is put "on-hold", while it should be "sendonly".
- When receiving and empty offer, we must answer with an offer that includes audio and video if enabled in the ...- The media direction attribute in the SDP is set to "sendrecv" when a call is put "on-hold", while it should be "sendonly".
- When receiving and empty offer, we must answer with an offer that includes audio and video if enabled in the account.
These regressions were introduced while adding multi-stream support.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/571SIP Account - use account setting to enable/disable SRTP2021-09-02T15:12:32ZMohamed ChibaniSIP Account - use account setting to enable/disable SRTPMohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/570Crash in PJSIP on SDP negotiation failure2021-07-21T18:13:20ZAdrien BéraudCrash in PJSIP on SDP negotiation failureThe crash happens if the SDP negotiation fail. The crash can be reproduced by answering to an incoming call with all media disabled. There is a test case (peer_disable_media) in the unit test sip_base_calls.cpp that reproduces the crash....The crash happens if the SDP negotiation fail. The crash can be reproduced by answering to an incoming call with all media disabled. There is a test case (peer_disable_media) in the unit test sip_base_calls.cpp that reproduces the crash.
[crash_pjsip.txt](/uploads/5267262ca4283ff78c6626c4b00c7845/crash_pjsip.txt)Olivier DionOlivier Dionhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/579Uses long key instead sha1 for devices2021-07-30T15:06:28ZSébastien BlinUses long key instead sha1 for devicesSébastien BlinAdrien BéraudSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/114Remove MTU phase from tls_session (unused code)2021-08-03T13:32:54ZSébastien BlinRemove MTU phase from tls_session (unused code)This code is deactivated since a long time. Could be removed.
However, the MTU can be retrieven via pjsip (or should be)This code is deactivated since a long time. Could be removed.
However, the MTU can be retrieven via pjsip (or should be)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/511ICE components ID numbering - Comply to RFC-5245 and RFC-84452021-04-14T16:23:23ZMing Rui ZhangICE components ID numbering - Comply to RFC-5245 and RFC-8445Component ID must be incremented per media starting from 1 as specified in https://tools.ietf.org/html/rfc5245#section-15.1:
```
<component-id>: is a positive integer between 1 and 256 that
identifies the specific component of th...Component ID must be incremented per media starting from 1 as specified in https://tools.ietf.org/html/rfc5245#section-15.1:
```
<component-id>: is a positive integer between 1 and 256 that
identifies the specific component of the media stream for which
this is a candidate. It MUST start at 1 and MUST increment by 1
for each component of a particular candidate. For media streams
based on RTP, candidates for the actual RTP media MUST have a
component ID of 1, and candidates for RTCP MUST have a component
ID of 2. Other types of media streams that require multiple
components MUST develop specifications that define the mapping of
components to component IDs. See Section 14 for additional
discussion on extending ICE to new media streams.
```
Also in https://tools.ietf.org/html/rfc8445Ming Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/421Investigate "no response from DHT" [To check]2021-08-20T20:00:27ZSébastien BlinInvestigate "no response from DHT" [To check]Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/485Rework of the file streaming feature2023-11-09T20:43:58ZPierre LespagnolRework of the file streaming featureUse the media player to stream filesUse the media player to stream filesBacklogAline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/430macOs/Daemon - Account can not re-register to DHT using the same port2021-12-29T20:34:12ZSébastien BlinmacOs/Daemon - Account can not re-register to DHT using the same portOn macOs, registering the account to the DHT sometimes fail with "Address already in use".
The client/system seems to fail to close the DHT socket, or does not close it fast enough.On macOs, registering the account to the DHT sometimes fail with "Address already in use".
The client/system seems to fail to close the DHT socket, or does not close it fast enough.Backloghttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/50Certificate verification failure2021-12-07T18:13:27ZSébastien BlinCertificate verification failure# Reproduce step
I don't really know because it's the first time I see this and can't reproduce with another account. But this is what I think:
1. Alice (device A) add Bob (device B)
2. Alice and Bob talks
3. Alice erase the config and ...# Reproduce step
I don't really know because it's the first time I see this and can't reproduce with another account. But this is what I think:
1. Alice (device A) add Bob (device B)
2. Alice and Bob talks
3. Alice erase the config and re-import the account on its device
4. Alice call Bob again
5. Bob is segfaulting.
# Expected
Alice should be able to call Bob and Bob should have the ability to answer to that call.
# backtrace
```
__memcmp_avx2_movbe () at ../sysdeps/x86_64/multiarch/memcmp-avx2-movbe.S:68
68 ../sysdeps/x86_64/multiarch/memcmp-avx2-movbe.S: No such file or directory.
(gdb) bt
#0 0x00007ffff213bbae in __memcmp_avx2_movbe () at ../sysdeps/x86_64/multiarch/memcmp-avx2-movbe.S:68
#1 0x00007ffff6f15e38 in () at /usr/lib/x86_64-linux-gnu/libgnutls.so.30
#2 0x00007ffff6f3c046 in () at /usr/lib/x86_64-linux-gnu/libgnutls.so.30
#3 0x00007ffff6f45b10 in gnutls_x509_trust_list_verify_crt2 ()
at /usr/lib/x86_64-linux-gnu/libgnutls.so.30
#4 0x000055555593f04c in dht::crypto::TrustList::verify(dht::crypto::Certificate const&) const ()
#5 0x000055555562c070 in ring::tls::TrustStore::isAllowed(dht::crypto::Certificate const&, bool) ()
#6 0x000055555566b419 in std::_Function_handler<void (std::shared_ptr<dht::crypto::Certificate> const&), ring::RingAccount::onPeerMessage(dht::Hash<20ul> const&, std::function<void (std::shared_ptr<dht::crypto::Certificate> const&, dht::Hash<20ul> const&)>)::{lambda(std::shared_ptr<dht::crypto::Certificate> const&)#1}>::_M_invoke(std::_Any_data const&, std::shared_ptr<dht::crypto::Certificate> const&) ()
#7 0x0000555555666c4c in ring::RingAccount::findCertificate(dht::Hash<20ul> const&, std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>&&) ()
#8 0x0000555555669e0f in ring::RingAccount::onPeerMessage(dht::Hash<20ul> const&, std::function<void (std::shared_ptr<dht::crypto::Certificate> const&, dht::Hash<20ul> const&)>) ()
#9 0x00005555556739b6 in std::_Function_handler<bool (dht::IceCandidates&&), ring::RingAccount::doRegister_()::{lambda(dht::IceCandidates&&)#11}>::_M_invoke(std::_Any_data const&, dht::IceCandidates&&) ()
#10 0x00005555556a7b98 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&), std::future<unsigned long> dht::DhtRunner::listen<dht::IceCandidates>(dht::Hash<20ul>, std::function<bool (dht::IceCandidates&&)>, dht::Value::Filter, dht::Where)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) ()
#11 0x0000555555945582 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool), dht::DhtRunner::listen(dht::Hash<20ul>, std::function<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)>, dht::Value::Filter, dht::Where)::{lambda(dht::SecureDht&)#1}::operator()(dht::SecureDht&)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool&&) ()
#12 0x00005555559cc9c9 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool), dht::SecureDht::getCallbackFilter(std::function<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)>, dht::Value::Filter&&)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool&&) ()
#13 0x00005555559a91d7 in dht::OpCache::onValuesAdded(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) ()
#14 0x00005555559aae11 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool), dht::OpCache::OpCache()::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool&&) ()
#15 0x00005555559a63d9 in dht::OpValueCache::onValuesAdded(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) ()
#16 0x00005555559a6cd2 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool), dht::SearchCache::listen(std::function<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)>, std::shared_ptr<dht::Query>, dht::Value::Filter, std::function<unsigned long (std::shared_ptr<dht::Query>, std::function<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > con---Type <return> to continue, or q <return> to quit---
st&, bool)>)>)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool&&) ()
#17 0x0000555555968840 in std::_Function_handler<void (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool), std::function<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)> >::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool&&) ()
#18 0x0000555555968432 in std::_Function_handler<void (), dht::ValueCache::addValues[abi:cxx11](std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, dht::TypeStore const&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&)::{lambda()#1}>::_M_invoke(std::_Any_data const&) ()
#19 0x000055555596d2d2 in dht::ValueCache::onValues(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, std::vector<unsigned long, std::allocator<unsigned long> > const&, std::vector<unsigned long, std::allocator<unsigned long> > const&, dht::TypeStore const&, std::chrono::time_point<std::chrono::_V2::steady_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) ()
#20 0x000055555595de05 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool), dht::DhtProxyClient::doListen(dht::Hash<20ul> const&, std::function<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)>, dht::Value::Filter)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)#2}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool&&) ()
#21 0x000055555595acf9 in std::_Function_handler<void (), dht::DhtProxyClient::sendListen(std::shared_ptr<restbed::Request> const&, std::function<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&, bool)> const&, dht::Value::Filter const&, std::shared_ptr<dht::DhtProxyClient::ListenState> const&)::{lambda(std::shared_ptr<restbed::Request> const&, std::shared_ptr<restbed::Response> const&)#1}::operator()(std::shared_ptr<restbed::Request> const&, std::shared_ptr<restbed::Response> const&) const::{lambda()#1}>::_M_invoke(std::_Any_data const&) ()
#22 0x000055555595c079 in dht::DhtProxyClient::periodic(unsigned char const*, unsigned long, dht::SockAddr const&) ()
#23 0x000055555596a3a1 in dht::DhtProxyClient::periodic(unsigned char const*, unsigned long, sockaddr const*, unsigned int) ()
#24 0x000055555594f25c in dht::DhtRunner::loop_() ()
#25 0x000055555594f671 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dht::DhtRunner::run(dht::SockAddr const&, dht::SockAddr const&, dht::DhtRunner::Config)::{lambda()#1}> > >::_M_run() ()
#26 0x00007ffff2a16733 in () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#27 0x00007ffff5ae46db in start_thread (arg=0x7fff817fa700) at pthread_create.c:463
#28 0x00007ffff20d288f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/40Records are cut off too soon2022-11-14T21:52:32ZPhilippe GorleyRecords are cut off too soonRecords drop the frames left in the queue once its stopped.
Steps:
1. Start recording
2. Wait (queue needs to be filled for it to be noticeable)
3. Stop recording
Expected result: last action/sound when stopping is included in the resu...Records drop the frames left in the queue once its stopped.
Steps:
1. Start recording
2. Wait (queue needs to be filled for it to be noticeable)
3. Stop recording
Expected result: last action/sound when stopping is included in the resulting file
Actual result: last action/sound when stopping is not in the resulting fileIteration 26Pierre LespagnolPierre Lespagnolhttps://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/233Crash when hanging up if video device was used by another process2020-07-07T20:16:39ZAdrien BéraudCrash when hanging up if video device was used by another processReported on GNU/Linux
[crash-jerome-16juin.txt](/uploads/f1ed5026ea41c06f6ff7031629deb939/crash-jerome-16juin.txt)Reported on GNU/Linux
[crash-jerome-16juin.txt](/uploads/f1ed5026ea41c06f6ff7031629deb939/crash-jerome-16juin.txt)Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/3remove IAX account and usage of libiax2024-03-08T19:26:14ZJami Botremove IAX account and usage of libiaxIssue generated from Tuleap's migration script.
**Originally submitted by: Guillaume Roguez (guillaume)**
libiax in current form has a licence not compatible with our GPLv3 licence.
As IAX account has not been updated and no more supp...Issue generated from Tuleap's migration script.
**Originally submitted by: Guillaume Roguez (guillaume)**
libiax in current form has a licence not compatible with our GPLv3 licence.
As IAX account has not been updated and no more support is done on it since first Ring release,
and there is no significant usage of it in the community, the Ring Team has decided to remove it from sources.
daemon, lrc and all clients are impacted by this ticket.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/370The host is unmute when he creates a conference2021-01-19T17:31:41ZPierre LespagnolThe host is unmute when he creates a conferenceThe mute information for the host is not keptThe mute information for the host is not keptPierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/330Video-conference: (needs design) how to select moderators2021-01-19T17:31:12ZSébastien BlinVideo-conference: (needs design) how to select moderatorsActually moderators are all other accounts on the same device of the host. This needs to change. We need to determine a better way to give the ability to change layouts or hang up calls for other participantsActually moderators are all other accounts on the same device of the host. This needs to change. We need to determine a better way to give the ability to change layouts or hang up calls for other participantsIteration 26Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/290[Maybe fixed/To check]ICE/TURN - Investigate why relay candidates are most of...2021-02-15T17:07:51ZMohamed Chibani[Maybe fixed/To check]ICE/TURN - Investigate why relay candidates are most often selectedIt has been observed in many environments when TURN relay is enabled, that the ICE negotiation will frequently result in relay candidates (TURN) being selected while server-reflexive or peer-reflexive candidates should have been selected...It has been observed in many environments when TURN relay is enabled, that the ICE negotiation will frequently result in relay candidates (TURN) being selected while server-reflexive or peer-reflexive candidates should have been selected instead. Typically, when the "connectivity checks" succeed for both relay and reflexive candidates, the reflexive candidates should be selected because of their higher priority.
Note that in the current version, the "Aggressive nomination" is used to optimize the connection time (see [RFC5245](https://tools.ietf.org/html/rfc5245#section-8.1.1.2) for more details). This may have a major impact on the selected pair. Still, we need to know if this is the only cause or if other factors are involved. We also need to know if we can improve it.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/412Connectivity/ICE: Port seems to be used multiple times2021-02-17T13:39:35ZSébastien BlinConnectivity/ICE: Port seems to be used multiple timesCf in following logs, 59881 is used 2 times in two different ICE, this means that the second is failing (because already used by first socket)
[59881-used-2-times.log](/uploads/c92bd34302c2de89adbc325342440505/59881-used-2-times.log)
5...Cf in following logs, 59881 is used 2 times in two different ICE, this means that the second is failing (because already used by first socket)
[59881-used-2-times.log](/uploads/c92bd34302c2de89adbc325342440505/59881-used-2-times.log)
59881 should be present in only one ICEMohamed ChibaniSébastien BlinMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/514Swarm: verify sync (import account or new devices)2021-04-19T13:21:38ZSébastien BlinSwarm: verify sync (import account or new devices)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/510Upnp Controller - Create instance only when needed2021-04-19T13:21:34ZMohamed ChibaniUpnp Controller - Create instance only when neededUPNP Cotroller instance used by the Account class (and derived classes) must be created only if needed. Currently, the creation is done in enableUpnp(bool) method which is called when the account data are stored or loaded. The required c...UPNP Cotroller instance used by the Account class (and derived classes) must be created only if needed. Currently, the creation is done in enableUpnp(bool) method which is called when the account data are stored or loaded. The required change is to particularly prevent creating UPNP controller instance when storing the account data.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/512jamiaccount: multiple sendTextMessage must init only one ice request if no co...2021-04-19T13:21:33ZSébastien Blinjamiaccount: multiple sendTextMessage must init only one ice request if no connection with the peerIn JamiAccount::sendTextMessage ; requestSIPConnection() is called multiple times and this should only init one ICE, but it seems it's not the case
# Scenario
+ Add a connection between alice and bob
+ cut bob connectivity
+ alice send...In JamiAccount::sendTextMessage ; requestSIPConnection() is called multiple times and this should only init one ICE, but it seems it's not the case
# Scenario
+ Add a connection between alice and bob
+ cut bob connectivity
+ alice sends 4 messages
+ after timeout, it restarts a lot of conncetion + no response (cf erase after JAMI_WARN("Timeout when send a message, close current connection");)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/519Sometimes TLS connection fail cause of excessive EAGAIN2023-01-24T16:27:13ZSébastien BlinSometimes TLS connection fail cause of excessive EAGAIN```
[1618579385.330|27295|tls_session.cpp :887 ] [TLS] EAGAIN from transport, retry#98
[1618579385.340|27295|tls_session.cpp :887 ] [TLS] EAGAIN from transport, retry#99
[1618579385.350|27295|tls_session.cpp :887 ] [TLS] EAGAIN ...```
[1618579385.330|27295|tls_session.cpp :887 ] [TLS] EAGAIN from transport, retry#98
[1618579385.340|27295|tls_session.cpp :887 ] [TLS] EAGAIN from transport, retry#99
[1618579385.350|27295|tls_session.cpp :887 ] [TLS] EAGAIN from transport, retry#100
[1618579385.361|27295|tls_session.cpp :890 ] [TLS] excessive retry detected, aborting
[1618579385.361|27295|tls_session.cpp :898 ] [TLS] transport failure on tx: errno = 5
[1618579385.361|27295|tls_session.cpp :1162 ] [TLS] handshake failed: Error in the push function.
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/402Alsa: crash ASAN on master2021-04-16T14:55:23ZSébastien BlinAlsa: crash ASAN on master[crash-alsa-master.log](/uploads/aa38ced88ff74f3e61835494928419a1/crash-alsa-master.log)
The patch I did to fix this : https://review.jami.net/c/ring-daemon/+/16215[crash-alsa-master.log](/uploads/aa38ced88ff74f3e61835494928419a1/crash-alsa-master.log)
The patch I did to fix this : https://review.jami.net/c/ring-daemon/+/16215Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/447When the resolution change the receive thread is not updated2021-03-08T22:03:48ZPierre LespagnolWhen the resolution change the receive thread is not updatedPierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/468Prepare reception of the new conference info2021-03-17T17:39:39ZPierre LespagnolPrepare reception of the new conference infosee #467see #467Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/453Add option to enable moderation for all participant in conferences2021-03-09T22:21:43ZPierre LespagnolAdd option to enable moderation for all participant in conferencesPierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/666Call re-invite - restart media only after successful ICE negotiation2022-01-05T18:21:56ZSébastien BlinCall re-invite - restart media only after successful ICE negotiationIf media transport uses ICE, and when a new media session is negotiated (incoming or outgoing re-invite) the current ICE session must be kept until the new ICE session is successfully negotiated, and the media is stopped and restarted us...If media transport uses ICE, and when a new media session is negotiated (incoming or outgoing re-invite) the current ICE session must be kept until the new ICE session is successfully negotiated, and the media is stopped and restarted using the new ICE session.
If the new session fails, the media transport must continue using the current ICE session.
# Scenario
+ In a call cut video
# Expected
+ the remote video should not be cut and retrieved a few secs after
# Current
During the negotiation remote video/audio is stopped and a glitch is seenMohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/638Conference - Handle media change request (for host and remote participants)2022-01-05T18:21:51ZSébastien BlinConference - Handle media change request (for host and remote participants)# Scenario 0 - Bob account is in RDV mode
+ Alice calls rdv-bob
+ Carla calls rdv-bob
- Expected result:\
Bob is in detached mode, and local audio/video is in muted state
# Scenario 1 - Bob account is in RDV mode
+ Alice calls rdv-bob ...# Scenario 0 - Bob account is in RDV mode
+ Alice calls rdv-bob
+ Carla calls rdv-bob
- Expected result:\
Bob is in detached mode, and local audio/video is in muted state
# Scenario 1 - Bob account is in RDV mode
+ Alice calls rdv-bob in audio only
+ Alice upgrades to video
- Expected result:\
Alice should receives her video along with the other videos (from participants)
# Scenario 2 - Bob account is in RDV mode
+ Alice and Carl call rdv-bob
+ Bob joins the conference
- Expected result:\
Bob local audio should be added\
Bob local video (camera) should be added (and un-muted) if enabled in the account
# Scenario 3 - Bob account is in RDV mode
+ Alice and Carl call rdv-bob in audio only
+ Bob joins the conference
- Expected result:\
Bob local audio should be added\
Bob local video (camera) should be added (and un-muted) if enabled in the account
Alice and Carla should not receive video from conference unless they join with their video
# Scenario 4 - Bob account is in RDV mode
+ Alice call rdv-bob
+ Carla call rdv-bob in audio only
- Expected result:\
Carla should not receive video from conference unless she join with her video
# Scenario 5
+ Bob is on a call with Alice
+ Carla calls Bob (or the opposite). Alice's is put on-hold.
+ Bob joins Alice's call to create a conference
- Expected result:\
Bob local audio should be un-muted unless both calls where muted\
Bob local video should be un-muted unless both calls where muted. Does not apply if the video is disabled.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/4Improve message engine API2024-03-08T19:26:14ZJami BotImprove message engine APIIssue generated from Tuleap's migration script.
**Originally submitted by: Alexandre Lision (alision)**
<p>- Current daemon API exposes message status as strings which causes a lot of string comparisons.</p>
<p>- change callback na...Issue generated from Tuleap's migration script.
**Originally submitted by: Alexandre Lision (alision)**
<p>- Current daemon API exposes message status as strings which causes a lot of string comparisons.</p>
<p>- change callback name AccountMessageStatus -> AccountMessageStatusChanged, and add the account it's linked with and the uri it is send to.</p>
<p> </p>
<p>This changes will also impact LRC</p>https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/265video_mixer: do not use camera resolution as width/height2020-11-03T23:46:21ZSébastien Blinvideo_mixer: do not use camera resolution as width/height# Reproduce steps
1. Set camera to low resolution (160x120)
2. Create a conference with high res medias
# Expected result
The conference should get a correct video
# Actual result
The whole grid is 160x120, resulting in hideous videos# Reproduce steps
1. Set camera to low resolution (160x120)
2. Create a conference with high res medias
# Expected result
The conference should get a correct video
# Actual result
The whole grid is 160x120, resulting in hideous videosIteration 22Sébastien BlinPierre LespagnolSébastien Blinhttps://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/6[GNOME] Sound applications should only show ‘Jami Daemon’ once and 'Unknown' ...2024-03-08T19:26:14Zovari[GNOME] Sound applications should only show ‘Jami Daemon’ once and 'Unknown' should be renamed 'Jami'Environment:<br>
Linux Mint 18.3 Cinnamon 3.6.7 64-bit
Reproduce steps:<br>
Make an Audio Call with Ring.
Expected result:<br>
In ‘System Settings’ → ‘Sound’ → ‘Applications’ tab, the ‘Ring Daemon’ should only show once.
Actual result...Environment:<br>
Linux Mint 18.3 Cinnamon 3.6.7 64-bit
Reproduce steps:<br>
Make an Audio Call with Ring.
Expected result:<br>
In ‘System Settings’ → ‘Sound’ → ‘Applications’ tab, the ‘Ring Daemon’ should only show once.
Actual result:<br>
In ‘System Settings’ → ‘Sound’ → ‘Applications’ tab, the ‘Ring Daemon’ shows twice. Please see attached image.
![RingDaemon](/uploads/4f2ea954c6a246cb3a0065473224c600/RingDaemon.png)
When Ring is not open:
```
$ ps aux | grep dring
ovari 4013 0.0 0.0 26708 948 pts/0 S+ 08:19 0:00 grep --color=auto dring
```
When Ring is open (no call has been made):
```
$ ps aux | grep dring
ovari 4029 12.2 1.6 1219232 31688 ? Sl 08:19 0:00 /usr/lib/ring/dring
ovari 4122 0.0 0.0 26708 1016 pts/0 S+ 08:19 0:00 grep --color=auto dring
```
Cross-reference:<br>
https://tuleap.ring.cx/plugins/tracker/?aid=1881
Thank youhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/7PIN should not contain confusing characters2024-03-08T19:26:14ZPhilippe GorleyPIN should not contain confusing charactersSome fonts can make '1' and 'I' or '0' and 'O' hard to tell apart. Ring should not generate a PIN with these characters.
These characters could be replaced with others (such as '-' or '_') to keep the entropy level.Some fonts can make '1' and 'I' or '0' and 'O' hard to tell apart. Ring should not generate a PIN with these characters.
These characters could be replaced with others (such as '-' or '_') to keep the entropy level.Adrien BéraudAdrien Béraudhttps://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/10Crash when recording in full screen then recording2024-03-08T19:26:14ZAdministratorCrash when recording in full screen then recordingHow to reproduce:
1. Call someone
2. Set the call in fullscreen
3. Record
4. Hang up without stop recording
5. Re-call this person
6. Crash!
```
Thread 1 "lt-dring" received signal SIGSEGV, Segmentation fault.
ring::AudioReceiveThread::...How to reproduce:
1. Call someone
2. Set the call in fullscreen
3. Record
4. Hang up without stop recording
5. Re-call this person
6. Crash!
```
Thread 1 "lt-dring" received signal SIGSEGV, Segmentation fault.
ring::AudioReceiveThread::startRecorder (this=0x0, rec=std::shared_ptr<ring::MediaRecorder> (use count 1, weak count 0) = {...}) at audio_rtp_session.cpp:386
386 audioDecoder_->startRecorder(rec);
Missing separate debuginfos, use: dnf debuginfo-install alsa-lib-1.1.6-2.fc28.x86_64 alsa-plugins-pulseaudio-1.1.6-3.fc28.x86_64 bzip2-libs-1.0.6-26.fc28.x86_64 dbus-libs-1.12.8-1.fc28.x86_64 flac-libs-1.3.2-7.fc28.x86_64 gmp-6.1.2-7.fc28.x86_64 gnutls-3.6.2-1.fc28.x86_64 gsm-1.0.17-5.fc28.x86_64 jsoncpp-1.8.4-3.fc28.x86_64 libICE-1.0.9-12.fc28.x86_64 libSM-1.2.2-8.fc28.x86_64 libX11-1.6.5-7.fc28.x86_64 libX11-xcb-1.6.5-7.fc28.x86_64 libXau-1.0.8-11.fc28.x86_64 libXext-1.3.3-8.fc28.x86_64 libXfixes-5.0.3-5.fc28.x86_64 libXi-1.7.9-6.fc28.x86_64 libXtst-1.2.3-5.fc28.x86_64 libasyncns-0.8-14.fc28.x86_64 libblkid-2.32-2.fc28.x86_64 libcap-2.25-9.fc28.x86_64 libdrm-2.4.92-1.fc28.x86_64 libffi-3.1-16.fc28.x86_64 libgcc-8.1.1-1.fc28.x86_64 libgcrypt-1.8.2-2.fc28.x86_64 libgpg-error-1.29-1.fc28.x86_64 libidn2-2.0.5-1.fc28.x86_64 libmount-2.32-2.fc28.x86_64 libogg-1.3.2-10.fc28.x86_64 libpciaccess-0.13.4-8.fc28.x86_64 libsamplerate-0.1.9-1.fc28.x86_64 libselinux-2.7-13.fc28.x86_64 libsndfile-1.0.28-7.fc28.x86_64 libstdc++-8.1.1-1.fc28.x86_64 libtasn1-4.13-2.fc28.x86_64 libunistring-0.9.9-1.fc28.x86_64 libuuid-2.32-2.fc28.x86_64 libva-2.1.0-1.fc28.x86_64 libva-intel-driver-2.1.0-2.fc28.x86_64 libvdpau-1.1.1-7.fc28.x86_64 libvorbis-1.3.6-1.fc28.x86_64 libxcb-1.13-1.fc28.x86_64 lz4-libs-1.8.1.2-4.fc28.x86_64 nettle-3.4-2.fc28.x86_64 nss-mdns-0.14.1-1.fc28.x86_64 openssl-libs-1.1.0h-3.fc28.x86_64 opus-1.3-0.4.beta.fc28.x86_64 p11-kit-0.23.10-1.fc28.x86_64 pcre-8.42-1.fc28.x86_64 pcre2-10.31-4.fc28.x86_64 pulseaudio-libs-11.1-18.fc28.1.x86_64 speex-1.2.0-1.fc28.x86_64 speexdsp-1.2-0.13.rc3.fc28.x86_64 systemd-libs-238-8.git0e0aa59.fc28.x86_64 xz-libs-5.2.4-2.fc28.x86_64 yaml-cpp-0.6.1-2.fc28.x86_64 zlib-1.2.11-8.fc28.x86_64
(gdb) bt
#0 ring::AudioReceiveThread::startRecorder (this=0x0, rec=std::shared_ptr<ring::MediaRecorder> (use count 1, weak count 0) = {...}) at audio_rtp_session.cpp:386
#1 0x00007ffff69f4538 in ring::AudioRtpSession::startRecorder (this=0x2632100, rec=std::shared_ptr<ring::MediaRecorder> (use count 1, weak count 0) = {...}) at audio_rtp_session.cpp:520
#2 0x00007ffff69bde46 in ring::SIPCall::toggleRecording (this=0x7fffc00b72b0) at sipcall.cpp:1157
#3 0x00007ffff69580dc in ring::Manager::toggleRecordingCall(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () at manager.cpp:2408
#4 0x0000000000436954 in DBusCallManager::toggleRecording (callID="17475899643809895462", this=<optimized out>) at dbuscallmanager.cpp:219
#5 cx::ring::Ring::CallManager_adaptor::_toggleRecording_stub (this=0x6c8080, call=...) at dbuscallmanager.adaptor.h:997
#6 0x0000000000435fb7 in DBus::Callback<cx::ring::Ring::CallManager_adaptor, DBus::Message, DBus::CallMessage const&>::call (this=<optimized out>, param=...) at /home/AmarOk/Projets/ring-project/daemon/contrib/x86_64-redhat-linux/include/dbus-c++-1/dbus-c++/util.h:281
#7 0x0000000000458f1e in DBus::Slot<DBus::Message, DBus::CallMessage const&>::call(DBus::CallMessage const&) const ()
#8 0x0000000000457fd9 in DBus::InterfaceAdaptor::dispatch_method(DBus::CallMessage const&) ()
#9 0x0000000000460f0c in DBus::ObjectAdaptor::handle_message(DBus::Message const&) ()
#10 0x00000000004605a1 in DBus::ObjectAdaptor::Private::message_function_stub(DBusConnection*, DBusMessage*, void*) ()
#11 0x00007ffff7babeb8 in ?? () from /lib64/libdbus-1.so.3
#12 0x00007ffff7b9c604 in dbus_connection_dispatch () from /lib64/libdbus-1.so.3
#13 0x000000000044f2e6 in DBus::Connection::Private::do_dispatch() ()
#14 0x0000000000452872 in DBus::Dispatcher::dispatch_pending(std::__cxx11::list<DBus::Connection::Private*, std::allocator<DBus::Connection::Private*> >&) ()
#15 0x00000000004526a2 in DBus::Dispatcher::dispatch_pending() ()
#16 0x00000000004564d8 in DBus::BusDispatcher::do_iteration() ()
#17 0x000000000045620b in DBus::BusDispatcher::enter() ()
#18 0x000000000041bf2f in DBusClient::event_loop() () at dbusclient.cpp:250
#19 0x000000000041b719 in main () at main.cpp:236
#20 0x00007ffff101d18b in __libc_start_main () from /lib64/libc.so.6
#21 0x000000000041ba0a in _start () at main.cpp:241
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/449Transmit moderator commands to remote host2021-04-13T13:38:02ZPierre LespagnolTransmit moderator commands to remote hostPierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/502Moderator not able to mute host in rendez-vous2021-04-13T13:38:16ZPierre LespagnolModerator not able to mute host in rendez-vous# Scenario
- Bob call Bob-RDV (2 accounts same device)
- Alice join Bod-RDV
- Alice mute Bob
# Current Result
- Bob is not muted# Scenario
- Bob call Bob-RDV (2 accounts same device)
- Alice join Bod-RDV
- Alice mute Bob
# Current Result
- Bob is not mutedPierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/503Overlay not fit the participant frame in rendez-vous2021-04-13T13:38:19ZPierre LespagnolOverlay not fit the participant frame in rendez-vous# Scenario
- Bob join Bob-RDV (2 accounts same device)
- Alice join Bob-RDV
- Bob create conference with Bob-RDV and Roger
# Current result
- The Bob and Roger's overlay not fit their frames for Alice
# Notes
- If Bob change the layout...# Scenario
- Bob join Bob-RDV (2 accounts same device)
- Alice join Bob-RDV
- Bob create conference with Bob-RDV and Roger
# Current result
- The Bob and Roger's overlay not fit their frames for Alice
# Notes
- If Bob change the layout, the overlays are displayed as expected
- Observed on qt-client (maybe client side)Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/467Add frame size to conference info2021-04-13T13:38:05ZPierre LespagnolAdd frame size to conference infoPierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/491Layout update missing for rendezvous2021-04-13T13:37:59ZPierre LespagnolLayout update missing for rendezvous# Scenario
- Bob call rendezvous-bob
- Alice call rendezvous-bob
- Bob create conf with rendezvous-bob and Roger
- Alice quit rendezvous-bob
- Alice call rendezvous-bob
# Current Result
- Bob don't have the new layout with Alice# Scenario
- Bob call rendezvous-bob
- Alice call rendezvous-bob
- Bob create conf with rendezvous-bob and Roger
- Alice quit rendezvous-bob
- Alice call rendezvous-bob
# Current Result
- Bob don't have the new layout with AlicePierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/505Update missing at the end of sub- conference2021-04-13T13:37:58ZPierre LespagnolUpdate missing at the end of sub- conference# Scenario
- Bob join Bob-RDV (2 accounts same device)
- Alice join Bob-RDV
- Bob create conference with Bob-RDV and Roger
- Bob ends conference
# Current result
- Alice doesn't receive the update and see remaining layout from Bob and R...# Scenario
- Bob join Bob-RDV (2 accounts same device)
- Alice join Bob-RDV
- Bob create conference with Bob-RDV and Roger
- Bob ends conference
# Current result
- Alice doesn't receive the update and see remaining layout from Bob and RogerPierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/380Create and update an outgoing call with a provided list of media2021-04-14T14:35:15ZMohamed ChibaniCreate and update an outgoing call with a provided list of media
1- Allow to make an outgoing call with a provided list of media. This feature will allow adding an arbitrary number of media instead of limited to a max of 2 media.
2- Allow changing the media of an ongoing call without the need to te...
1- Allow to make an outgoing call with a provided list of media. This feature will allow adding an arbitrary number of media instead of limited to a max of 2 media.
2- Allow changing the media of an ongoing call without the need to terminate and start a new call.Mohamed ChibaniMohamed Chibanihttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/496ICE do not add ips with interfaces in a down state2021-04-12T14:43:30ZSébastien BlinICE do not add ips with interfaces in a down stateIn https://git.jami.net/savoirfairelinux/ring-daemon/-/issues/495, all the candidates (like `172.27.0.1`) come from a bad interface like:
```
9: br-b8251442502e: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN grou...In https://git.jami.net/savoirfairelinux/ring-daemon/-/issues/495, all the candidates (like `172.27.0.1`) come from a bad interface like:
```
9: br-b8251442502e: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:4b:3f:9b:89 brd ff:ff:ff:ff:ff:ff
inet 172.27.0.1/16 brd 172.27.255.255 scope global br-b8251442502e
valid_lft forever preferred_lft forever
inet6 fe80::42:4bff:fe3f:9b89/64 scope link
valid_lft forever preferred_lft forever
```
Because state is down, it should be removedSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/11[GNOME] Camera2024-03-08T19:26:15Zovari[GNOME] CameraGNU Ring "In varietate concordia" built on 2018-06-08 16:34:45 UTC.
1. Settings → Media → Camera Setting → Device: →<br>
Synaptics RMI4 Touch Sensor<br>
HP Truevision HD: HP Truevision
Should the first option “Synaptics RMI4 Touch Sens...GNU Ring "In varietate concordia" built on 2018-06-08 16:34:45 UTC.
1. Settings → Media → Camera Setting → Device: →<br>
Synaptics RMI4 Touch Sensor<br>
HP Truevision HD: HP Truevision
Should the first option “Synaptics RMI4 Touch Sensor” be showing? It does not seem to be a camera?
Thank you
![Camera](/uploads/0d024bdb38214a91914d5b1c50ab6561/Camera.png)https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/12[GNOME] Small screen (eg. 5 inch)2024-03-08T19:26:15Zovari[GNOME] Small screen (eg. 5 inch)GNU Ring "In varietate concordia" built on 2018-06-08 16:34:45 UTC.
# Notifications
Please enable the notifications, i.e. icons and descriptions, to extend to both sides of the messaging area. Thank you
![SmallScreen](/uploads/df12410...GNU Ring "In varietate concordia" built on 2018-06-08 16:34:45 UTC.
# Notifications
Please enable the notifications, i.e. icons and descriptions, to extend to both sides of the messaging area. Thank you
![SmallScreen](/uploads/df124105326accaf4db0edaa2f959196/SmallScreen.png)
# Settings
Please enable the Settings to be narrower. Image below shows the smallest width. Thank you
![Settings](/uploads/8a99f7161ea46742bb84ab1f595c806f/Settings.png)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/956ut_conversationMembersEvent: sporadic failures2024-03-04T18:11:59ZSébastien Blinut_conversationMembersEvent: sporadic failures```
1) test: jami::test::ConversationMembersEventTest::testAddAcceptOfflineThenConnects (F) line: 600 conversation/conversationMembersEvent.cpp
assertion failed
- Expression: cv.wait_for(lk, 60s, [&]() { return !bobData.conversationId.em...```
1) test: jami::test::ConversationMembersEventTest::testAddAcceptOfflineThenConnects (F) line: 600 conversation/conversationMembersEvent.cpp
assertion failed
- Expression: cv.wait_for(lk, 60s, [&]() { return !bobData.conversationId.empty(); })2) test: jami::test::ConversationMembersEventTest::testMemberCannotBanOther (F) line: 920 conversation/conversationMembersEvent.cpp
assertion failed
- Expression: cv.wait_for(lk, 30s, [&]() { return aliceData.errorDetected; })3) test: jami::test::ConversationMembersEventTest::testBanUnbanGotFirstConv (F) line: 1592 conversation/conversationMembersEvent.cpp
assertion failed
- Expression: cv.wait_for(lk, 30s, [&]() { return getMessage(bobData, msgId) && getMessage(bob2Data, msgId); })
```Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/13Add PipeWire support on Linux2024-03-22T15:44:49ZannaAdd PipeWire support on LinuxTo quote the PipeWire website (https://pipewire.org/#about):
"PipeWire is a project that aims to greatly improve handling of audio and video under Linux. It aims to support the usecases currently handled by both PulseAudio and Jack and ...To quote the PipeWire website (https://pipewire.org/#about):
"PipeWire is a project that aims to greatly improve handling of audio and video under Linux. It aims to support the usecases currently handled by both PulseAudio and Jack and at the same time provide same level of powerful handling of Video input and output. It also introduces a security model that makes interacting with audio and video devices from containerized applications easy, with supporting Flatpak applications being the primary goal. Alongside Wayland and Flatpak we expect PipeWire to provide a core building block for the future of Linux application development.
Features include:
* Capture and playback of audio and video with minimal latency.
* Real-time Multimedia processing on audio and video.
* Multiprocess architecture to let applications share multimedia content.
* GStreamer plugins for easy use and integration in current applications.
* Sandboxed applications support.
See Flatpak for more info."
@pgorley What do you think?François-Simon Fauteux-ChapleauFrançois-Simon Fauteux-Chapleauhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/499SIP Call Tranfer & Hold Issues2021-04-08T20:41:12ZMing Rui ZhangSIP Call Tranfer & Hold IssuesThe main reason for these issues are related to re-INVITE message handling
Originally, we rely on the auto-response from pjsip.
But their response contains an invalid Contact header
Changes are required to be madeThe main reason for these issues are related to re-INVITE message handling
Originally, we rely on the auto-response from pjsip.
But their response contains an invalid Contact header
Changes are required to be madeMing Rui ZhangMing Rui Zhanghttps://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/15Allow Incoming call options doesn't work2024-03-08T19:26:15ZSébastien BlinAllow Incoming call options doesn't work```
ALLOW_CERT_FROM_HISTORY
ALLOW_CERT_FROM_CONTACT
ALLOW_CERT_FROM_TRUSTED
```
doesn't change the behavior of the daemon. If this option is set to false, this should disallow calls from peers.```
ALLOW_CERT_FROM_HISTORY
ALLOW_CERT_FROM_CONTACT
ALLOW_CERT_FROM_TRUSTED
```
doesn't change the behavior of the daemon. If this option is set to false, this should disallow calls from peers.https://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/17Account migration status is Broken2024-03-08T19:26:15ZSébastien BlinAccount migration status is BrokenInstead the `ERROR_NEED_MIGRATION` the status `ERROR_GENERIC` is triggered.
# Reproduce step
1. Create a Ring account with a password
2. Remove device_crt* from the `local` directory
3. Launch the daemon and look at the status of the a...Instead the `ERROR_NEED_MIGRATION` the status `ERROR_GENERIC` is triggered.
# Reproduce step
1. Create a Ring account with a password
2. Remove device_crt* from the `local` directory
3. Launch the daemon and look at the status of the account
4. The account got status `ERROR_GENERIC`
# Expected
The account should have a `ERROR_NEED_MIGRATION` to launch the migration view in the client.Gnome 2018.07.15Sébastien BlinSébastien Blinhttps://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/19Able to place calls with disabled account2022-11-14T21:52:31ZPhilippe GorleyAble to place calls with disabled accountSteps:
1. Create an account
2. Disable said account
3. Place a call
Expected result: No call is placed, get an error message
Actual result: Daemon prints "Account is not usable for calling", but client is searching for the peer.Steps:
1. Create an account
2. Disable said account
3. Place a call
Expected result: No call is placed, get an error message
Actual result: Daemon prints "Account is not usable for calling", but client is searching for the peer.Sé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/21SIP register fails: No username on digest authentication2024-02-08T18:58:54ZAlba MendezSIP register fails: No username on digest authenticationThis bug has been driving me mad for quite some time. I just installed Ring for Ubuntu 16.04 following official instructions, opened, set up a SIP account with hostname=10.139.205.101, username=10, password=test and it fails to register....This bug has been driving me mad for quite some time. I just installed Ring for Ubuntu 16.04 following official instructions, opened, set up a SIP account with hostname=10.139.205.101, username=10, password=test and it fails to register.
My Asterisk server sends:
From: "main" <sip:10@10.139.205.101>;tag=8005b703-201b-47e8-be88-03d7564a5ba8
To: "main" <sip:10@10.139.205.101>;tag=as3f952c47
...
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="0074f5d0"
And Ring then sends:
From: "main" <sip:10@10.139.205.101>;tag=8005b703-201b-47e8-be88-03d7564a5ba8
To: "main" <sip:10@10.139.205.101>
...
Authorization: Digest , realm="asterisk", nonce="0074f5d0", uri="sip:10.139.205.101", response="631415fcf3715907a48f11fec1e6a880", algorithm=MD5
i.e. notice the space and comma after `Digest`
ring-daemon version 2018-07-07. Bug could be on upstream, for some reason username is not set on `pjsip/src/pjsip/sip_auth_client.c` when adding the Authorization header, [header printed here](https://github.com/asterisk/pjproject/blob/106ec876a371b57bb3db8231a55cb5f368e6266b/pjsip/src/pjsip/sip_auth_msg.c#L73).Next major releaseSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/22intercom: segfault while deleting self-conversation2022-11-14T21:52:31ZHugo Lefeuvreintercom: segfault while deleting self-conversation**How to reproduce**:
1. Create a conversation with yourself
2. Try to remove it using "Remove conversation" in the smartlist
The daemon segfaults.
**Stacktrace**:
```
Thread 1 "dring" received signal SIGSEGV, Segmentation fault. ...**How to reproduce**:
1. Create a conversation with yourself
2. Try to remove it using "Remove conversation" in the smartlist
The daemon segfaults.
**Stacktrace**:
```
Thread 1 "dring" received signal SIGSEGV, Segmentation fault.
0x00007fffef394153 in asn1_delete_structure2 () from /usr/lib/x86_64-linux-gnu/libtasn1.so.6
(gdb) bt
#0 0x00007fffef394153 in asn1_delete_structure2 () at /usr/lib/x86_64-linux-gnu/libtasn1.so.6
#1 0x00007ffff64ccf09 in gnutls_x509_crl_deinit () at /usr/lib/x86_64-linux-gnu/libgnutls.so.30
#2 0x00007ffff6504544 in gnutls_x509_trust_list_deinit () at /usr/lib/x86_64-linux-gnu/libgnutls.so.30
#3 0x00005555558d9b8e in dht::crypto::TrustList::operator=(dht::crypto::TrustList&&) ()
#4 0x000055555561d064 in ring::tls::TrustStore::rebuildTrust() (this=this@entry=0x555555dc5a48)
at certstore.cpp:549
#5 0x00005555556225d0 in ring::tls::TrustStore::setCertificateStatus(std::shared_ptr<dht::crypto::Certificate>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ring::tls::TrustStore::PermissionStatus, bool) (this=0x555555dc5a48, cert=std::shared_ptr<dht::crypto::Certificate> (empty) = {...}, cert_id="eb3c27067c4637b99bf9895d5babb2c77c3115b5", status=status@entry=ring::tls::TrustStore::PermissionStatus::UNDEFINED, local=local@entry=false) at certstore.cpp:468
#6 0x0000555555622ddc in ring::tls::TrustStore::setCertificateStatus(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ring::tls::TrustStore::PermissionStatus) (this=<optimized out>, cert_id="eb3c27067c4637b99bf9895d5babb2c77c3115b5", status=status@entry=ring::tls::TrustStore::PermissionStatus::UNDEFINED) at certstore.cpp:416
#7 0x0000555555677fd2 in ring::RingAccount::removeContact(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (this=this@entry=
0x555555dc4430, uri="eb3c27067c4637b99bf9895d5babb2c77c3115b5", ban=ban@entry=false)
at ringaccount.cpp:2941
#8 0x000055555560a260 in DRing::removeContact(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&, bool) (accountId="bde9e076abf742fb", uri="eb3c27067c4637b99bf9895d5babb2c77c3115b5", ban=<optimized out>) at configurationmanager.cpp:340
#9 0x00005555555d3304 in DBusConfigurationManager::removeContact(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&, bool const&) (ban=@0x7fffffffdbff: false, uri="eb3c27067c4637b99bf9895d5babb2c77c3115b5", accountId="bde9e076abf742fb", this=0x555555b48880) at dbusconfigurationmanager.cpp:551
#10 0x00005555555d3304 in cx::ring::Ring::ConfigurationManager_adaptor::_removeContact_stub(DBus::CallMessage const&) (this=0x555555b48880, call=...) at dbusconfigurationmanager.adaptor.h:2323
#11 0x00005555555d0397 in DBus::Callback<cx::ring::Ring::ConfigurationManager_adaptor, DBus::Message, DBus::CallMessage const&>::call(DBus::CallMessage const&) const (this=<optimized out>, param=...)
at /home/hle/Development/ring/ring-daemon/contrib/x86_64-linux-gnu/include/dbus-c++-1/dbus-c++/util.h:283
#12 0x00005555555ebcbe in DBus::Slot<DBus::Message, DBus::CallMessage const&>::call(DBus::CallMessage const&) const ()
#13 0x00005555555eacfd in DBus::InterfaceAdaptor::dispatch_method(DBus::CallMessage const&) ()
#14 0x00005555555f3d92 in DBus::ObjectAdaptor::handle_message(DBus::Message const&) ()
#15 0x00005555555f3427 in DBus::ObjectAdaptor::Private::message_function_stub(DBusConnection*, DBusMessage*, void*) ()
#16 0x00007ffff7bad440 in () at /lib/x86_64-linux-gnu/libdbus-1.so.3
#17 0x00007ffff7b9e20a in dbus_connection_dispatch () at /lib/x86_64-linux-gnu/libdbus-1.so.3
#18 0x00005555555e1d8a in DBus::Connection::Private::do_dispatch() ()
#19 0x00005555555e533e in DBus::Dispatcher::dispatch_pending(std::__cxx11::list<DBus::Connection::Private*, std::allocator<DBus::Connection::Private*> >&) ()
#20 0x00005555555e516e in DBus::Dispatcher::dispatch_pending() ()
#21 0x00005555555e9156 in DBus::BusDispatcher::do_iteration() ()
#22 0x00005555555e8e89 in DBus::BusDispatcher::enter() ()
#23 0x00005555555ac3ff in DBusClient::event_loop() (this=<optimized out>) at dbusclient.cpp:250
#24 0x00005555555a63e2 in main(int, char**) (argc=2, argv=<optimized out>) at main.cpp:236
(gdb) up 7
#7 0x0000555555677fd2 in ring::RingAccount::removeContact (this=this@entry=0x555555dc4430,
uri="eb3c27067c4637b99bf9895d5babb2c77c3115b5", ban=ban@entry=false) at ringaccount.cpp:2941
2941 trust_.setCertificateStatus(uri, ban ? tls::TrustStore::PermissionStatus::BANNED
(gdb) l
2936 c = contacts_.emplace(h, Contact{}).first;
2937 else if (not c->second.isActive() and c->second.banned == ban)
2938 return;
2939 c->second.removed = std::time(nullptr);
2940 c->second.banned = ban;
2941 trust_.setCertificateStatus(uri, ban ? tls::TrustStore::PermissionStatus::BANNED
2942 : tls::TrustStore::PermissionStatus::UNDEFINED);
2943 if (ban and trustRequests_.erase(h) > 0)
2944 saveTrustRequests();
2945 saveContacts();
(gdb) p ban
$1 = false
(gdb)
```Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/23crash of DE during Ring call2022-11-14T21:52:31ZHugo Lefeuvrecrash of DE during Ring call**Affects**: Ring GNU/Linux GNOME client (since 20180625 ?)
**Original messages**: [Ring-dev](http://lists.gnu.org/archive/html/ring/2018-07/msg00002.html), [Mastodon](https://mstdn.io/@hle/100367814979361578)
It was reported by severa...**Affects**: Ring GNU/Linux GNOME client (since 20180625 ?)
**Original messages**: [Ring-dev](http://lists.gnu.org/archive/html/ring/2018-07/msg00002.html), [Mastodon](https://mstdn.io/@hle/100367814979361578)
It was reported by several users from ring-dev and Mastodon that making a video call leads the desktop environment (KDE and GNOME) to crash (possibly because of an X11 issue).
It was supposed that the bug is coming from xorg-nouveau, but some Radeon users seem to be also affected by this bug.https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/24Please support the current pjsip version2022-11-14T21:52:31ZJami BotPlease support the current pjsip versionIssue generated from Tuleap's migration script.
**Originally submitted by: Yuri (yurivict)**
Build with the current pjsip-2.6 fails with missing pjsip\_dlg\_create\_uas which is deprecated. You require pjsip-2.4. But this poses a proble...Issue generated from Tuleap's migration script.
**Originally submitted by: Yuri (yurivict)**
Build with the current pjsip-2.6 fails with missing pjsip\_dlg\_create\_uas which is deprecated. You require pjsip-2.4. But this poses a problem for packaging systems because this requires the custom build and installation of older versions.
ring-daemon-2.2.0https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/25ring-daemon breaks: no member named 'raw\_chain' in 'pj\_ssl\_cert\_info'2022-11-14T21:52:31ZJami Botring-daemon breaks: no member named 'raw\_chain' in 'pj\_ssl\_cert\_info'Issue generated from Tuleap's migration script.
**Originally submitted by: Yuri (yurivict)**
Getting this in the FreeBSD port.
It also expects a missing symbol PJSIP\_TRANSPORT\_DTLS6.
You provide patches for pjsip. However, it isn'...Issue generated from Tuleap's migration script.
**Originally submitted by: Yuri (yurivict)**
Getting this in the FreeBSD port.
It also expects a missing symbol PJSIP\_TRANSPORT\_DTLS6.
You provide patches for pjsip. However, it isn't easy to build pjsip. This is done by its own port. Ring port can't just easily repeat what the other port is doing.
Please merge your patches into the pjsip upstream, so that there will be no need to keep any patches.https://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/102PJProject: upstream RFC60622019-05-22T19:08:52ZSébastien BlinPJProject: upstream RFC6062Iteration 7Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/228File transfer: multiple improvements2020-06-29T15:07:19ZSébastien BlinFile transfer: multiple improvements+ [ ] Remove eventloop from PeerConnection
+ [ ] Fix potential resources deadlocks
+ [ ] Fix mutex usage
+ [ ] Channeled File Transfer to avoid ICE negotiation when possible.+ [ ] Remove eventloop from PeerConnection
+ [ ] Fix potential resources deadlocks
+ [ ] Fix mutex usage
+ [ ] Channeled File Transfer to avoid ICE negotiation when possible.Iteration 18Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/27Add AV1 codec support to replace H.264 in the (near) future2022-11-14T21:52:31ZannaAdd AV1 codec support to replace H.264 in the (near) futureTo quote parts of the Mozilla AV1 website (https://research.mozilla.org/av1-media-codecs/):
> **What is AV1?**
>
> AV1 is a new video codec that promises to help companies and individuals transmit high-quality video over the internet e...To quote parts of the Mozilla AV1 website (https://research.mozilla.org/av1-media-codecs/):
> **What is AV1?**
>
> AV1 is a new video codec that promises to help companies and individuals transmit high-quality video over the internet efficiently, without paying royalty fees.
>
> AV1 is the first project to come out of the Alliance for Open Media (AOMedia), a consortium that promotes media codecs, formats, and technologies for the public web. Mozilla joined AOMedia in 2015 as a founding member. Mozilla sponsors open media codecs like AV1 because they have the potential to remove technical and financial barriers for people who want to create and share high-quality media experiences on the open web platform.
>
>**How is AV1 different? What will it replace or change?**
>
> The most popular video format in use today is AVC/H.264. That technology was introduced in 2003 and is owned by the Moving Picture Experts Group (MPEG).
>
> AV1 is different from AVC/H.264 because it:
>
>* Uses next-generation compression technology that is nearly twice as efficient
>* Can transmit high-quality video faster over the internet
>* Has no licensing fees; anyone can compress and decode video files without paying royalties
>* Can deliver higher-quality experiences to end users, even when bandwidth is constrained
>
> MPEG has created a successor to AVC/H.264, known as HEVC (High Efficiency Video Coding) or H.265, which has improved compression. However, uncertainty around HEVC’s licensing fees make it untenable for both web browsers and content creators.
>
> The goal of the AV1 project is to replace AVC/H.264 as the predominant video format for the web and to compete with the HEVC codec, so high-quality video can be shared freely and efficiently on the open web platform.
@pgorley What do you think?https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/28"Blob" class split for increased clarity2022-11-14T21:52:31ZJami Bot"Blob" class split for increased clarityIssue generated from Tuleap's migration script.
**Originally submitted by: Macony Gautradis (teamlog8430)**
The Account class is showing the first signs of becoming a monolithic "Blob" antipattern. Our solution is to split the "Blob" cl...Issue generated from Tuleap's migration script.
**Originally submitted by: Macony Gautradis (teamlog8430)**
The Account class is showing the first signs of becoming a monolithic "Blob" antipattern. Our solution is to split the "Blob" class into multiple separate subclasses, by issues, used to ease maintenance and upgrades of the code by separating relevant and linked methods into more descriptive subclasses. This initial work splits some functions of Account into the CodecContainer subclass.
The other modifications were made throughout the project to reflect the changes to Account. The makefile was updated to automake using our new class.
Here is a more thorough list of changes:
CHANGED FILES:
(all in daemon/)
MAJOR CHANGES:
src/account.h
src/account.cpp
description: Removed ALL codec-related functions, added CodecContainer class to
replace said functions,
added std::shared\_ptr<CodecContainer> codecContainer\_; and
std::shared\_ptr<CodecContainer> getCodecContainer(); definitions
Removed \#include "media\_codec.h" because it makes no sense to have
it here anymore
src/codeccontainer.h
src/codeccontainer.cpp
description: Created these two files and moved all codec-related code in
account.h/account.cpp to these respective files, creating
the CodecContainer class
in the process
Migrated code was cleaned up a bit - references to getSystemCodecContainer()
changed to already existing member systemCodecContainer\_
MINOR CHANGES:
src/Makefile.am
description: Updated automake makefile to compile the new codeccontainer.\* files
src/client/configurationmanager.cpp
description: Updated references to codec-calling functions
src/media/video/video\_sender.cpp
description: Added \#include "media\_codec.h" that was implicitly included in account.h
but removed due to codec separation
src/sip/sipaccount.cpp
description: Updated references to codec-calling functions
src/sip/sipcall.cpp
description: Updated references to codec-calling functions
src/sip/sipvoiplink.cpp
description: Updated references to codec-calling functions
src/ringdht/ringaccount.cpp
description: Updated references to codec-calling functions
\* Was only tested on Mint
[RingChanges.zip](/uploads/035972cc8864c9cbc735f2829d219685/RingChanges.zip)https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/29Temporary IPv6 addresses can cause PJSIP to fail2022-11-14T21:52:31ZJami BotTemporary IPv6 addresses can cause PJSIP to failIssue generated from Tuleap's migration script.
**Originally submitted by: Maxim Cournoyer (mcournoyer)**
\* Environment:
This problem seems to affect mostly GNU/Linux and macOS systems configured to change their iPv6 address often, a...Issue generated from Tuleap's migration script.
**Originally submitted by: Maxim Cournoyer (mcournoyer)**
\* Environment:
This problem seems to affect mostly GNU/Linux and macOS systems configured to change their iPv6 address often, as a privacy measure. It would affect any platform that gathers a sufficient number of temporary IPv6 addresses.
\* Reproduce steps:
1. Register multiple IPv6 addresses:
A script used to generate those temporary IPv6 addresses can be found here: https://gitlab.savoirfairelinux.com/snippets/116
That script and the accompanying 'gen-random-ipv6.sh' should be placed in the same directory. The IFDEV and IPV6\_PREFIX should be adjusted to match your network device and IPv6 prefix, respectively. It is important that the IFDEV environment matches the \*currently\* used network interface if you have many, otherwise the problem will not be triggered.
Run the script like this: sudo ./add-ipv6-addresses.sh
2. Launch Ring and try to place a call.
\* Expected result:
The call should succeed.
\* Actual result (as seen in the daemon's debug output):
[1513801602.823|14926|ice\_transport.cpp :429 ] [ice:0x2fa48b0] initialization success
[1513801602.823|14926|ice\_transport.cpp :482 ] ICE as master
[1513801602.829|14926|ice\_transport.cpp :576 ] [ice:0x2fa48b0] (local) ufrag=2567c1bd, pwd=51e44a5d
[1513801602.829|12099|sipcall.cpp :776 ] [call:10040259774347710226] fill SDP with ICE transport 0x2d97040
dring: ../src/pjmedia/sdp.c:187: pjmedia\_sdp\_attr\_add: Assertion `\*count < (32\*2 + 4)' failed.
Abandon (core dumped)
A patch addressing the issue is in review here: https://gerrit-ring.savoirfairelinux.com/\#/c/8462/Next major releaseSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/30Potential segfault when calling setCredentials and setAccountDetails at the ...2022-11-14T21:52:31ZSébastien BlinPotential segfault when calling setCredentials and setAccountDetails at the same timeBot method unregister the account for doing modifications. If calling at the same time, this can lead to a segfault.
i think doRegister_/other similar methods should be queued or protected by a lockBot method unregister the account for doing modifications. If calling at the same time, this can lead to a segfault.
i think doRegister_/other similar methods should be queued or protected by a lockhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/31contactAdded not emitted when a notification as been accepted for the second ...2022-11-14T21:52:31ZSébastien BlincontactAdded not emitted when a notification as been accepted for the second time# Reproduce step
0. receive a message
1. Add a contact with `ConfigurationManager::instance().addContact()`
2. Remove a contact with `ConfigurationManager::instance().removeContact()`
3. receive a new message from the same contact (this...# Reproduce step
0. receive a message
1. Add a contact with `ConfigurationManager::instance().addContact()`
2. Remove a contact with `ConfigurationManager::instance().removeContact()`
3. receive a new message from the same contact (this contact should be in pending contacts)
4. Add a contact with `ConfigurationManager::instance().addContact()`
# Expected result
The client should receives a `contactAdded`
# Current result
`contactAdded` is not emittedhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/32macOS Crash leaves me unable to access ring with my account2022-11-14T21:52:31ZMichael S. MoodymacOS Crash leaves me unable to access ring with my accountI installed ring last week, created an account with my preferred username, registering it, and was planning to add new devices this week. I rebooted my Macbook today, ring started up with the system. I was doing other things, and so I to...I installed ring last week, created an account with my preferred username, registering it, and was planning to add new devices this week. I rebooted my Macbook today, ring started up with the system. I was doing other things, and so I told it not to startup with the system, and gracefully closed it. However, about a minute later, the typical message on macOS showing that an application (ring) did not close properly came up (I do have the crash logs, if given guidance to ensure they're sanitized of sensitive information).
I found I was unable to get back into my account. I did attempt to follow (loosely) the instructions I found here from 2017: http://lists.nongnu.org/archive/html/ring/2017-01/msg00008.html relating to recovering a ring account. I do of course have the directory backed up from ~/Library/Application Support/ring but at this time, I haven't been able to get into my account again. I seem to also have backups of the cache directories, assuming that's helpful in any way.
I deleted the ring directory, created a new (unregistered) account, closed the application, and it too crashed again, leaving that account orphaned as well. This seems to be a somewhat show stopping bug that is also preventing me from using my account again, and guidance is certainly appreciated.
Thanks in advance,
Michaelhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/33After removing GSM and libsamplerate they still needed for compilation2022-11-14T21:52:32ZszotsakiAfter removing GSM and libsamplerate they still needed for compilation2cbbaf7983497e51ea19bf4ba02a8fa35d2402f8 removed GSM and libsamplerate requirements.
After I removed them from the openSUSE build system as well, the compilation fails with the following:
```
[ 228s] CXXLD libring.la
[ 229s] /us...2cbbaf7983497e51ea19bf4ba02a8fa35d2402f8 removed GSM and libsamplerate requirements.
After I removed them from the openSUSE build system as well, the compilation fails with the following:
```
[ 228s] CXXLD libring.la
[ 229s] /usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/bin/ld: cannot find -lgsm
[ 229s] /usr/lib64/gcc/x86_64-suse-linux/8/../../../../x86_64-suse-linux/bin/ld: cannot find -lsamplerate
[ 229s] collect2: error: ld returned 1 exit status
```https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/34Jami daemon crashes right on startup (ring::SIPAccount::checkNATAddress)2022-11-14T21:52:32ZszotsakiJami daemon crashes right on startup (ring::SIPAccount::checkNATAddress)Environment:
- openSUSE Tumbleweed x64
- dring version: 5.1.0.20180720.629aab942
Reproduce steps:
Start dring with: `SIPLOGLEVEL=8 /usr/lib64/ring/dring`
It dumps core right after startup.
Backtrace:
```
#0 ring::SIPAccount::checkNAT...Environment:
- openSUSE Tumbleweed x64
- dring version: 5.1.0.20180720.629aab942
Reproduce steps:
Start dring with: `SIPLOGLEVEL=8 /usr/lib64/ring/dring`
It dumps core right after startup.
Backtrace:
```
#0 ring::SIPAccount::checkNATAddress(pjsip_regc_cbparam*, pj_pool_t*) () at sipaccount.cpp:1766
#1 0x00007ffff77c993a in ring::SIPAccount::onRegister(pjsip_regc_cbparam*) () at /usr/include/c++/8/bits/shared_ptr_base.h:996
#2 0x00007ffff666f8d7 in call_callback (regc=regc@entry=0x5555557df0c8, status=<optimized out>, st_code=<optimized out>, reason=<optimized out>, rdata=<optimized out>, expiration=<optimized out>, contact_cnt=1,
contact=0x7fffffffcbb0, is_unreg=0) at ../src/pjsip-ua/sip_reg.c:775
#3 0x00007ffff667131b in regc_tsx_callback (token=<optimized out>, event=<optimized out>) at ../src/pjsip-ua/sip_reg.c:1345
#4 0x00007ffff622b6fc in tsx_set_state (tsx=tsx@entry=0x5555558685f8, state=state@entry=PJSIP_TSX_STATE_COMPLETED, event_src_type=event_src_type@entry=PJSIP_EVENT_RX_MSG, event_src=0x555555878628, flag=flag@entry=0)
at ../src/pjsip/sip_transaction.c:1267
#5 0x00007ffff622d6e5 in tsx_on_state_proceeding_uac (tsx=0x5555558685f8, event=0x7fffffffce10) at ../src/pjsip/sip_transaction.c:3001
#6 0x00007ffff622ef7e in pjsip_tsx_recv_msg (tsx=tsx@entry=0x5555558685f8, rdata=rdata@entry=0x555555878628) at ../src/pjsip/sip_transaction.c:1827
#7 0x00007ffff622f085 in mod_tsx_layer_on_rx_response (rdata=0x555555878628) at ../src/pjsip/sip_transaction.c:893
#8 0x00007ffff621761f in pjsip_endpt_process_rx_data (endpt=0x555555887da8, rdata=0x555555878628, p=<optimized out>, p_handled=0x7fffffffcf3c) at ../src/pjsip/sip_endpoint.c:901
#9 0x00007ffff62177ee in endpt_on_rx_msg (endpt=0x555555887da8, status=<optimized out>, rdata=0x555555878628) at ../src/pjsip/sip_endpoint.c:1043
#10 0x00007ffff621e219 in pjsip_tpmgr_receive_packet (mgr=<optimized out>, rdata=rdata@entry=0x555555878628) at ../src/pjsip/sip_transport.c:1979
#11 0x00007ffff622127f in udp_on_read_complete (key=0x555555893400, op_key=<optimized out>, bytes_read=<optimized out>) at ../src/pjsip/sip_transport_udp.c:170
#12 0x00007ffff592ad97 in ioqueue_dispatch_read_event (ioqueue=<optimized out>, h=0x555555893400) at ../src/pj/ioqueue_common_abs.c:605
#13 0x00007ffff592c60e in pj_ioqueue_poll (ioqueue=0x555555892b40, timeout=timeout@entry=0x7fffffffd4a0) at ../src/pj/ioqueue_epoll.c:812
#14 0x00007ffff621733a in pjsip_endpt_handle_events2 (endpt=0x555555887da8, max_timeout=max_timeout@entry=0x7ffff79162d0 <ring::SIPVoIPLink::handleEvents()::timeout>, p_count=p_count@entry=0x0) at ../src/pjsip/sip_endpoint.c:744
#15 0x00007ffff62173e7 in pjsip_endpt_handle_events (endpt=<optimized out>, max_timeout=max_timeout@entry=0x7ffff79162d0 <ring::SIPVoIPLink::handleEvents()::timeout>) at ../src/pjsip/sip_endpoint.c:776
#16 0x00007ffff77df3f1 in ring::SIPVoIPLink::handleEvents() () at sipvoiplink.cpp:698
#17 0x00007ffff7767d58 in ring::Manager::pollEvents() () at /usr/include/c++/8/bits/std_function.h:682
#18 0x00007ffff7bbe7dd in DBus::DefaultMainLoop::dispatch() () from /usr/lib64/libdbus-c++-1.so.1
#19 0x00007ffff7bbf201 in DBus::BusDispatcher::enter() () from /usr/lib64/libdbus-c++-1.so.1
#20 0x000055555557bb3f in DBusClient::event_loop() () at /usr/include/c++/8/bits/unique_ptr.h:342
#21 0x000055555557b29f in main () at main.cpp:236
#22 0x00007ffff6d1211b in __libc_start_main (main=0x55555557ae40 <main>, argc=1, argv=0x7fffffffddd8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffddc8) at ../csu/libc-start.c:308
#23 0x000055555557b5ba in _start () at ../sysdeps/x86_64/start.S:120
```
Full [backtrace](/uploads/7d77988d98dd470c9440bc1da20b6989/dring.log) is attached. 0th frame contains a GDB <error>.Ming Rui ZhangMing Rui Zhanghttps://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/37Ability to stream audio files2022-11-14T21:52:32ZPhilippe GorleyAbility to stream audio filesWhen streaming files during a call, only the video is streamed, not the audio.When streaming files during a call, only the video is streamed, not the audio.Philippe GorleyPhilippe Gorley