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.

Reply via email to