It crashes at startup, after having previously succesfully logged into
my Matrix account on a previous session.
It's a reliable crash.
This is on a newly debootstrapped aarch64 machine.
Gdb points to something around QtPipeWire:
Thread 1 "nheko" received signal SIGSEGV, Segmentation fault.
QFutureInterface<std::optional<QtPipeWire::SpaObjectAudioFormat> >::resultReference (index=0, this=0xffffffffdf68)
at /usr/include/aarch64-linux-gnu/qt6/QtCore/qfutureinterface.h:415
⚠️ warning: 415 /usr/include/aarch64-linux-gnu/qt6/QtCore/qfutureinterface.h: No such file or directory
(gdb) where
#0 QFutureInterface<std::optional<QtPipeWire::SpaObjectAudioFormat> >::resultReference (index=0, this=0xffffffffdf68)
at /usr/include/aarch64-linux-gnu/qt6/QtCore/qfutureinterface.h:415
#1 QFuture<std::optional<QtPipeWire::SpaObjectAudioFormat> >::result<std::optional<QtPipeWire::SpaObjectAudioFormat>, void> (this=0xffffffffdf68)
at /usr/include/aarch64-linux-gnu/qt6/QtCore/qfuture.h:314
#2 QtPrivate::CompactContinuation<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>, void, std::optional<QtPipeWire::SpaObjectAudioFormat> >::fulfillVoidPromise (this=0xffffffffdf50)
at /usr/include/aarch64-linux-gnu/qt6/QtCore/qfuture_impl.h:630
#3 QtPrivate::CompactContinuation<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>, void, std::optional<QtPipeWire::SpaObjectAudioFormat> >::runFunction (
this=0xffffffffdf50)
at /usr/include/aarch64-linux-gnu/qt6/QtCore/qfuture_impl.h:437
--Type <RET> for more, q to quit, c to continue without paging--
#4 QtPrivate::CompactContinuation<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>, void, std::optional<QtPipeWire::SpaObjectAudioFormat> >::runImpl (
this=0xffffffffdf50)
at /usr/include/aarch64-linux-gnu/qt6/QtCore/qfuture_impl.h:349
#5 QtPrivate::CompactContinuation<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>, void, std::optional<QtPipeWire::SpaObjectAudioFormat> >::execute (
this=0xffffffffdf50)
at /usr/include/aarch64-linux-gnu/qt6/QtCore/qfuture_impl.h:482
#6 operator() (__closure=<optimized out>)
at /usr/include/aarch64-linux-gnu/qt6/QtCore/qfuture_impl.h:607
#7 QtPrivate::ContinuationWrapper<QtPrivate::CompactContinuation<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<--Type <RET> for more, q to quit, c to continue without paging--
QtPipeWire::SpaObjectAudioFormat>&)>, void, std::optional<QtPipeWire::SpaObjectAudioFormat> >::create<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)> >(QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>&&, QFuture<std::optional<QtPipeWire::SpaObjectAudioFormat> >*, QFutureInterface<void>&, QObject*)::<lambda()> >::operator()<> (this=<optimized out>)
at /usr/include/aarch64-linux-gnu/qt6/QtCore/qfuture_impl.h:504
#8 std::__invoke_impl<void, QtPrivate::ContinuationWrapper<QtPrivate::CompactContinuation<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>, void, std::optional<QtPipeWire::SpaObjectAudioFormat> >::create<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDevic--Type <RET> for more, q to quit, c to continue without paging--
eMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)> >(QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>&&, QFuture<std::optional<QtPipeWire::SpaObjectAudioFormat> >*, QFutureInterface<void>&, QObject*)::<lambda()> >&> (__f=...) at /usr/include/c++/15/bits/invoke.h:63
#9 std::__invoke_r<void, QtPrivate::ContinuationWrapper<QtPrivate::CompactContinuation<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>, void, std::optional<QtPipeWire::SpaObjectAudioFormat> >::create<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)> >(QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>&&, QFuture<--Type <RET> for more, q to quit, c to continue without paging--
std::optional<QtPipeWire::SpaObjectAudioFormat> >*, QFutureInterface<void>&, QObject*)::<lambda()> >&> (__fn=...) at /usr/include/c++/15/bits/invoke.h:113
#10 std::_Function_handler<void(), QtPrivate::ContinuationWrapper<QtPrivate::CompactContinuation<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>, void, std::optional<QtPipeWire::SpaObjectAudioFormat> >::create<QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)> >(QtPipeWire::QAudioDeviceMonitor::objectAdded(QtPipeWire::ObjectId, uint32_t, QtPipeWire::PipewireRegistryType, uint32_t, const spa_dict&)::<lambda(std::__cxx11::list<QtPipeWire::QAudioDeviceMonitor::PendingNodeRecord>&)>::<lambda(const std::optional<QtPipeWire::SpaObjectAudioFormat>&)>&&, QFuture<std::optional<QtPipeWire::SpaObjectAudioFormat> >*, QFutureInterface<void>&, QObject*)::<lambda()> > >::_M_invoke(const std::_Any_data &) (
__functor=...) at /usr/include/c++/15/bits/std_function.h:292
#11 0x0000fffff505f71c [PAC] in QtPrivate::QSlotObjectBase::call (
this=<optimized out>, r=0x0, a=0xffffffffe070)
--Type <RET> for more, q to quit, c to continue without paging--
at ./src/corelib/kernel/qobjectdefs_impl.h:461
#12 operator() (__closure=<optimized out>)
at ./src/corelib/compat/removed_api.cpp:1443
#13 operator() (__closure=<optimized out>)
at ./src/corelib/kernel/qobjectdefs_impl.h:116
#14 QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, QFutureInterfaceBase::setContinuation(const QObject*, std::function<void()>, const QVariant&, ContinuationType)::<lambda()> >::call(QFutureInterfaceBase::setContinuation(const QObject*, std::function<void()>, const QVariant&, ContinuationType)::<lambda()>&, void**)::<lambda()> > (args=<optimized out>, fn=...)
at ./src/corelib/kernel/qobjectdefs_impl.h:65
#15 QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, QFutureInterfaceBase::setContinuation(const QObject*, std::function<void()>, const QVariant&, ContinuationType)::<lambda()> >::call (f=...,
arg=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:115
#16 QtPrivate::FunctorCallable<QFutureInterfaceBase::setContinuation(const QObject*, std::function<void()>, const QVariant&, ContinuationType)::<lambda()> >::call<QtPrivate::List<>, void> (f=..., arg=<optimized out>)
at ./src/corelib/kernel/qobjectdefs_impl.h:337
--Type <RET> for more, q to quit, c to continue without paging--
#17 QtPrivate::QCallableObject<QFutureInterfaceBase::setContinuation(const QObject*, std::function<void()>, const QVariant&, ContinuationType)::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>,
r=<optimized out>, a=<optimized out>, ret=<optimized out>)
at ./src/corelib/kernel/qobjectdefs_impl.h:547
#18 0x0000fffff4f2baec [PAC] in QObject::event (this=<optimized out>,
e=<optimized out>) at ./src/corelib/kernel/qobject.cpp:1413
#19 0x0000fffff7939f00 [PAC] in QApplicationPrivate::notify_helper (
this=<optimized out>, receiver=0xaaaaac690fa8, e=0xffff900074a0)
at ./src/widgets/kernel/qapplication.cpp:3305
#20 0x0000fffff4edec30 [PAC] in QCoreApplication::notifyInternal2 (
receiver=receiver@entry=0xaaaaac690fa8, event=event@entry=0xffff900074a0)
at ./src/corelib/kernel/qcoreapplication.cpp:1109
#21 0x0000fffff4edec90 [PAC] in QCoreApplication::sendEvent (
receiver=receiver@entry=0xaaaaac690fa8, event=event@entry=0xffff900074a0)
at ./src/corelib/kernel/qcoreapplication.cpp:1549
#22 0x0000fffff4edef30 in QCoreApplicationPrivate::sendPostedEvents (
receiver=0x0, event_type=0, data=0xaaaaac1f6ef0)
at ./src/corelib/kernel/qcoreapplication.cpp:1904
--Type <RET> for more, q to quit, c to continue without paging--
#23 0x0000fffff514d0f0 [PAC] in postEventSourceDispatch (s=0xaaaaac1f9100)
at ./src/corelib/kernel/qeventdispatcher_glib.cpp:246
#24 0x0000fffff48ccd98 [PAC] in g_main_dispatch (
context=context@entry=0xffffe8000f60) at ../../../glib/gmain.c:3591
#25 0x0000fffff48d0344 [PAC] in g_main_context_dispatch_unlocked (
context=0xffffe8000f60) at ../../../glib/gmain.c:4451
#26 g_main_context_iterate_unlocked (context=context@entry=0xffffe8000f60,
block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
at ../../../glib/gmain.c:4516
#27 0x0000fffff48d0bc8 [PAC] in g_main_context_iteration (
context=0xffffe8000f60, may_block=1) at ../../../glib/gmain.c:4582
#28 0x0000fffff514aaa8 [PAC] in QEventDispatcherGlib::processEvents (
this=0xaaaaac1ba3a0, flags=...)
at ./src/corelib/kernel/qeventdispatcher_glib.cpp:399
#29 0x0000fffff4ee74c4 [PAC] in QEventLoop::exec (this=0xffffffffe500,
flags=...) at ./src/corelib/global/qflags.h:77
#30 0x0000fffff4ee1d54 [PAC] in QCoreApplication::exec ()
at ./src/corelib/kernel/qcoreapplication.cpp:1452
#31 0x0000fffff55fa6b0 [PAC] in QGuiApplication::exec ()
at ./src/gui/kernel/qguiapplication.cpp:1977
#32 0x0000fffff79358a8 in QApplication::exec ()
at ./src/widgets/kernel/qapplication.cpp:2575
#33 0x0000aaaaab41a6fc in main (argc=<optimized out>, argv=<optimized out>)
at ./src/main.cpp:481