Summary: | kwin_wayland hangs when dragging window to top/bottom of screen with "screen&window edge snap zone" set to "None" | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | TheFeelTrain <thefeeltrain> |
Component: | wayland-generic | Assignee: | fanzhuyifan |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | fanzhuyifan, nate, serfreeman1337 |
Priority: | NOR | Keywords: | qt6 |
Version: | 5.92.0 | ||
Target Milestone: | --- | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
See Also: | https://bugs.kde.org/show_bug.cgi?id=449105 | ||
Latest Commit: | https://invent.kde.org/plasma/kwin/-/commit/33077cb81c0504263eda6152bd6fa3776a7a470d | Version Fixed In: | 6.0 |
Sentry Crash Report: |
Description
TheFeelTrain
2024-01-14 05:53:15 UTC
I can reproduce this on git master under wayland when *both* screen edge snap zone and window snap zone are set to None. gdb backtrace when attaching to stuck kwin_wayland: +bt #0 0x000079ccbdacc57d in QRect::QRect(int, int, int, int) (aheight=<optimized out>, awidth=<optimized out>, atop=<optimized out>, aleft=<optimized out>, this=<optimized out>) at /usr/include/qt6/QtCore/qrect.h:155 #1 QRectF::toRect() const (this=<optimized out>) at /usr/include/qt6/QtCore/qrect.h:854 #2 KWin::Window::handleInteractiveMoveResize(double, double, double, double) (this=this@entry=0x611583b35d70, x=<optimized out>, y=<optimized out>, x_root=<optimized out>, y_root=<optimized out>) at /home/yifan/kde/src/kwin/src/window.cpp:1690 #3 0x000079ccbdaccf7d in KWin::Window::handleInteractiveMoveResize(QPointF const&, QPointF const&) (this=this@entry=0x611583b35d70, local=..., global=...) at /usr/include/qt6/QtCore/qpoint.h:335 #4 0x000079ccbdacd578 in KWin::Window::updateInteractiveMoveResize(QPointF const&) (this=this@entry=0x611583b35d70, currentGlobalCursor=...) at /home/yifan/kde/src/kwin/src/window.cpp:1380 #5 0x000079ccbd956308 in KWin::MoveResizeFilter::pointerEvent(KWin::MouseEvent*, unsigned int) (this=<optimized out>, event=<optimized out>, nativeButton=<optimized out>) at /home/yifan/kde/src/kwin/src/input.cpp:604 #6 0x000079ccbd9f06dd in std::__invoke_impl<bool, bool (KWin::InputEventFilter::*&)(KWin::MouseEvent*, unsigned int), KWin::InputEventFilter* const&, KWin::MouseEvent*&, int&>(std::__invoke_memfun_deref, bool (KWin::InputEventFilter::*&)(KWin::MouseEvent*, unsigned int), KWin::InputEventFilter* const&, KWin::MouseEvent*&, int&) (__f=<optimized out>, __t=@0x6115839910e8: 0x6115839bc7e0) at /usr/include/c++/13.2.1/bits/invoke.h:71 #7 std::__invoke<bool (KWin::InputEventFilter::*&)(KWin::MouseEvent*, unsigned int), KWin::InputEventFilter* const&, KWin::MouseEvent*&, int&>(bool (KWin::InputEventFilter::*&)(KWin::MouseEvent*, unsigned int), KWin::InputEventFilter* const&, KWin::MouseEvent*&, int&) (__fn=<optimized out>) at /usr/include/c++/13.2.1/bits/invoke.h:96 #8 std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>::__call<bool, KWin::InputEventFilter* const&, 0ul, 1ul, 2ul>(std::tuple<KWin::InputEventFilter* const&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (__args=<optimized out>, this=<optimized out>) at /usr/include/c++/13.2.1/functional:506 #9 std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>::operator()<KWin::InputEventFilter* const&, bool>(KWin::InputEventFilter* const&) (this=<optimized out>) at /usr/include/c++/13.2.1/functional:591 #10 __gnu_cxx::__ops::_Iter_pred<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >::operator()<QList<KWin::InputEventFilter*>::const_iterator>(QList<KWin::InputEventFilter*>::const_iterator) (__it=..., this=<optimized out>) at /usr/include/c++/13.2.1/bits/predefined_ops.h:318 #11 std::__find_if<QList<KWin::InputEventFilter*>::const_iterator, __gnu_cxx::__ops::_Iter_pred<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> > >(QList<KWin::InputEventFilter*>::const_iterator, QList<KWin::InputEventFilter*>::const_iterator, __gnu_cxx::__ops::_Iter_pred<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >, std::random_access_iterator_tag) (__pred=..., __last=..., __first=...) at /usr/include/c++/13.2.1/bits/stl_algobase.h:2076 #12 std::__find_if<QList<KWin::InputEventFilter*>::const_iterator, __gnu_cxx::__ops::_Iter_pred<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> > >(QList<KWin::InputEventFilter*>::const_iterator, QList<KWin::InputEventFilter*>::const_iterator, __gnu_cxx::__ops::_Iter_pred<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >) (__pred=..., __last=..., __first=...) at /usr/include/c++/13.2.1/bits/stl_algobase.h:2117 #13 std::find_if<QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >(QList<KWin::InputEventFilter*>::const_iterator, QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>) (__pred=..., __last=..., __first=...) at /usr/include/c++/13.2.1/bits/stl_algo.h:3923 #14 std::none_of<QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >(QList<KWin::InputEventFilter*>::const_iterator, QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>) (__pred=..., __last=..., __first=...) at /usr/include/c++/13.2.1/bits/stl_algo.h:477 #15 std::any_of<QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >(QList<KWin::InputEventFilter*>::const_iterator, QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>) (__pred=..., __last=..., __first=...) at /usr/include/c++/13.2.1/bits/stl_algo.h:496 #16 KWin::InputRedirection::processFilters<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >(std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>) (function=..., this=<optimized out>) at /home/yifan/kde/src/kwin/src/input.h:194 #17 KWin::PointerInputRedirection::processMotionInternal(QPointF const&, QPointF const&, QPointF const&, std::chrono::duration<long, std::ratio<1l, 1000000l> >, KWin::InputDevice*) (this=0x61158362d8d0, pos=<optimized out>, delta=<optimized out>, deltaNonAccelerated=<optimized out>, time=std::chrono::duration = { <optimized out>us }, device=<optimized out>) at /home/yifan/kde/src/kwin/src/pointer_input.cpp:248 #18 0x000079ccbd9f158c in KWin::PointerInputRedirection::processMotion(QPointF const&, QPointF const&, std::chrono::duration<long, std::ratio<1l, 1000000l> >, KWin::InputDevice*) (this=<optimized out>, delta=<optimized out>, deltaNonAccelerated=<optimized out>, time=std::chrono::duration = { <optimized out>us }, device=<optimized out>) at /home/yifan/kde/src/kwin/src/pointer_input.cpp:225 #19 0x000079ccba7beaa9 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdd34e0e50, r=0x61158362d8d0, this=0x6115839b1dd0, 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 #20 doActivate<false>(QObject*, int, void**) (sender=0x611583bbb380, signal_index=6, argv=0x7ffdd34e0e50) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qobject.cpp:4044 #21 0x000079ccbd8ab2a1 in KWin::InputDevice::pointerMotion(QPointF const&, QPointF const&, std::chrono::duration<long, std::ratio<1l, 1000000l> >, KWin::InputDevice*) (this=this@entry=0x611583bbb380, _t1=..., _t2=..., _t3=_t3@entry=std::chrono::duration = { 328552452us }, _t4=<optimized out>) at /home/yifan/kde/build/kwin/src/kwin_autogen/include/moc_inputdevice.cpp:828 #22 0x000079ccbdb91477 in KWin::LibInput::Connection::processEvents() (this=<optimized out>) at /home/yifan/kde/src/kwin/src/backends/libinput/connection.cpp:373 #23 0x000079ccba7afc74 in QObject::event(QEvent*) (this=0x611583708cf0, e=0x79cc8c04bf70) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qobject.cpp:1446 #24 0x000079ccbb97bf4b in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x611583708cf0, e=0x79cc8c04bf70) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/widgets/kernel/qapplication.cpp:3290 #25 0x000079ccba765488 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x611583708cf0, event=event@entry=0x79cc8c04bf70) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qcoreapplication.cpp:1134 #26 0x000079ccba765814 in QCoreApplication::sendEvent(QObject*, QEvent*) (event=0x79cc8c04bf70, receiver=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qcoreapplication.cpp:1575 #27 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x6115835008c0) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qcoreapplication.cpp:1946 #28 0x000079ccba8d89cb in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x61158351ddd0, flags=flags@entry=...) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qeventdispatcher_unix.cpp:415 #29 0x000079ccbb3f2ce2 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 #30 0x000079ccba76d67e in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=..., this=0x7ffdd34e1320) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qeventloop.cpp:100 #31 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffdd34e1320, flags=...) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qeventloop.cpp:182 #32 0x000079ccba7690b8 in QCoreApplication::exec() () at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/global/qflags.h:74 #33 0x000079ccbb97849a in QApplication::exec() () at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/widgets/kernel/qapplication.cpp:2568 #34 0x000061158318ddc7 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/yifan/kde/src/kwin/src/main_wayland.cpp:609 +frame 2 #2 KWin::Window::handleInteractiveMoveResize (this=this@entry=0x611583b35d70, x=<optimized out>, y=<optimized out>, x_root=<optimized out>, y_root=<optimized out>) at /home/yifan/kde/src/kwin/src/window.cpp:1690 1690 const QRect r = rect & titleRect.toRect(); +finish Run till exit from #2 KWin::Window::handleInteractiveMoveResize (this=this@entry=0x611583b35d70, x=<optimized out>, y=<optimized out>, x_root=<optimized out>, y_root=<optimized out>) at /home/yifan/kde/src/kwin/src/window.cpp:1690 [Thread 0x79cc724006c0 (LWP 6016) exited] [Thread 0x79cc71a006c0 (LWP 6018) exited] [Thread 0x79cc72e006c0 (LWP 6017) exited] [Thread 0x79cc738006c0 (LWP 6015) exited] Thread 1 "kwin_wayland" received signal SIGINT, Interrupt. 0x000079ccbdacc594 in KWin::Window::handleInteractiveMoveResize (this=this@entry=0x611583b35d70, x=<optimized out>, y=<optimized out>, x_root=<optimized out>, y_root=<optimized out>) at /home/yifan/kde/src/kwin/src/window.cpp:1692 1692 (!transposed && r.height() == titleRect.height())) { // ...prevents long slim areas +where #0 0x000079ccbdacc594 in KWin::Window::handleInteractiveMoveResize(double, double, double, double) (this=this@entry=0x611583b35d70, x=<optimized out>, y=<optimized out>, x_root=<optimized out>, y_root=<optimized out>) at /home/yifan/kde/src/kwin/src/window.cpp:1692 #1 0x000079ccbdaccf7d in KWin::Window::handleInteractiveMoveResize(QPointF const&, QPointF const&) (this=this@entry=0x611583b35d70, local=..., global=...) at /usr/include/qt6/QtCore/qpoint.h:335 #2 0x000079ccbdacd578 in KWin::Window::updateInteractiveMoveResize(QPointF const&) (this=this@entry=0x611583b35d70, currentGlobalCursor=...) at /home/yifan/kde/src/kwin/src/window.cpp:1380 #3 0x000079ccbd956308 in KWin::MoveResizeFilter::pointerEvent(KWin::MouseEvent*, unsigned int) (this=<optimized out>, event=<optimized out>, nativeButton=<optimized out>) at /home/yifan/kde/src/kwin/src/input.cpp:604 #4 0x000079ccbd9f06dd in std::__invoke_impl<bool, bool (KWin::InputEventFilter::*&)(KWin::MouseEvent*, unsigned int), KWin::InputEventFilter* const&, KWin::MouseEvent*&, int&>(std::__invoke_memfun_deref, bool (KWin::InputEventFilter::*&)(KWin::MouseEvent*, unsigned int), KWin::InputEventFilter* const&, KWin::MouseEvent*&, int&) (__f=<optimized out>, __t=@0x6115839910e8: 0x6115839bc7e0) at /usr/include/c++/13.2.1/bits/invoke.h:71 #5 std::__invoke<bool (KWin::InputEventFilter::*&)(KWin::MouseEvent*, unsigned int), KWin::InputEventFilter* const&, KWin::MouseEvent*&, int&>(bool (KWin::InputEventFilter::*&)(KWin::MouseEvent*, unsigned int), KWin::InputEventFilter* const&, KWin::MouseEvent*&, int&) (__fn=<optimized out>) at /usr/include/c++/13.2.1/bits/invoke.h:96 #6 std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>::__call<bool, KWin::InputEventFilter* const&, 0ul, 1ul, 2ul>(std::tuple<KWin::InputEventFilter* const&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (__args=<optimized out>, this=<optimized out>) at /usr/include/c++/13.2.1/functional:506 #7 std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>::operator()<KWin::InputEventFilter* const&, bool>(KWin::InputEventFilter* const&) (this=<optimized out>) at /usr/include/c++/13.2.1/functional:591 #8 __gnu_cxx::__ops::_Iter_pred<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >::operator()<QList<KWin::InputEventFilter*>::const_iterator>(QList<KWin::InputEventFilter*>::const_iterator) (__it=..., this=<optimized out>) at /usr/include/c++/13.2.1/bits/predefined_ops.h:318 #9 std::__find_if<QList<KWin::InputEventFilter*>::const_iterator, __gnu_cxx::__ops::_Iter_pred<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> > >(QList<KWin::InputEventFilter*>::const_iterator, QList<KWin::InputEventFilter*>::const_iterator, __gnu_cxx::__ops::_Iter_pred<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >, std::random_access_iterator_tag) (__pred=..., __last=..., __first=...) at /usr/include/c++/13.2.1/bits/stl_algobase.h:2076 #10 std::__find_if<QList<KWin::InputEventFilter*>::const_iterator, __gnu_cxx::__ops::_Iter_pred<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> > >(QList<KWin::InputEventFilter*>::const_iterator, QList<KWin::InputEventFilter*>::const_iterator, __gnu_cxx::__ops::_Iter_pred<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >) (__pred=..., __last=..., __first=...) at /usr/include/c++/13.2.1/bits/stl_algobase.h:2117 #11 std::find_if<QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >(QList<KWin::InputEventFilter*>::const_iterator, QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>) (__pred=..., __last=..., __first=...) at /usr/include/c++/13.2.1/bits/stl_algo.h:3923 #12 std::none_of<QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >(QList<KWin::InputEventFilter*>::const_iterator, QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>) (__pred=..., __last=..., __first=...) at /usr/include/c++/13.2.1/bits/stl_algo.h:477 #13 std::any_of<QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >(QList<KWin::InputEventFilter*>::const_iterator, QList<KWin::InputEventFilter*>::const_iterator, std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>) (__pred=..., __last=..., __first=...) at /usr/include/c++/13.2.1/bits/stl_algo.h:496 #14 KWin::InputRedirection::processFilters<std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)> >(std::_Bind<bool (KWin::InputEventFilter::*(std::_Placeholder<1>, KWin::MouseEvent*, int))(KWin::MouseEvent*, unsigned int)>) (function=..., this=<optimized out>) at /home/yifan/kde/src/kwin/src/input.h:194 #15 KWin::PointerInputRedirection::processMotionInternal(QPointF const&, QPointF const&, QPointF const&, std::chrono::duration<long, std::ratio<1l, 1000000l> >, KWin::InputDevice*) (this=0x61158362d8d0, pos=<optimized out>, delta=<optimized out>, deltaNonAccelerated=<optimized out>, time=std::chrono::duration = { <optimized out>us }, device=<optimized out>) at /home/yifan/kde/src/kwin/src/pointer_input.cpp:248 #16 0x000079ccbd9f158c in KWin::PointerInputRedirection::processMotion(QPointF const&, QPointF const&, std::chrono::duration<long, std::ratio<1l, 1000000l> >, KWin::InputDevice*) (this=<optimized out>, delta=<optimized out>, deltaNonAccelerated=<optimized out>, time=std::chrono::duration = { <optimized out>us }, device=<optimized out>) at /home/yifan/kde/src/kwin/src/pointer_input.cpp:225 #17 0x000079ccba7beaa9 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffdd34e0e50, r=0x61158362d8d0, this=0x6115839b1dd0, 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=0x611583bbb380, signal_index=6, argv=0x7ffdd34e0e50) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qobject.cpp:4044 #19 0x000079ccbd8ab2a1 in KWin::InputDevice::pointerMotion(QPointF const&, QPointF const&, std::chrono::duration<long, std::ratio<1l, 1000000l> >, KWin::InputDevice*) (this=this@entry=0x611583bbb380, _t1=..., _t2=..., _t3=_t3@entry=std::chrono::duration = { 328552452us }, _t4=<optimized out>) at /home/yifan/kde/build/kwin/src/kwin_autogen/include/moc_inputdevice.cpp:828 #20 0x000079ccbdb91477 in KWin::LibInput::Connection::processEvents() (this=<optimized out>) at /home/yifan/kde/src/kwin/src/backends/libinput/connection.cpp:373 #21 0x000079ccba7afc74 in QObject::event(QEvent*) (this=0x611583708cf0, e=0x79cc8c04bf70) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qobject.cpp:1446 #22 0x000079ccbb97bf4b in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x611583708cf0, e=0x79cc8c04bf70) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/widgets/kernel/qapplication.cpp:3290 #23 0x000079ccba765488 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x611583708cf0, event=event@entry=0x79cc8c04bf70) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qcoreapplication.cpp:1134 #24 0x000079ccba765814 in QCoreApplication::sendEvent(QObject*, QEvent*) (event=0x79cc8c04bf70, receiver=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qcoreapplication.cpp:1575 #25 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x6115835008c0) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qcoreapplication.cpp:1946 #26 0x000079ccba8d89cb in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x61158351ddd0, flags=flags@entry=...) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qeventdispatcher_unix.cpp:415 #27 0x000079ccbb3f2ce2 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 #28 0x000079ccba76d67e in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=..., this=0x7ffdd34e1320) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qeventloop.cpp:100 #29 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7ffdd34e1320, flags=...) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/kernel/qeventloop.cpp:182 #30 0x000079ccba7690b8 in QCoreApplication::exec() () at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/corelib/global/qflags.h:74 #31 0x000079ccbb97849a in QApplication::exec() () at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0-beta1/src/widgets/kernel/qapplication.cpp:2568 #32 0x000061158318ddc7 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/yifan/kde/src/kwin/src/main_wayland.cpp:609 +l 1687 const QRectF titleRect(bTitleRect.translated(currentTry.topLeft())); 1688 int visiblePixels = 0; 1689 for (const QRect &rect : availableArea) { 1690 const QRect r = rect & titleRect.toRect(); 1691 if ((transposed && r.width() == titleRect.width()) || // Only the full size regions... 1692 (!transposed && r.height() == titleRect.height())) { // ...prevents long slim areas 1693 visiblePixels += r.width() * r.height(); 1694 } 1695 } 1696 if (visiblePixels >= requiredPixels) { Fyi the MR https://invent.kde.org/plasma/kwin/-/merge_requests/4302 proposes a refactoring of KWin::Window::handleInteractiveMoveResize I plan to work on this. A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/4941 Git commit 2dba3d30af510a03e2e0bce870b65dad8b763edc by Yifan Zhu. Committed on 17/01/2024 at 19:05. Pushed by fanzhuyifan into branch 'master'. window: don't use exact comparison for QRectFs With fractional geometries, we can only guarantee that nextMoveResizeGeom eventually is within one unit of currentMoveResizeGeom. FIXED-IN: 6.0 M +5 -1 src/window.cpp https://invent.kde.org/plasma/kwin/-/commit/2dba3d30af510a03e2e0bce870b65dad8b763edc Git commit 33077cb81c0504263eda6152bd6fa3776a7a470d by Yifan Zhu. Committed on 17/01/2024 at 19:37. Pushed by fanzhuyifan into branch 'Plasma/6.0'. window: don't use exact comparison for QRectFs With fractional geometries, we can only guarantee that nextMoveResizeGeom eventually is within one unit of currentMoveResizeGeom. FIXED-IN: 6.0 (cherry picked from commit 2dba3d30af510a03e2e0bce870b65dad8b763edc) M +5 -1 src/window.cpp https://invent.kde.org/plasma/kwin/-/commit/33077cb81c0504263eda6152bd6fa3776a7a470d MR https://invent.kde.org/plasma/kwin/-/merge_requests/5468 introduced this bug on master again. (and systemd now restarts kwin in case of hang, yay) (In reply to serfreeman1337 from comment #8) > MR https://invent.kde.org/plasma/kwin/-/merge_requests/5468 introduced this > bug on master again. > (and systemd now restarts kwin in case of hang, yay) Ooops...... Maybe we should just wait for the rerwite in https://invent.kde.org/plasma/kwin/-/merge_requests/5296..... (In reply to serfreeman1337 from comment #8) > MR https://invent.kde.org/plasma/kwin/-/merge_requests/5468 introduced this > bug on master again. > (and systemd now restarts kwin in case of hang, yay) FWIW I can't reproduce on master using fractional scaling, and when *both* screen edge snap zone and window snap zone are set to None. But if you can reproduce consistently and are certain the MR is causing the issue, I would suggest reverting the MR, since having windows move by 1px increments is far less annoying than kwin hanging. |