Jami recivies SIGABRT while connecting to network
Describe your environment
Please specify the following:
- OS: Manjaro Linux x86_64
- Jami version: 202110150847
- What build you are using: flathub beta
Steps to reproduce
- Can you reproduce the bug: at will
- Steps:
- Start jami-qt.
- Log in to existing account.
- Wait about 10 seconds while jami connects to network.
- Crash.
- Actual result: jami-qt crashes.
- Expected result: it should not crash.
Additional information
Console log:
[1634310322.509| 132|connectionmanager.cpp:767 ] [Account 02f00663f1ee75e7] [CNX] connection accepted, DHT reply to 4933c5ea1771c0b432a38c751833856c2fdcee61dd4d281f652badb9bc915227
[1634310322.509| 132|ice_transport.cpp :1255 ] [ice:0x7ffedc1b7700] negotiation starting (7 remote candidates)
[1634310322.603| 101|account_manager.cpp:211 ] device announced at 31b900c6be8cebabbcfe33d96750cb1e7b06b600
[1634310323.017| 142|ice_transport.cpp :686 ] [ice:0x7ffedc1b7700] TCP negotiation success
[1634310323.017| 142|ice_transport.cpp :712 ] [ice:0x7ffedc1b7700] TCP connection pairs ([comp id] local [type] <-> remote [type]):
[1] 192.168.16.178:55192 [prflx] <-> 192.168.16.182:14206 [host]
[1634310323.017| 104|connectionmanager.cpp:831 ] [Account 02f00663f1ee75e7] Start TLS session - Initied by DHT request. Device:afc6dfe77c7af829b4f88dc21f68601012ff69e5 - vid: 2548209633465894
[New Thread 0x7ffeaffff700 (LWP 143)]
[1634310323.017| 143|tls_session.cpp :1057 ] [TLS] Start client session
[1634310323.030| 143|tls_session.cpp :528 ] [TLS] User identity loaded
[1634310323.030| 143|tls_session.cpp :1153 ] [TLS] handshake
/usr/include/c++/10.2.0/bits/stl_vector.h:1063: std::vector<_Tp, _Alloc>::const_reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) const [with _Tp = jami::IpAddr; _Alloc = std::allocator<jami::IpAddr>; std::vector<_Tp, _Alloc>::const_reference = const jami::IpAddr&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__builtin_expect(__n < this->size(), true)' failed.
--Type <RET> for more, q to quit, c to continue without paging--c
Backtrace:
(gdb) bt
#0 0x00007ffff54b97f5 in raise () at /usr/lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff54a2855 in abort () at /usr/lib/x86_64-linux-gnu/libc.so.6
#2 0x00007fffec56af98 in std::__replacement_assert(char const*, int, char const*, char const*)
(__file=__file@entry=0x7fffecfab8d8 "/usr/include/c++/10.2.0/bits/stl_vector.h", __line=__line@entry=1063, __function=__function@entry=0x7fffecfb4d28 "std::vector<_Tp, _Alloc>::const_reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) const [with _Tp = jami::IpAddr; _Alloc = std::allocator<jami::IpAddr>; std::vector<_"..., __condition=__condition@entry=0x7fffecfb0b70 "__builtin_expect(__n < this->size(), true)")
at /usr/include/c++/10.2.0/x86_64-unknown-linux-gnu/bits/c++config.h:457
#3 0x00007fffec5cc7a7 in std::vector<jami::IpAddr, std::allocator<jami::IpAddr> >::operator[](unsigned long) const
(this=<optimized out>, __n=<optimized out>) at /usr/include/c++/10.2.0/bits/stl_vector.h:1061
#4 std::vector<jami::IpAddr, std::allocator<jami::IpAddr> >::operator[](unsigned long) const
(this=<optimized out>, this=<optimized out>, __n=<optimized out>) at /usr/include/c++/10.2.0/bits/stl_vector.h:1061
#5 jami::IceTransport::Impl::getDefaultRemoteAddress(unsigned int) const (this=<optimized out>, compId=<optimized out>) at ice_transport.cpp:1094
#6 0x00007fffec5cc7e2 in jami::IceTransport::getRemoteAddress(unsigned int) const (this=0x7ffedc0bd6d0, comp_id=1)
at /usr/include/c++/10.2.0/bits/unique_ptr.h:421
#7 0x00007fffec5cc9f0 in jami::IceTransport::send(unsigned int, unsigned char const*, unsigned long)
(this=0x7ffedc0bd6d0, compId=1, buf=buf@entry=0x7ffee404ad7b "\026\003\001\001.\001", len=len@entry=307) at ice_transport.cpp:1681
#8 0x00007fffec5e2d23 in jami::IceSocketEndpoint::write(unsigned char const*, unsigned long, std::error_code&)
(ec=..., len=307, buf=0x7ffee404ad7b "\026\003\001\001.\001", this=0x7ffef0002db0) at /usr/include/c++/10.2.0/bits/shared_ptr_base.h:1324
#9 jami::IceSocketEndpoint::write(unsigned char const*, unsigned long, std::error_code&)
(this=0x7ffef0002db0, buf=0x7ffee404ad7b "\026\003\001\001.\001", len=307, ec=...) at peer_connection.cpp:145
#10 0x00007fffec76a32d in jami::tls::TlsSession::TlsSessionImpl::sendRaw(void const*, unsigned long)
(this=0x7ffed00038e0, buf=0x7ffee404ad7b, size=307) at ./security/tls_session.cpp:898
#11 0x00007fffec76a6eb in jami::tls::TlsSession::TlsSessionImpl::sendRawVec(iovec const*, int)
(iovcnt=<optimized out>, iov=<optimized out>, this=0x7ffed00038e0) at ./security/tls_session.cpp:909
#12 operator() (iovcnt=<optimized out>, iov=<optimized out>, t=0x7ffed00038e0, __closure=0x0) at ./security/tls_session.cpp:605
#13 _FUN(gnutls_transport_ptr_t, giovec_t const*, int) () at ./security/tls_session.cpp:606
#14 0x00007fffe836a309 in _gnutls_io_write_flush () at /usr/lib/x86_64-linux-gnu/libgnutls.so.30
#15 0x00007fffe836b598 in _gnutls_handshake_io_write_flush () at /usr/lib/x86_64-linux-gnu/libgnutls.so.30
#16 0x00007fffe836d6f8 in _gnutls_send_handshake2 () at /usr/lib/x86_64-linux-gnu/libgnutls.so.30
#17 0x00007fffe83712ff in send_client_hello () at /usr/lib/x86_64-linux-gnu/libgnutls.so.30
#18 0x00007fffe83718f8 in gnutls_handshake () at /usr/lib/x86_64-linux-gnu/libgnutls.so.30
#19 0x00007fffec768388 in jami::tls::TlsSession::TlsSessionImpl::handleStateHandshake(jami::tls::TlsSessionState)
(this=0x7ffed00038e0, state=jami::tls::TlsSessionState::HANDSHAKE) at ./security/tls_session.cpp:1154
#20 0x00007fffec76d488 in std::function<jami::tls::TlsSessionState (jami::tls::TlsSessionState)>::operator()(jami::tls::TlsSessionState) const
(__args#0=jami::tls::TlsSessionState::HANDSHAKE, this=0x7ffee400a398) at /usr/include/c++/10.2.0/bits/std_function.h:617
--Type <RET> for more, q to quit, c to continue without paging--c
#21 jami::tls::TlsSession::TlsSessionImpl::process() (this=0x7ffed00038e0) at ./security/tls_session.cpp:1554
#22 0x00007fffec5c61ad in std::function<void ()>::operator()() const (this=0x7ffeafffbfe0) at /usr/include/c++/10.2.0/bits/std_function.h:617
#23 jami::ThreadLoop::mainloop(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>) (this=0x7ffed0003c50, tid=..., setup=..., process=..., cleanup=...) at threadloop.cpp:38
#24 0x00007fffec5c6a2a in std::__invoke_impl<void, void (jami::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>), jami::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()> >(std::__invoke_memfun_deref, void (jami::ThreadLoop::*&&)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>), jami::ThreadLoop*&&, std::reference_wrapper<std::thread::id>&&, std::function<bool ()>&&, std::function<void ()>&&, std::function<void ()>&&) (__f=<optimized out>, __t=<optimized out>, __f=<optimized out>, __t=<optimized out>) at /usr/include/c++/10.2.0/bits/refwrap.h:337
#25 std::__invoke<void (jami::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>), jami::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()> >(void (jami::ThreadLoop::*&&)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>), jami::ThreadLoop*&&, std::reference_wrapper<std::thread::id>&&, std::function<bool ()>&&, std::function<void ()>&&, std::function<void ()>&&) (__fn=<optimized out>) at /usr/include/c++/10.2.0/bits/invoke.h:95
#26 std::thread::_Invoker<std::tuple<void (jami::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>), jami::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()> > >::_M_invoke<0ul, 1ul, 2ul, 3ul, 4ul, 5ul>(std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul>) (this=<optimized out>) at /usr/include/c++/10.2.0/thread:264
#27 std::thread::_Invoker<std::tuple<void (jami::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>), jami::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()> > >::operator()() (this=<optimized out>) at /usr/include/c++/10.2.0/thread:271
#28 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (jami::ThreadLoop::*)(std::thread::id&, std::function<bool ()>, std::function<void ()>, std::function<void ()>), jami::ThreadLoop*, std::reference_wrapper<std::thread::id>, std::function<bool ()>, std::function<void ()>, std::function<void ()> > > >::_M_run() (this=<optimized out>) at /usr/include/c++/10.2.0/thread:215
#29 0x00007ffff5895a74 in execute_native_thread_routine () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#30 0x00007ffff54664d2 in start_thread () at /usr/lib/x86_64-linux-gnu/libpthread.so.0
#31 0x00007ffff557e323 in clone () at /usr/lib/x86_64-linux-gnu/libc.so.6
Flathub's bug report https://github.com/flathub/net.jami.Jami/issues/37