https://bugs.kde.org/show_bug.cgi?id=472453
Bug ID: 472453 Summary: krfb-virtualmonitor asserts when a client connects Classification: Applications Product: krfb Version: 23.04.3 Platform: Archlinux OS: Linux Status: REPORTED Severity: crash Priority: NOR Component: general Assignee: grundleb...@googlemail.com Reporter: santiagocezar2...@gmail.com Target Milestone: --- SUMMARY krfb-virtualmonitor crashes right after a client connects, no image is send to the client. STEPS TO REPRODUCE 1. run `bin/krfb-virtualmonitor --name "banana" --resolution 1200x400 --password 1111 --port 5900` 2. connect from another device (using bVNC on Android in this case) 3. boom OBSERVED RESULT the program crashes when a new client connects EXPECTED RESULT the program should make a virtual monitor and display it on the client SOFTWARE/OS VERSIONS Linux: 6.4.3-arch1-2 KDE Plasma Version: 5.27.6 KDE Frameworks Version: 5.108.0 Qt Version: 5.15.10 ADDITIONAL INFORMATION Graphics: Mesa Intel® UHD Graphics 620 Commit: ce562e82bb6524b558ca9f41ac81758d6c3d34e4 terminal output: ``` new client request /usr/include/c++/13.1.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. fish: Job 1, 'bin/krfb-virtualmonitor --name …' terminated by signal SIGABRT (Abort) ``` ``` #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007ffff5e9f2d3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78 #2 0x00007ffff5e4fa08 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007ffff5e38538 in __GI_abort () at abort.c:79 #4 0x00007ffff60dd3b2 in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) (file=file@entry=0x7fffe805b2e0 "/usr/include/c++/13.1.1/optional", line=line@entry=477, function=function@entry=0x7fffe805b248 "constexpr _Tp& std::_Optional_base_impl<_Tp, _Dp>::_M_get() [with _Tp = PipeWireCursor; _Dp = std::_Optional_base<PipeWireCursor, false, false>]", condition=condition@entry=0x7fffe805b000 "this->_M_is_engaged()") at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/debug.cc:61 #5 0x00007fffe804fa5c in std::_Optional_base_impl<PipeWireCursor, std::_Optional_base<PipeWireCursor, false, false> >::_M_get() (this=<optimized out>) at /usr/include/c++/13.1.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.1.1/optional:475 #7 std::optional<PipeWireCursor>::operator->() (this=<optimized out>) at /usr/include/c++/13.1.1/optional:966 #8 PWFrameBuffer::cursorPosition() (this=<optimized out>) at /usr/src/debug/krfb/krfb-23.04.3/framebuffers/pipewire/pw_framebuffer.cpp:546 #9 0x0000555555568abd in RfbServerManager::updateScreens() (this=0x5555555846b0 <(anonymous namespace)::Q_QGS_s_instance::innerFunction()::holder>) at /home/santi/Cositas/Contrib/krfb/krfb/rfbservermanager.cpp:148 #10 0x000055555556b8a9 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (RfbServerManager::*)()>::call(void (RfbServerManager::*)(), RfbServerManager*, void**) (f=(void (RfbServerManager::*)(class RfbServerManager * const)) 0x555555568a5a <RfbServerManager::updateScreens()>, o=0x5555555846b0 <(anonymous namespace)::Q_QGS_s_instance::innerFunction()::holder>, arg=0x7fffffffd440) at /usr/include/qt/QtCore/qobjectdefs_impl.h:152 #11 0x000055555556b51b in QtPrivate::FunctionPointer<void (RfbServerManager::*)()>::call<QtPrivate::List<>, void>(void (RfbServerManager::*)(), RfbServerManager*, void**) (f=(void (RfbServerManager::*)(class RfbServerManager * const)) 0x555555568a5a <RfbServerManager::updateScreens()>, o=0x5555555846b0 <(anonymous namespace)::Q_QGS_s_instance::innerFunction()::holder>, arg=0x7fffffffd440) at /usr/include/qt/QtCore/qobjectdefs_impl.h:185 #12 0x000055555556ae67 in QtPrivate::QSlotObject<void (RfbServerManager::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x55555572b810, r=0x5555555846b0 <(anonymous namespace)::Q_QGS_s_instance::innerFunction()::holder>, a=0x7fffffffd440, ret=0x0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:418 #13 0x00007ffff66d1237 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fffffffd440, r=<optimized out>, this=0x55555572b810, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #14 doActivate<false>(QObject*, int, void**) (sender=0x5555556daee0, signal_index=3, argv=0x7fffffffd440) at kernel/qobject.cpp:3925 #15 0x00007ffff66d2d6f in QTimer::timeout(QTimer::QPrivateSignal) (this=<optimized out>, _t1=...) at .moc/moc_qtimer.cpp:205 #16 0x00007ffff66c3cee in QObject::event(QEvent*) (this=0x5555556daee0, e=0x7fffffffd5b0) at kernel/qobject.cpp:1324 #17 0x00007ffff737893f in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x5555556daee0, e=0x7fffffffd5b0) at kernel/qapplication.cpp:3640 #18 0x00007ffff669c2f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x5555556daee0, event=0x7fffffffd5b0) at kernel/qcoreapplication.cpp:1064 #19 0x00007ffff66ea9bb in QTimerInfoList::activateTimers() (this=0x555555615020) at kernel/qtimerinfo_unix.cpp:643 #20 0x00007ffff66eaf9a in timerSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:183 #21 0x00007ffff4b0fa31 in g_main_dispatch (context=0x7fffec000ee0) at ../glib/glib/gmain.c:3460 #22 g_main_context_dispatch (context=0x7fffec000ee0) at ../glib/glib/gmain.c:4200 #23 0x00007ffff4b6ccc9 in g_main_context_iterate.isra.0 (context=context@entry=0x7fffec000ee0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4276 #24 0x00007ffff4b0d0e2 in g_main_context_iteration (context=0x7fffec000ee0, may_block=1) at ../glib/glib/gmain.c:4343 #25 0x00007ffff66eb15c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x555555615560, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #26 0x00007ffff669b004 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd860, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69 #27 0x00007ffff669c4a3 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121 #28 0x00005555555609fc in main(int, char**) (argc=9, argv=0x7fffffffdb58) at /home/santi/Cositas/Contrib/krfb/krfb/main-virtualmonitor.cpp:174 ``` an observation: it doesn't seem to be creating the virtual monitor before crashing, but the version from the arch repos does (which also crashes, for a different reason) -- You are receiving this mail because: You are watching all bug changes.