Bug 501049 - `krdpserver` crashes on Fedora KDE 41 (wayland) when an incoming connection established
Summary: `krdpserver` crashes on Fedora KDE 41 (wayland) when an incoming connection e...
Status: REPORTED
Alias: None
Product: KRdp
Classification: Plasma
Component: general (show other bugs)
Version: 6.3.2
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: ---
Assignee: Unassigned bugs mailing-list
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2025-03-04 11:16 UTC by Kostiantyn
Modified: 2025-03-04 11:55 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report: https://crash-reports.kde.org/organizations/kde/issues/121238


Attachments
New crash information added by DrKonqi (67.63 KB, text/plain)
2025-03-04 11:16 UTC, Kostiantyn
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kostiantyn 2025-03-04 11:16:45 UTC
Application: krdpserver (6.3.2)

ApplicationNotResponding [ANR]: false
Qt Version: 6.8.2
Frameworks Version: 6.11.0
Operating System: Linux 6.13.5-200.fc41.x86_64 x86_64
Windowing System: Wayland
Distribution: "Fedora Linux 41 (KDE Plasma)"
DrKonqi: 6.3.2 [CoredumpBackend]

-- Information about the crash:
I've configured the built-in RDP server, shipped with Fedora KDE 41, with 1 user and all the default settings. 
Also, I created the ~/startwm.sh with the `dbus-launch --exit-with-session /usr/bin/startplasma-wayland` inside (but it seems to be ignored).
Installed `qt5-qtwayland-devel`.
Set SELinux permissive mode.
Restarted the system and enabled the RDP server.
Finally, I tried to connect to the system from a remote client and see that the RDP server crashes immediatelly when the connection established.
Also, when I run the `krdpserver -h`, I see the next lines after the help text:
QThreadStorage: Thread 0x56488442af20 exited after QThreadStorage 8 destroyed
QThreadStorage: Thread 0x56488442af20 exited after QThreadStorage 3 destroyed
QThreadStorage: Thread 0x56488442af20 exited after QThreadStorage 2 destroyed

When I initially just enabled the RDP server with the user configured and tried to connect to it, I saw an immediate disconnect. That is why I did all the additional steps above. But it looks like the RDP server doesn't support Wayland at all and cannot run on it. 

It would be great if you can fix the RDP server integration with Wayland and work together with Fedora team to make it work out-of-the-box on their distro.

Thanks in advance!

The crash can be reproduced every time.

-- Backtrace (Reduced):
#5  0x00007f16f4ae1c51 in KRdp::RdpConnection::close (this=<optimized out>, reason=<optimized out>) at /usr/src/debug/krdp-6.3.2-1.fc41.x86_64/src/RdpConnection.cpp:223
#6  0x00007f16f2d5a26e in QtPrivate::QSlotObjectBase::call (this=0x5614ab757e80, r=<optimized out>, a=0x7ffebeed4588) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobjectdefs_impl.h:486
#7  doActivate<false> (sender=0x7f16d0011130, signal_index=3, argv=0x7ffebeed4588) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobject.cpp:4115
#8  0x00007f16f2d5a26e in QtPrivate::QSlotObjectBase::call (this=0x5614ab7f3ef0, r=<optimized out>, a=0x7ffebeed4678) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobjectdefs_impl.h:486
#9  doActivate<false> (sender=0x5614ab42f5c0, signal_index=4, argv=0x7ffebeed4678) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobject.cpp:4115


Reported using DrKonqi
This report was filed against 'kde' because the product 'krdpserver' could not be located in Bugzilla. Add it to drkonqi's mappings file!
Comment 1 Kostiantyn 2025-03-04 11:16:46 UTC
Created attachment 179108 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 Nicolas Fella 2025-03-04 11:53:55 UTC
#5  0x00007f16f4ae1c51 in KRdp::RdpConnection::close (this=<optimized out>, reason=<optimized out>) at /usr/src/debug/krdp-6.3.2-1.fc41.x86_64/src/RdpConnection.cpp:223
#6  0x00007f16f2d5a26e in QtPrivate::QSlotObjectBase::call (this=0x5614ab757e80, r=<optimized out>, a=0x7ffebeed4588) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobjectdefs_impl.h:486
#7  doActivate<false> (sender=0x7f16d0011130, signal_index=3, argv=0x7ffebeed4588) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobject.cpp:4115
#8  0x00007f16f2d5a26e in QtPrivate::QSlotObjectBase::call (this=0x5614ab7f3ef0, r=<optimized out>, a=0x7ffebeed4678) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobjectdefs_impl.h:486
#9  doActivate<false> (sender=0x5614ab42f5c0, signal_index=4, argv=0x7ffebeed4678) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobject.cpp:4115
#10 0x00007f16f4ae9a97 in std::function<void(unsigned int, QMap<QString, QVariant> const&)>::operator() (this=0x5614ab8893e0, __args#0=4294967295, __args#1=...) at /usr/include/c++/14/bits/std_function.h:591
#11 KRdp::PortalRequest::onStarted (this=this@entry=0x5614ab8893c0, watcher=watcher@entry=0x5614ab7f3bd0) at /usr/src/debug/krdp-6.3.2-1.fc41.x86_64/src/PortalSession.cpp:57
#12 0x00007f16f4aeba0b in KRdp::PortalRequest::PortalRequest<KRdp::PortalSession, void (KRdp::PortalSession::*)(unsigned int, QMap<QString, QVariant> const&)> (this=0x5614ab8893c0, call=..., context=0x5614ab42f5c0, callback=(void (KRdp::PortalSession::*)(class KRdp::PortalSession * const, unsigned int, const class QMap<QString, QVariant> &)) 0x7f16f4aec0a0 <KRdp::PortalSession::onCreateSession(unsigned int, QMap<QString, QVariant> const&)>) at /usr/src/debug/krdp-6.3.2-1.fc41.x86_64/src/PortalSession_p.h:47
#13 KRdp::PortalSession::start (this=0x5614ab42f5c0) at /usr/src/debug/krdp-6.3.2-1.fc41.x86_64/src/PortalSession.cpp:124
#14 0x000056148b2293a0 in SessionController::onNewConnection (this=0x7ffebeed55c0, newConnection=0x5614ab5dfa60) at /usr/src/debug/krdp-6.3.2-1.fc41.x86_64/server/SessionController.cpp:158
#15 0x00007f16f2d5a26e in QtPrivate::QSlotObjectBase::call (this=0x5614ab7af530, r=<optimized out>, a=0x7ffebeed4ad0) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobjectdefs_impl.h:486
#16 doActivate<false> (sender=0x7ffebeed5530, signal_index=6, argv=0x7ffebeed4ad0) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobject.cpp:4115
#17 0x00007f16f2d50867 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7f16f4b18f20, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffebeed4ad0) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qobject.cpp:4175
#18 0x00007f16f4adc481 in KRdp::Server::newConnectionCreated (this=<optimized out>, _t1=<optimized out>) at /usr/src/debug/krdp-6.3.2-1.fc41.x86_64/redhat-linux-build/src/KRdp_autogen/include/moc_Server.cpp:144
#19 0x00007f16f468f478 in QTcpServerPrivate::readNotification (this=0x5614ab439880) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/network/socket/qtcpserver.cpp:198
#20 0x00007f16f468d9d9 in QReadNotifier::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/network/socket/qnativesocketengine.cpp:1238
#21 0x00007f16f3e3d9b8 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5614ab7f9e60, e=0x7ffebeed4c00) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/widgets/kernel/qapplication.cpp:3296
#22 0x00007f16f2cf3590 in QCoreApplication::notifyInternal2 (receiver=0x5614ab7f9e60, event=0x7ffebeed4c00) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qcoreapplication.cpp:1172
#23 0x00007f16f2cf37ed in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qcoreapplication.cpp:1612
#24 0x00007f16f2ff052f in socketNotifierSourceDispatch (source=0x5614ab48b990) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:77
#25 0x00007f16f216a28c in g_main_dispatch (context=0x7f16d0000f00) at ../glib/gmain.c:3357
#26 g_main_context_dispatch_unlocked (context=0x7f16d0000f00) at ../glib/gmain.c:4208
#27 0x00007f16f21ca7b8 in g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7f16d0000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4273
#28 0x00007f16f216b783 in g_main_context_iteration (context=0x7f16d0000f00, may_block=1) at ../glib/gmain.c:4338
#29 0x00007f16f2fef2b3 in QEventDispatcherGlib::processEvents (this=0x5614ab3d2c80, flags=...) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#30 0x00007f16f2d00993 in QEventLoop::exec (this=this@entry=0x7ffebeed4ea0, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/global/qflags.h:34
#31 0x00007f16f2cfbf6e in QCoreApplication::exec () at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/corelib/global/qflags.h:74
#32 0x00007f16f34d7d3d in QGuiApplication::exec () at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/gui/kernel/qguiapplication.cpp:1975
#33 0x00007f16f3e3d929 in QApplication::exec () at /usr/src/debug/qt6-qtbase-6.8.2-3.fc41.x86_64/src/widgets/kernel/qapplication.cpp:2564
#34 0x000056148b227407 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/krdp-6.3.2-1.fc41.x86_64/server/main.cpp:138