https://bugs.kde.org/show_bug.cgi?id=479558

            Bug ID: 479558
           Summary: krfb-virtualmonitor causes kwin_wayland to crash
    Classification: Plasma
           Product: kwin
           Version: git master
          Platform: Compiled Sources
                OS: Linux
            Status: REPORTED
          Severity: crash
          Priority: NOR
         Component: wayland-generic
          Assignee: kwin-bugs-n...@kde.org
          Reporter: k...@hexchain.org
  Target Milestone: ---

SUMMARY
Launching krfb-virtualmonitor causes kwin_wayland to crash. This is similar to
475296 but the backtrace looks very different, hence opening another bug.

STEPS TO REPRODUCE
Launch krfb-virtualmonitor, e.g.: krfb-virtualmonitor --name test --scale 1
--port 9876 --password 12345678 --resolution 1920x1080

OBSERVED RESULT
krfb-virtualmonitor crashes first and takes kwin_wayland along with it.

Backtrace for KWin:

#0  KWin::ClientConnection::client() const (this=0x563b91c21d00) at
/home/hexchain/kde/src/kwin/src/wayland/clientconnection.cpp:119
#1  0x00007f96a8722087 in
KWin::Display::getConnection(wl_client*)::$_0::operator()(KWin::ClientConnection*)
const (c=0x563b91c21d00, this=<optimized out>) at
/home/hexchain/kde/src/kwin/src/wayland/display.cpp:203
#2 
__gnu_cxx::__ops::_Iter_pred<KWin::Display::getConnection(wl_client*)::$_0>::operator()<QList<KWin::ClientConnection*>::const_iterator>(QList<KWin::ClientConnection*>::const_iterator)
(__it=..., this=<optimized out>) at
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/predefined_ops.h:318
#3  std::__find_if<QList<KWin::ClientConnection*>::const_iterator,
__gnu_cxx::__ops::_Iter_pred<KWin::Display::getConnection(wl_client*)::$_0>
>(QList<KWin::ClientConnection*>::const_iterator,
QList<KWin::ClientConnection*>::const_iterator,
__gnu_cxx::__ops::_Iter_pred<KWin::Display::getConnection(wl_client*)::$_0>,
std::random_access_iterator_tag)
    (__first=..., __last=..., __pred=...) at
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/stl_algobase.h:2102
#4  std::__find_if<QList<KWin::ClientConnection*>::const_iterator,
__gnu_cxx::__ops::_Iter_pred<KWin::Display::getConnection(wl_client*)::$_0>
>(QList<KWin::ClientConnection*>::const_iterator,
QList<KWin::ClientConnection*>::const_iterator,
__gnu_cxx::__ops::_Iter_pred<KWin::Display::getConnection(wl_client*)::$_0>)
(__first=..., __last=..., __pred=...)
    at
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/stl_algobase.h:2117
#5  std::find_if<QList<KWin::ClientConnection*>::const_iterator,
KWin::Display::getConnection(wl_client*)::$_0>(QList<KWin::ClientConnection*>::const_iterator,
QList<KWin::ClientConnection*>::const_iterator,
KWin::Display::getConnection(wl_client*)::$_0) (__first=..., __last=...,
__pred=...)
    at
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/stl_algo.h:3923
#6  KWin::Display::getConnection(wl_client*) (this=0x563b90632510,
client=0x563b917ac260) at
/home/hexchain/kde/src/kwin/src/wayland/display.cpp:202
#7  0x00007f96a872aafd in
KWin::FilteredDisplayPrivate::globalFilterCallback(wl_client const*, wl_global
const*, void*) (client=0x563b917ac260, global=0x563b9063d4d0,
data=0x563b90632610) at
/home/hexchain/kde/src/kwin/src/wayland/filtered_display.cpp:24
#8  0x00007f96a756486c in wl_global_is_visible (global=0x563b9063d4d0,
client=0x563b917ac260) at ../../src/wayland/src/wayland-server.c:952
#9  display_get_registry (client=0x563b917ac260, resource=<optimized out>,
id=<optimized out>) at ../../src/wayland/src/wayland-server.c:1046
#10 0x00007f96a3f534f6 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#11 0x00007f96a3f4ff5e in ffi_call_int (cif=cif@entry=0x7ffd40a7c860,
fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>,
closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#12 0x00007f96a3f52b73 in ffi_call (cif=cif@entry=0x7ffd40a7c860, fn=<optimized
out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffd40a7c930) at
../src/x86/ffi64.c:710
#13 0x00007f96a7568923 in wl_closure_invoke (closure=0x563b91d24dd0,
flags=<optimized out>, target=<optimized out>, opcode=1, data=<optimized out>)
at ../../src/wayland/src/connection.c:1031
#14 0x00007f96a75636bc in wl_client_connection_data (fd=<optimized out>,
mask=<optimized out>, data=0x563b917ac260) at
../../src/wayland/src/wayland-server.c:438
#15 0x00007f96a7566732 in wl_event_loop_dispatch (loop=0x563b9066dda0,
timeout=<optimized out>) at ../../src/wayland/src/event-loop.c:1104
#16 0x00007f96a8721b19 in KWin::Display::dispatchEvents() (this=<optimized
out>) at /home/hexchain/kde/src/kwin/src/wayland/display.cpp:117
#17 0x00007f96a57beaa9 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
(a=0x7ffd40a7cf00, r=0x563b90632510, this=0x563b90c85280, this=<optimized out>,
r=<optimized out>, a=<optimized out>) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qobjectdefs_impl.h:469
#18 doActivate<false>(QObject*, int, void**) (sender=0x563b90ad18c0,
signal_index=3, argv=0x7ffd40a7cf00) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qobject.cpp:4044
#19 0x00007f96a57c7a2a in QSocketNotifier::activated(QSocketDescriptor,
QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) (_t3=...,
_t2=<optimized out>, _t1=..., this=0x563b90ad18c0) at
/usr/src/debug/qt6-base/build/src/corelib/Core_autogen/include/moc_qsocketnotifier.cpp:193
#20 QSocketNotifier::event(QEvent*) (this=0x563b90ad18c0, e=0x7ffd40a7d010) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qsocketnotifier.cpp:327
#21 0x00007f96a697bf4b in QApplicationPrivate::notify_helper(QObject*, QEvent*)
(this=<optimized out>, receiver=0x563b90ad18c0, e=0x7ffd40a7d010) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/widgets/kernel/qapplication.cpp:3290
#22 0x00007f96a5765488 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
(receiver=0x563b90ad18c0, event=0x7ffd40a7d010) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qcoreapplication.cpp:1134
#23 0x00007f96a58d3439 in QCoreApplication::sendEvent(QObject*, QEvent*)
(event=0x7ffd40a7d010, receiver=<optimized out>) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qcoreapplication.cpp:1575
#24 QEventDispatcherUNIXPrivate::activateSocketNotifiers()
(this=0x563b90583050) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qeventdispatcher_unix.cpp:251
#25 0x00007f96a58d938b in
QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
(this=<optimized out>, flags=..., flags@entry=...) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qeventdispatcher_unix.cpp:467
#26 0x00007f96a63f2ce2 in
QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
(this=<optimized out>, flags=...) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/gui/platform/unix/qunixeventdispatcher.cpp:27
#27 0x00007f96a576d67e in
QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=...,
this=0x7ffd40a7d1e0) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qeventloop.cpp:100
#28 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
(this=0x7ffd40a7d1e0, flags=...) at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qeventloop.cpp:182
#29 0x00007f96a57690b8 in QCoreApplication::exec() () at
/usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/global/qflags.h:74
#30 0x0000563b8f9016e5 in main(int, char**) (argc=<optimized out>,
argv=<optimized out>) at /home/hexchain/kde/src/kwin/src/main_wayland.cpp:609

EXPECTED RESULT
kwin_wayland should not crash (IMHO even when the client is misbehaving).

SOFTWARE/OS VERSIONS
Operating System: Arch Linux 
KDE Plasma Version: 5.91.90
KDE Frameworks Version: 5.248.0
Qt Version: 6.7.0
KWin e2878e912affcc8f36b07f113e015ae6e3cd942c
PipeWire 1.0.0

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to