Bug 483355

Summary: krfb crashes when using yakuake
Product: [Applications] krfb Reporter: Jeremy Whiting <jpwhiting>
Component: generalAssignee: George Goldberg <grundleborg>
Status: RESOLVED DUPLICATE    
Severity: crash CC: nicolas.fella
Priority: NOR Keywords: qt6
Version First Reported In: 24.02.0   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Jeremy Whiting 2024-03-12 16:11:03 UTC
SUMMARY
***
NOTE: If you are reporting a crash, please try to attach a backtrace with debug symbols.
See https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports
***


STEPS TO REPRODUCE
1. Run krfb --nodialog
2. Launch or open yakuake
3. Type anything in the yakuake window
4. Watch as the vnc connection dies

OBSERVED RESULT
Segfault of krfb


EXPECTED RESULT
Typing goes to yakuake and krfb remains running

SOFTWARE/OS VERSIONS
Linux/KDE Plasma:  24.02.0
(available in About System)
KDE Plasma Version: 24.02.0
KDE Frameworks Version: 6.0.0-4
Qt Version: 6.6.2-4

ADDITIONAL INFORMATION
Here's the backtrace I get on archlinux when running with gdb with debuginfod set up. There are also a couple of errors at the top about issues with the notifications. Not sure if they are related to the crash

kf.notifications: No event config could be found for event id "NewConnectionAutoAccepted" under notifyrc file for app "krfb"
kf.notifications: No event config could be found for event id "UserAcceptsConnection" under notifyrc file for app "krfb"
/usr/include/c++/13.2.1/optional:477: constexpr _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() [with _Tp = PipeWireCursor; _Dp = std::_Optional_base<PipeWireCursor, false, false>]: Assertion 'this->_M_is_engaged()' failed.

Thread 1 "krfb" received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
Downloading source file /usr/src/debug/glibc/glibc/nptl/pthread_kill.c
44            return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;                                                                            
(gdb) bt
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007ffff7568393 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2  0x00007ffff75176c8 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007ffff74ff4b8 in __GI_abort () at abort.c:79
#4  0x00007ffff5add3b2 in std::__glibcxx_assert_fail
    (file=file@entry=0x7fffeb3f8328 "/usr/include/c++/13.2.1/optional", line=line@entry=477, function=function@entry=0x7fffeb3f8290 "constexpr _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() [with _Tp = PipeWireCursor; _Dp = std::_Optional_base<PipeWireCursor, false, false>]", condition=condition@entry=0x7fffeb3f800e "this->_M_is_engaged()") at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/debug.cc:61
#5  0x00007fffeb3ece7c in std::_Optional_base_impl<PipeWireCursor, std::_Optional_base<PipeWireCursor, false, false> >::_M_get (this=<optimized out>)
    at /usr/include/c++/13.2.1/optional:477
#6  std::_Optional_base_impl<PipeWireCursor, std::_Optional_base<PipeWireCursor, false, false> >::_M_get (this=<optimized out>)
    at /usr/include/c++/13.2.1/optional:475
#7  std::optional<PipeWireCursor>::operator-> (this=<optimized out>) at /usr/include/c++/13.2.1/optional:966
#8  PWFrameBuffer::cursorPosition (this=<optimized out>) at /usr/src/debug/krfb/krfb-24.02.0/framebuffers/pipewire/pw_framebuffer.cpp:514
#9  0x0000555555573f29 in RfbServerManager::updateScreens
    (this=0x55555558b8d0 <_ZZN13QGlobalStaticIN14QtGlobalStatic6HolderIN12_GLOBAL__N_116Q_QGS_s_instanceEEEE8instanceEvE6holder.lto_priv.0>)
    at /usr/src/debug/krfb/krfb-24.02.0/krfb/rfbservermanager.cpp:156
#10 0x00007ffff5f90ca9 in QtPrivate::QSlotObjectBase::call
    (a=0x7fffffffd8c0, r=0x55555558b8d0 <_ZZN13QGlobalStaticIN14QtGlobalStatic6HolderIN12_GLOBAL__N_116Q_QGS_s_instanceEEEE8instanceEvE6holder.lto_priv.0>, this=0x5555557a5ba0, this=<optimized out>, r=<optimized out>, a=<optimized out>)
    at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qobjectdefs_impl.h:433
#11 doActivate<false> (sender=0x5555557b7260, signal_index=3, argv=0x7fffffffd8c0)
    at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qobject.cpp:4039
#12 0x00007ffff5f98d64 in QTimer::timeout (_t1=..., this=0x5555557b7260) at /usr/src/debug/qt6-base/build/src/corelib/Core_autogen/include/moc_qtimer.cpp:272
#13 QTimer::timerEvent (e=<optimized out>, this=0x5555557b7260) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qtimer.cpp:252
#14 QTimer::timerEvent (this=0x5555557b7260, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qtimer.cpp:246
#15 0x00007ffff5f7c236 in QObject::event (this=0x5555557b7260, e=0x7fffffffda60)
    at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qobject.cpp:1414
#16 0x00007ffff6ef438b in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5555557b7260, e=0x7fffffffda60)
    at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/widgets/kernel/qapplication.cpp:3296
#17 0x00007ffff5f39818 in QCoreApplication::notifyInternal2 (receiver=0x5555557b7260, event=0x7fffffffda60)
    at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qcoreapplication.cpp:1121
#18 0x00007ffff609efa6 in QCoreApplication::sendEvent (event=0x7fffffffda60, receiver=<optimized out>)
    at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qcoreapplication.cpp:1539
#19 QTimerInfoList::activateTimers (this=0x555555621420) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qtimerinfo_unix.cpp:507
#20 0x00007ffff61756dc in timerSourceDispatch (source=<optimized out>)
    at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qeventdispatcher_glib.cpp:149
#21 0x00007ffff4bd1f69 in g_main_dispatch (context=0x7fffec000ef0) at ../glib/glib/gmain.c:3476
#22 0x00007ffff4c303a7 in g_main_context_dispatch_unlocked (context=0x7fffec000ef0) at ../glib/glib/gmain.c:4284
#23 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7fffec000ef0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at ../glib/glib/gmain.c:4349
#24 0x00007ffff4bd0162 in g_main_context_iteration (context=0x7fffec000ef0, may_block=1) at ../glib/glib/gmain.c:4414
#25 0x00007ffff61739c4 in QEventDispatcherGlib::processEvents (this=0x5555555be730, flags=...)
    at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qeventdispatcher_glib.cpp:393
#26 0x00007ffff5f43d6e in QEventLoop::processEvents (flags=..., this=0x7fffffffdd30)
    at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qeventloop.cpp:100
#27 QEventLoop::exec (this=0x7fffffffdd30, flags=...) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qeventloop.cpp:182
--Type <RET> for more, q to quit, c to continue without paging--
#28 0x00007ffff5f3c2b8 in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/global/qflags.h:74
#29 0x00007ffff6ef0f0a in QApplication::exec () at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/widgets/kernel/qapplication.cpp:2574
#30 0x00005555555656c3 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/krfb/krfb-24.02.0/krfb/main.cpp:183


Actually this backtrace I get when yakuake is open and visible and I just connect over vnc. But I also get a crash when typing in yakuake. This one above is preventing me from getting to that point currently though.
Comment 1 Nicolas Fella 2024-03-12 18:36:57 UTC

*** This bug has been marked as a duplicate of bug 472453 ***