https://bugs.kde.org/show_bug.cgi?id=501229
--- Comment #5 from Harald Sitter <sit...@kde.org> --- Looks alright. The crash looks like a symptom of something else going wrong though. Specifically we get a dbus error and then crash because of that. Do you maybe have more relevant output in your journal from xdg-desktop-portal-kde or kwin? At a glance I'd say the crash happens because we have a direct call chain into uninitialized members. That should be an easy fix by guarding d->peer in RdpConnection and/or doing a queued invocation somewhere. #0 0x00007ffff7e8992c in KRdp::RdpConnection::close (this=0x5555555ae780, reason=KRdp::RdpConnection::CloseReason::None) at /home/jan/.cache/yay/krdp-git/src/krdp/src/RdpConnection.cpp:219 #1 0x0000555555561cfe in operator() (__closure=0x5555559a5140) at /home/jan/.cache/yay/krdp-git/src/krdp/server/SessionController.cpp:155 #2 0x000055555556312f in operator() (__closure=0x7fffffffbcc0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:141 #3 0x00005555555631fd in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, SessionController::onNewConnection(KRdp::RdpConnection*)::<lambda()> >::call(SessionController::onNewConnection(KRdp::RdpConnection*)::<lambda()>&, void**)::<lambda()> >(void **, struct {...} &&) (args=0x7fffffffbdf8, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65 #4 0x0000555555563174 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, SessionController::onNewConnection(KRdp::RdpConnection*)::<lambda()> >::call(struct {...} &, void **) (f=..., arg=0x7fffffffbdf8) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:140 #5 0x0000555555563009 in QtPrivate::FunctorCallable<SessionController::onNewConnection(KRdp::RdpConnection*)::<lambda()> >::call<QtPrivate::List<>, void>(struct {...} &, void *, void **) (f=..., arg=0x7fffffffbdf8) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:362 #6 0x0000555555562f59 in QtPrivate::QCallableObject<SessionController::onNewConnection(KRdp::RdpConnection*)::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x5555559a5130, r=0x7fffffffd640, a=0x7fffffffbdf8, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:572 that = 0x5555559a5130 #7 0x00007ffff5bb1a49 in QtPrivate::QSlotObjectBase::call (this=0x5555559a5130, r=0x7fffffffd640, a=0x7fffffffbdf8, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:486 #8 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4115 obj = {m_slotObject = std::unique_ptr<QtPrivate::QSlotObjectBase> = {get() = 0x5555559a5130}} receiver = 0x7fffffffd640 td = <optimized out> receiverInSameThread = <optimized out> senderData = {previous = 0x7fffffffca90, receiver = 0x7fffffffd640, sender = 0x7fffd8010680, signal = 3} c = 0x55555599ffb0 connections = {d = <optimized out>} list = <optimized out> inSenderThread = <optimized out> highestConnectionId = <optimized out> signalVector = 0x5555559c11c0 currentThreadId = <optimized out> sp = <optimized out> signal_spy_set = 0x0 empty_argv = {0x0} senderDeleted = false #9 0x000055555556247b in SessionWrapper::sessionError (this=0x7fffd8010680) at /home/jan/.cache/yay/krdp-git/src/krdp/build/server/krdpserver_autogen/include/SessionController.moc:167 #10 0x000055555556869a in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SessionWrapper::*)()>::call(void (SessionWrapper::*)(), SessionWrapper*, void**)::{lambda()#1}::operator()() const (__closure=0x7fffffffbed0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:152 #11 0x0000555555568f52 in QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SessionWrapper::*)()>::call(void (SessionWrapper::*)(), SessionWrapper*, void**)::{lambda()#1}>(void**, QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SessionWrapper::*)()>::call(void (SessionWrapper::*)(), SessionWrapper*, void**)::{lambda()#1}&&) (args=0x7fffffffc008, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65 #12 0x000055555556870c in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (SessionWrapper::*)()>::call(void (SessionWrapper::*)(), SessionWrapper*, void**) (f=(void (SessionWrapper::*)(SessionWrapper * const)) 0x555555562452 <SessionWrapper::sessionError()>, o=0x7fffd8010680, arg=0x7fffffffc008) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:151 #13 0x0000555555567d98 in QtPrivate::FunctionPointer<void (SessionWrapper::*)()>::call<QtPrivate::List<>, void>(void (SessionWrapper::*)(), SessionWrapper*, void**) (f=(void (SessionWrapper::*)(SessionWrapper * const)) 0x555555562452 <SessionWrapper::sessionError()>, o=0x7fffd8010680, arg=0x7fffffffc008) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:199 #14 0x0000555555567199 in QtPrivate::QCallableObject<void (SessionWrapper::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x5555559a3800, r=0x7fffd8010680, a=0x7fffffffc008, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:570 that = 0x5555559a3800 #15 0x00007ffff5bb1a49 in QtPrivate::QSlotObjectBase::call (this=0x5555559a3800, r=0x7fffd8010680, a=0x7fffffffc008, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:486 #16 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4115 obj = {m_slotObject = std::unique_ptr<QtPrivate::QSlotObjectBase> = {get() = 0x5555559a3800}} receiver = 0x7fffd8010680 td = <optimized out> receiverInSameThread = <optimized out> senderData = {previous = 0x0, receiver = 0x7fffd8010680, sender = 0x5555559bc140, signal = 4} c = 0x55555599c830 connections = {d = <optimized out>} list = <optimized out> inSenderThread = <optimized out> highestConnectionId = <optimized out> signalVector = 0x7fffd8001c10 currentThreadId = <optimized out> sp = <optimized out> signal_spy_set = 0x0 empty_argv = {0x0} senderDeleted = false #17 0x00007ffff7e71f71 in KRdp::AbstractSession::error (this=0x5555559bc140) at /home/jan/.cache/yay/krdp-git/src/krdp/build/src/KRdp_autogen/EWIEGA46WW/moc_AbstractSession.cpp:191 #18 0x00007ffff7ea1a68 in KRdp::PortalSession::onCreateSession (this=0x5555559bc140, code=4294967295, result=...) at /home/jan/.cache/yay/krdp-git/src/krdp/src/PortalSession.cpp:186 PermissionsPersistUntilExplicitlyRevoked = 2 parameters = {d = {d = 0x12a}} restorationGroup = {<KConfigBase> = {_vptr.KConfigBase = 0x7fffffffc170}, d = {d = 0x7fffffffc1b0}} restoreToken = {d = {d = 0x7fffffffc170, ptr = 0x7fffffffc1b0 u"抠翿", size = 140737488339368}, static _empty = 0 u'\000'} #19 0x00007ffff7eb39b5 in std::__invoke_impl<void, void (KRdp::PortalSession::*&)(unsigned int, QMap<QString, QVariant> const&), KRdp::PortalSession*&, unsigned int, QMap<QString, QVariant> const&> (__f=@0x55555599d050: (void (KRdp::PortalSession::*)(KRdp::PortalSession * const, unsigned int, const QMap<QString, QVariant> &)) 0x7ffff7ea194a <KRdp::PortalSession::onCreateSession(unsigned int, QMap<QString, QVariant> const&)>, __t=@0x55555599d060: 0x5555559bc140) at /usr/include/c++/14.2.1/bits/invoke.h:74 #20 0x00007ffff7eb2b5b in std::__invoke<void (KRdp::PortalSession::*&)(unsigned int, QMap<QString, QVariant> const&), KRdp::PortalSession*&, unsigned int, QMap<QString, QVariant> const&> (__fn=@0x55555599d050: (void (KRdp::PortalSession::*)(KRdp::PortalSession * const, unsigned int, const QMap<QString, QVariant> &)) 0x7ffff7ea194a <KRdp::PortalSession::onCreateSession(unsigned int, QMap<QString, QVariant> const&)>) at /usr/include/c++/14.2.1/bits/invoke.h:96 #21 0x00007ffff7eb20c5 in std::_Bind<void (KRdp::PortalSession::*(KRdp::PortalSession*, std::_Placeholder<1>, std::_Placeholder<2>))(unsigned int, QMap<QString, QVariant> const&)>::__call<void, unsigned int&&, QMap<QString, QVariant> const&, 0ul, 1ul, 2ul>(std::tuple<unsigned int&&, QMap<QString, QVariant> const&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (this=0x55555599d050, __args=...) at /usr/include/c++/14.2.1/functional:513 #22 0x00007ffff7eb1407 in std::_Bind<void (KRdp::PortalSession::*(KRdp::PortalSession*, std::_Placeholder<1>, std::_Placeholder<2>))(unsigned int, QMap<QString, QVariant> const&)>::operator()<unsigned int, QMap<QString, QVariant> const&, void>(unsigned int&&, QMap<QString, QVariant> const&) (this=0x55555599d050) at /usr/include/c++/14.2.1/functional:598 #23 0x00007ffff7eb0303 in std::__invoke_impl<void, std::_Bind<void (KRdp::PortalSession::*(KRdp::PortalSession*, std::_Placeholder<1>, std::_Placeholder<2>))(unsigned int, QMap<QString, QVariant> const&)>&, unsigned int, QMap<QString, QVariant> const&>(std::__invoke_other, std::_Bind<void (KRdp::PortalSession::*(KRdp::PortalSession*, std::_Placeholder<1>, std::_Placeholder<2>))(unsigned int, QMap<QString, QVariant> const&)>&, unsigned int&&, QMap<QString, QVariant> const&) (__f=...) at /usr/include/c++/14.2.1/bits/invoke.h:61 #24 0x00007ffff7eaf06f in std::__invoke_r<void, std::_Bind<void (KRdp::PortalSession::*(KRdp::PortalSession*, std::_Placeholder<1>, std::_Placeholder<2>))(unsigned int, QMap<QString, QVariant> const&)>&, unsigned int, QMap<QString, QVariant> const&>(std::_Bind<void (KRdp::PortalSession::*(KRdp::PortalSession*, std::_Placeholder<1>, std::_Placeholder<2>))(unsigned int, QMap<QString, QVariant> const&)>&, unsigned int&&, QMap<QString, QVariant> const&) (__fn=...) at /usr/include/c++/14.2.1/bits/invoke.h:111 #25 0x00007ffff7ead3b2 in std::_Function_handler<void (unsigned int, QMap<QString, QVariant> const&), std::_Bind<void (KRdp::PortalSession::*(KRdp::PortalSession*, std::_Placeholder<1>, std::_Placeholder<2>))(unsigned int, QMap<QString, QVariant> const&)> >::_M_invoke(std::_Any_data const&, unsigned int&&, QMap<QString, QVariant> const&) (__functor=..., __args#0=@0x7fffffffc514: 4294967295, __args#1=...) at /usr/include/c++/14.2.1/bits/std_function.h:290 #26 0x00007ffff7ea7d36 in std::function<void(unsigned int, QMap<QString, QVariant> const&)>::operator() (this=0x555555975160, __args#0=4294967295, __args#1=...) at /usr/include/c++/14.2.1/bits/std_function.h:591 #27 0x00007ffff7ea065a in KRdp::PortalRequest::onStarted (this=0x555555975140, watcher=0x55555599d000) at /home/jan/.cache/yay/krdp-git/src/krdp/src/PortalSession.cpp:57 reply = {<QDBusPendingReplyBase> = {<QDBusPendingCall> = {d = {d = 0x5555558b1440}}, <No data fields>}, <No data fields>} -- You are receiving this mail because: You are watching all bug changes.