qxmpp-project / qxmpp

Cross-platform C++ XMPP client and server library
408 stars 197 forks source link

Crash when downloading a file using the file sharing manager #538

Closed jbruechert closed 1 year ago

jbruechert commented 1 year ago

This is a backtrace from Kaidan, but since it used to work there, I guess the change was in QXmpp.

#0  0x00007ffff670ceb0 in std::__uniq_ptr_impl<QXmppFileDownloadPrivate, std::default_delete<QXmppFileDownloadPrivate> >::_M_ptr() const () at /usr/local/lib/libqxmpp.so.4
#1  0x00007ffff670a4be in std::unique_ptr<QXmppFileDownloadPrivate, std::default_delete<QXmppFileDownloadPrivate> >::get() const () at /usr/local/lib/libqxmpp.so.4
#2  0x00007ffff6708d9c in std::unique_ptr<QXmppFileDownloadPrivate, std::default_delete<QXmppFileDownloadPrivate> >::operator->() const () at /usr/local/lib/libqxmpp.so.4
#3  0x00007ffff6704293 in QXmppFileSharingManager::downloadFile(QXmppFileShare const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >)::{lambda(std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)#3}::operator()(std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>) () at /usr/local/lib/libqxmpp.so.4
#4  0x00007ffff6707bab in void std::__invoke_impl<void, QXmppFileSharingManager::downloadFile(QXmppFileShare const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >)::{lambda(std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)#3}&, std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError> >(std::__invoke_other, QXmppFileSharingManager::downloadFile(QXmppFileShare const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >)::{lambda(std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)#3}&, std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>&&) () at /usr/local/lib/libqxmpp.so.4
#5  0x00007ffff670730c in std::enable_if<is_invocable_r_v<void, QXmppFileSharingManager::downloadFile(QXmppFileShare const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >)::{lambda(std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)#3}&, std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError> >, void>::type std::__invoke_r<void, QXmppFileSharingManager::downloadFile(QXmppFileShare const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >)::{lambda(std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)#3}&, std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError> >(QXmppFileSharingManager::downloadFile(QXmppFileShare const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >)::{lambda(std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)#3}&, std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>&&) () at /usr/local/lib/libqxmpp.so.4
#6  0x00007ffff6706726 in std::_Function_handler<void (std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>), QXmppFileSharingManager::downloadFile(QXmppFileShare const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >)::{lambda(std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)#3}>::_M_invoke(std::_Any_data const&, std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>&&) () at /usr/local/lib/libqxmpp.so.4
#7  0x00007ffff6719a29 in std::function<void (std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)>::operator()(std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>) const () at /usr/local/lib/libqxmpp.so.4
#8  0x00007ffff6715582 in QXmppHttpFileSharingProvider::downloadFile(std::any const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >, std::function<void (unsigned long long, unsigned long long)>, std::function<void (std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)>)::{lambda()#1}::operator()() () at /usr/local/lib/libqxmpp.so.4
#9  0x00007ffff6718c86 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, QXmppHttpFileSharingProvider::downloadFile(std::any const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >, std::function<void (unsigned long long, unsigned long long)>, std::function<void (std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)>)::{lambda()#1}>::call(QXmppHttpFileSharingProvider::downloadFile(std::any const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >, std::function<void (unsigned long long, unsigned long long)>, std::function<void (std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)>)::{lambda()#1}&, void**) ()
    at /usr/local/lib/libqxmpp.so.4
#10 0x00007ffff671891f in void QtPrivate::Functor<QXmppHttpFileSharingProvider::downloadFile(std::any const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >, std::function<void (unsigned long long, unsigned long long)>, std::function<void (std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)>)::{lambda()#1}, 0>::call<QtPrivate::List<>, void>(QXmppHttpFileSharingProvider::downloadFile(std::any const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >, std::function<void (unsigned long long, unsigned long long)>, std::function<void (std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)>)::{lambda()#1}&, void*, void**) () at /usr/local/lib/libqxmpp.so.4
#11 0x00007ffff671829a in QtPrivate::QFunctorSlotObject<QXmppHttpFileSharingProvider::downloadFile(std::any const&, std::unique_ptr<QIODevice, std::default_delete<QIODevice> >, std::function<void (unsigned long long, unsigned long long)>, std::function<void (std::variant<QXmpp::Success, QXmpp::Cancelled, QXmppError>)>)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) () at /usr/local/lib/libqxmpp.so.4
#12 0x00007ffff4ce8f4f in  () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007ffff6105398 in  () at /lib/x86_64-linux-gnu/libQt5Network.so.5
#14 0x00007ffff4cdd6f0 in QObject::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff5962fae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff4cb16f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007ffff4cb4681 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007ffff4d0a153 in  () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#19 0x00007ffff331e7a9 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007ffff331ea38 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007ffff331eacc in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007ffff4d09836 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#23 0x00007ffff4cb017b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007ffff4acab87 in QThread::exec() () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007ffff4acbd43 in  () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#26 0x00007ffff48a7fd4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#27 0x00007ffff492866c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81