https://bugs.kde.org/show_bug.cgi?id=484313
Bug ID: 484313 Summary: KWin crash in KWin::Cursor::geometry when alt-tabbing out of a game on Wayland Classification: Plasma Product: kwin Version: 6.0.2 Platform: Arch Linux OS: Linux Status: REPORTED Severity: crash Priority: NOR Component: wayland-generic Assignee: kwin-bugs-n...@kde.org Reporter: infer...@icloud.com Target Milestone: --- SUMMARY Sometimes when I alt-tab out of a game (Signalis run via Steam/Proton in my case), KWin crashes completely and restarts. All my applications will have been terminated. STEPS TO REPRODUCE I'm not sure how to reliably reproduce it. This seems to happen randomly (though rarely, I've only had it happen three times in total) when I'm playing Signalis and alt-tabbing out to Firefox. OBSERVED RESULT KWin crashes. EXPECTED RESULT KWin shouldn't crash in that case. SOFTWARE/OS VERSIONS KDE Plasma Version: 6.0.2 KDE Frameworks Version: 6.0.0 Qt Version: 6.6.2 ADDITIONAL INFORMATION I'm only attaching the first 50 or so entries in the backtrace, it seems to keep going forever if I let it run - thousands of entries, all of this form: #15461 0x0000772a558965dd in KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:186 #15462 KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:180 #15463 KWin::PointerInputRedirection::processMotionInternal (this=this@entry=0x6523eccddef0, pos=..., delta=..., deltaNonAccelerated=..., time=std::chrono::duration = { <optimized out>us }, device=device@entry=0x0) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:249 Anyway, backtrace: #0 0x0000772a5578d1f5 in KWin::Cursor::geometry (this=0x6523ecf02870) at /usr/src/debug/kwin/kwin-6.0.2/src/cursor.cpp:192 #1 0x0000772a557681e1 in operator() (__closure=__closure@entry=0x6523ed0d2dd8) at /usr/src/debug/kwin/kwin-6.0.2/src/compositor_wayland.cpp:283 #2 0x0000772a55768ad0 in operator() (__closure=0x6523ed0d2dc0) at /usr/src/debug/kwin/kwin-6.0.2/src/compositor_wayland.cpp:356 #3 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, KWin::WaylandCompositor::addOutput(KWin::Output*)::<lambda()> >::call (arg=<optimized out>, f=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137 #4 QtPrivate::Functor<KWin::WaylandCompositor::addOutput(KWin::Output*)::<lambda()>, 0>::call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:339 #5 QtPrivate::QCallableObject<KWin::WaylandCompositor::addOutput(KWin::Output*)::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x6523ed0d2db0, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:522 #6 0x0000772a52f90ca9 in QtPrivate::QSlotObjectBase::call (a=0x7ffcb9878570, r=0x6523ecf405c0, this=0x6523ed0d2db0, 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 #7 doActivate<false> (sender=0x6523ecf28a10, signal_index=5, argv=0x7ffcb9878570) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qobject.cpp:4039 #8 0x0000772a5578e60c in KWin::Cursors::positionChanged (this=<optimized out>, _t1=<optimized out>, _t2=<optimized out>) at /usr/src/debug/kwin/build/src/kwin_autogen/include/moc_cursor.cpp:534 #9 0x0000772a52f90ca9 in QtPrivate::QSlotObjectBase::call (a=0x7ffcb9878680, r=0x6523ecf28a10, this=0x6523ecf06db0, 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 #10 doActivate<false> (sender=0x6523ecf02870, signal_index=3, argv=0x7ffcb9878680) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qobject.cpp:4039 #11 0x0000772a5578e3d7 in KWin::Cursor::posChanged (this=<optimized out>, _t1=<optimized out>) at /usr/src/debug/kwin/build/src/kwin_autogen/include/moc_cursor.cpp:304 #12 0x0000772a5589b833 in KWin::InputRedirectionCursor::slotPosChanged (this=this@entry=0x6523ecf02870, pos=...) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:1136 #13 0x0000772a5589bcd2 in KWin::InputRedirectionCursor::doSetPos (this=0x6523ecf02870) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:1129 #14 0x0000772a558cd622 in KWin::Edge::pushCursorBack (this=<optimized out>, cursorPos=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/screenedge.cpp:537 #15 KWin::Edge::pushCursorBack (this=this@entry=0x6523ee393b30, cursorPos=...) at /usr/src/debug/kwin/kwin-6.0.2/src/screenedge.cpp:517 #16 0x0000772a558d300f in KWin::Edge::check (this=this@entry=0x6523ee393b30, cursorPos=..., triggerTime=..., forceNoPushBack=forceNoPushBack@entry=false) at /usr/src/debug/kwin/kwin-6.0.2/src/screenedge.cpp:325 #17 0x0000772a558d3318 in KWin::ScreenEdges::isEntered (event=0x7ffcb9878900, this=0x6523ecf00ae0) at /usr/src/debug/kwin/kwin-6.0.2/src/screenedge.cpp:1449 #18 KWin::ScreenEdges::isEntered (this=0x6523ecf00ae0, event=0x7ffcb9878900) at /usr/src/debug/kwin/kwin-6.0.2/src/screenedge.cpp:1423 #19 0x0000772a5580c2d4 in KWin::ScreenEdgeInputFilter::pointerEvent (this=<optimized out>, event=0x7ffcb9878900, nativeButton=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/input.cpp:1646 #20 0x0000772a55896338 in std::__invoke_impl<bool, bool (KWin::InputEventFilter::*&)(KWin::MouseEvent*, unsigned int), KWin::InputEventFilter* const&, KWin::MouseEvent*&, int&> (__f=<optimized out>, __t=@0x6523ed0fbae8: 0x6523ed01df00) --Type <RET> for more, q to quit, c to continue without paging-- at /usr/include/c++/13.2.1/bits/invoke.h:71 #21 std::__invoke<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 #22 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 #23 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 #24 __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 #25 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:2080 #26 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 #27 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 #28 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 #29 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 #30 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 /usr/src/debug/kwin/kwin-6.0.2/src/input.h:194 #31 KWin::PointerInputRedirection::processMotionInternal (this=this@entry=0x6523eccddef0, pos=..., delta=..., deltaNonAccelerated=..., time=std::chrono::duration = { <optimized out>us }, device=device@entry=0x0) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:248 #32 0x0000772a558965dd in KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:186 #33 KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:180 #34 KWin::PointerInputRedirection::processMotionInternal (this=this@entry=0x6523eccddef0, pos=..., delta=..., deltaNonAccelerated=..., time=std::chrono::duration = { <optimized out>us }, device=device@entry=0x0) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:249 #35 0x0000772a558965dd in KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:186 #36 KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:180 #37 KWin::PointerInputRedirection::processMotionInternal (this=this@entry=0x6523eccddef0, pos=..., delta=..., deltaNonAccelerated=..., time=std::chrono::duration = { <optimized out>us }, device=device@entry=0x0) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:249 #38 0x0000772a558965dd in KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:186 #39 KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:180 #40 KWin::PointerInputRedirection::processMotionInternal (this=this@entry=0x6523eccddef0, pos=..., delta=..., deltaNonAccelerated=..., time=std::chrono::duration = { <optimized out>us }, device=device@entry=0x0) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:249 #41 0x0000772a558965dd in KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:186 #42 KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:180 #43 KWin::PointerInputRedirection::processMotionInternal (this=this@entry=0x6523eccddef0, pos=..., delta=..., deltaNonAccelerated=..., time=std::chrono::duration = { <optimized out>us }, device=device@entry=0x0) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:249 #44 0x0000772a558965dd in KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:186 #45 KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:180 #46 KWin::PointerInputRedirection::processMotionInternal (this=this@entry=0x6523eccddef0, pos=..., delta=..., deltaNonAccelerated=..., time=std::chrono::duration = { <optimized out>us }, device=device@entry=0x0) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:249 #47 0x0000772a558965dd in KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:186 #48 KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:180 #49 KWin::PointerInputRedirection::processMotionInternal (this=this@entry=0x6523eccddef0, pos=..., delta=..., deltaNonAccelerated=..., time=std::chrono::duration = { <optimized out>us }, device=device@entry=0x0) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:249 #56 0x0000772a558965dd in KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) at /usr/src/debug/kwin/kwin-6.0.2/src/pointer_input.cpp:186 #57 KWin::PositionUpdateBlocker::~PositionUpdateBlocker (this=<synthetic pointer>, this=<optimized out>) -- You are receiving this mail because: You are watching all bug changes.