| 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 First Reported In: | 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/Implemented 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. |