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

            Bug ID: 466279
           Summary: kwin_wayland crashes in
                    KWin::TabBox::SwitcherItem::visibleChanged() when
                    alt-tabbing with 5 or more items and using Large Icons
                    task switcher
    Classification: Plasma
           Product: kwin
           Version: git master
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: crash
          Priority: NOR
         Component: tabbox
          Assignee: kwin-bugs-n...@kde.org
          Reporter: n...@kde.org
  Target Milestone: ---

I use the Large Icons task Switcher. As of today's git master everything,
kwin_wayland reproducibly crashes when I press Alt+Tab while there are 5 or
more windows or apps open.

If I switch to the default Breeze task switcher, this condition does not
trigger a crash. This is 100% reproducible for me. It started happening today,
and I alt tab hundreds of times a day, so I strongly suspect the regression was
introduced today. Will bisect KWin shortly.

Here's the full backtrace:

#0  QOpenGLContext::surface() const (this=this@entry=0x0) at
kernel/qopenglcontext.cpp:1078
#1  0x00007f985fe2b18f in qsg_device_pixel_ratio (ctx=0x0) at
scenegraph/qsgdefaultglyphnode_p.cpp:99
#2  QSGTextMaskMaterial::updateCache(QFontEngine::GlyphFormat)
    (this=this@entry=0x24f7e90, glyphFormat=QFontEngine::Format_A32, 
    glyphFormat@entry=QFontEngine::Format_None) at
scenegraph/qsgdefaultglyphnode_p.cpp:781
#3  0x00007f985fe2b422 in QSGTextMaskMaterial::init(QFontEngine::GlyphFormat)
    (this=this@entry=0x24f7e90,
glyphFormat=glyphFormat@entry=QFontEngine::Format_None)
    at scenegraph/qsgdefaultglyphnode_p.cpp:749
#4  0x00007f985fe2b4b0 in
QSGTextMaskMaterial::QSGTextMaskMaterial(QSGRenderContext*, QVector4D const&,
QRawFont const&, QFontEngine::GlyphFormat)
    (this=this@entry=0x24f7e90, rc=<optimized out>, color=..., font=...,
glyphFormat=glyphFormat@entry=QFontEngine::Format_None) at
scenegraph/qsgdefaultglyphnode_p.cpp:718
#5  0x00007f985fe276d6 in QSGDefaultGlyphNode::update() (this=0x25ac280)
    at scenegraph/qsgdefaultglyphnode.cpp:107
#6  0x00007f985fec64d4 in QQuickTextNode::addGlyphs(QPointF const&, QGlyphRun
const&, QColor const&, QQuickText::TextStyle, QColor const&, QSGNode*)
    (this=this@entry=0x11a0ee0, position=..., glyphs=..., color=...,
style=style@entry=QQuickText::Normal, styleColor=..., parentNode=0x0) at
items/qquicktextnode.cpp:117
#7  0x00007f985fecb8a8 in
QQuickTextNodeEngine::addToSceneGraph(QQuickTextNode*, QQuickText::TextStyle,
QColor const&)
    (this=this@entry=0x7ffe6df8c6c0, parentNode=parentNode@entry=0x11a0ee0,
style=style@entry=QQuickText::Normal, styleColor=...) at
items/qquicktextnodeengine.cpp:793
#8  0x00007f985fec7538 in QQuickTextNode::addTextLayout(QPointF const&,
QTextLayout*, QColor const&, QQuickText::TextStyle, QColor const&, QColor
const&, QColor const&, QColor const&, int, int, int, int)
    (this=this@entry=0x11a0ee0, position=...,
textLayout=textLayout@entry=0x2a60138, color=..., style=QQuickText::Normal,
styleColor=..., anchorColor=..., selectionColor=..., selectedTextColor=...,
selectionStart=-1, selectionEnd=-1, lineStart=0, lineCount=<optimized out>) at
items/qquicktextnode.cpp:287
#9  0x00007f985fec5f61 in QQuickText::updatePaintNode(QSGNode*,
QQuickItem::UpdatePaintNodeData*)
    (this=0x24d2c80, oldNode=<optimized out>, data=<optimized out>) at
items/qquicktext.cpp:2500
#10 0x00007f985fea62d8 in QQuickWindowPrivate::updateDirtyNode(QQuickItem*)
    (this=0x31396c0, item=0x24d2c80) at items/qquickwindow.cpp:3888
#11 0x00007f985fea6802 in QQuickWindowPrivate::updateDirtyNodes()
(this=this@entry=0x31396c0)
    at items/qquickwindow.cpp:3633
#12 0x00007f985fea83a1 in QQuickWindowPrivate::syncSceneGraph()
(this=this@entry=0x31396c0)
    at items/qquickwindow.cpp:524
#13 0x00007f985fe23207 in QSGGuiThreadRenderLoop::renderWindow(QQuickWindow*)
     (this=0x3194af0, window=<optimized out>) at
scenegraph/qsgrenderloop.cpp:752
#14 0x00007f985fe250e2 in
QSGGuiThreadRenderLoop::exposureChanged(QQuickWindow*)
    (this=0x3194af0, window=<optimized out>) at
scenegraph/qsgrenderloop.cpp:853
#15 0x00007f985ef76365 in QWindow::event(QEvent*) (this=0x1f5fde0,
ev=<optimized out>)
    at kernel/qwindow.cpp:2455
#16 0x00007f985d7aed62 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    (this=<optimized out>, receiver=0x1f5fde0, e=0x7ffe6df8f070) at
kernel/qapplication.cpp:3640
#17 0x00007f985ea9d4e8 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    (receiver=0x1f5fde0, event=0x7ffe6df8f070) at
kernel/qcoreapplication.cpp:1064
#18 0x00007f985ef6c085 in
QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*)
(e=0x2c179b0) at kernel/qguiapplication.cpp:3254
#19 0x00007f985ef49f1c in
QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>)
(flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169
#20 0x00007f985ef4a2a0 in
QWindowSystemInterface::flushWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>)
(flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1138
#21 0x00007f985ef59874 in QPlatformWindow::setVisible(bool) (this=0x29553d0,
visible=<optimized out>)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#22 0x00007f985ef75f07 in QWindowPrivate::setVisible(bool) (this=0x31396c0,
visible=<optimized out>)
    kernel/qwindow.cpp:408
#23 0x00007f985f90df5f in QQmlPropertyData::writeProperty(QObject*, void*,
QFlags<QQmlPropertyData::WriteFlag>) const (flags=..., value=<optimized out>,
target=<optimized out>, this=<optimized out>)
    at
../../include/QtQml/5.15.8/QtQml/private/../../../../../src/qml/qml/qqmlpropertydata_p.h:391
#24 GenericBinding<1>::doStore<bool>(bool, QQmlPropertyData const*,
QFlags<QQmlPropertyData::WriteFlag>) const (flags=..., pd=<optimized out>,
value=<optimized out>, this=<optimized out>)
    at qml/qqmlbinding.cpp:342
#25 GenericBinding<1>::write(QV4::Value const&, bool,
QFlags<QQmlPropertyData::WriteFlag>)
    (this=0x25bf350, result=..., isUndefined=<optimized out>, flags=...) at
qml/qqmlbinding.cpp:305
#26 0x00007f985f90ea06 in
QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&,
QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&)
    (this=0x25bf350, watcher=..., flags=..., scope=<optimized out>) at
qml/qqmlbinding.cpp:258
#27 0x00007f985f90c374 in
QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>)
    (this=0x25bf350, flags=...) at qml/qqmlbinding.cpp:194
#28 0x00007f985f8e91af in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*,
void**)
    (endpoint=<optimized out>, a=0x0) at qml/qqmlnotifier.cpp:104
#29 0x00007f985ead0b70 in doActivate<false>(QObject*, int, void**)
    (sender=0x7f980001be90, signal_index=3, argv=0x0) at
kernel/qobject.cpp:3815
#30 0x00007f985eacbe27 in QMetaObject::activate(QObject*, QMetaObject const*,
int, void**)
    (sender=<optimized out>, m=m@entry=0x7f986086a940
<KWin::TabBox::SwitcherItem::staticMetaObject>,
local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at
kernel/qobject.cpp:3983
#31 0x00007f9860393000 in KWin::TabBox::SwitcherItem::visibleChanged()
(this=<optimized out>)
    at
/home/nate/kde/build/kwin/src/kwin_autogen/WF44ZIICEP/moc_switcheritem.cpp:293
#32 0x00007f98606647fa in KWin::TabBox::TabBoxHandlerPrivate::show()
(this=0x1140f40)
    at /home/nate/kde/src/kwin/src/tabbox/tabboxhandler.cpp:351
#33 0x00007f98606649d9 in KWin::TabBox::TabBoxHandler::show() (this=0x1203580)
    at /home/nate/kde/src/kwin/src/tabbox/tabboxhandler.cpp:395
#34 0x00007f985ead0e96 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffe6df90e80, r=<optimized out>, this=0x121e470)
    at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#35 doActivate<false>(QObject*, int, void**) (sender=0x11a7798, signal_index=3,
argv=0x7ffe6df90e80)
    at kernel/qobject.cpp:3923
#36 0x00007f985eacbe27 in QMetaObject::activate(QObject*, QMetaObject const*,
int, void**)
    (sender=<optimized out>, m=m@entry=0x7f985ed5e580
<QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0,
argv=argv@entry=0x7ffe6df90e80) at kernel/qobject.cpp:3983
#37 0x00007f985ead421e in QTimer::timeout(QTimer::QPrivateSignal)
(this=<optimized out>, _t1=...)
    at .moc/moc_qtimer.cpp:205
#38 0x00007f985eac7fc5 in QObject::event(QEvent*) (this=0x11a7798,
e=0x7ffe6df90fe0)
    at kernel/qobject.cpp:1369
#39 0x00007f985d7aed62 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    (this=<optimized out>, receiver=0x11a7798, e=0x7ffe6df90fe0) at
kernel/qapplication.cpp:3640
#40 0x00007f985ea9d4e8 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    (receiver=0x11a7798, event=0x7ffe6df90fe0) at
kernel/qcoreapplication.cpp:1064
#41 0x00007f985eaed981 in QTimerInfoList::activateTimers()
(this=this@entry=0xde4568)
    at kernel/qtimerinfo_unix.cpp:643
#42 0x00007f985eaeb0e0 in QEventDispatcherUNIXPrivate::activateTimers()
(this=this@entry=0xde44e0)
    at kernel/qeventdispatcher_unix.cpp:249
#43 0x00007f985eaebf30 in
QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=<optimized out>, flags=...) at kernel/qeventdispatcher_unix.cpp:516
#44 0x0000000000535351 in
QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
()
#45 0x00007f985ea9bf3a in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=this@entry=0x7ffe6df91160, flags=..., flags@entry=...)
    at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#46 0x00007f985eaa4002 in QCoreApplication::exec() ()
    at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#47 0x00007f985ef5fad0 in QGuiApplication::exec() () at
kernel/qguiapplication.cpp:1863
#48 0x00007f985d7aecd9 in QApplication::exec() () at
kernel/qapplication.cpp:2832
#49 0x000000000044719e in main(int, char**) (argc=<optimized out>,
argv=<optimized out>)
    at /home/nate/kde/src/kwin/src/main_wayland.cpp:616

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

Reply via email to