Bug 501827

Summary: On Wayland, Kwin crashes in KWin::TabBox::SwitcherItem::visibleChanged() when Alt+Tabbing while out of VRAM
Product: [Plasma] kwin Reporter: somepurposething
Component: generic-crashAssignee: KWin default assignee <kwin-bugs-null>
Status: REPORTED ---    
Severity: crash CC: kdedev, mark, nate
Priority: NOR Keywords: drkonqi, wayland-only
Version First Reported In: 6.3.3   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report: https://crash-reports.kde.org/organizations/kde/issues/135803/events/6189f4c55f0c4c01b1ae6f7c5ba668b5/
Attachments: New crash information added by DrKonqi

Description somepurposething 2025-03-21 13:05:15 UTC
Application: kwin_wayland (6.3.3)

ApplicationNotResponding [ANR]: false
Qt Version: 6.8.2
Frameworks Version: 6.12.0
Operating System: Linux 6.13.7-arch1-1 x86_64
Windowing System: Wayland
Distribution: EndeavourOS
DrKonqi: 6.3.3 [CoredumpBackend]

-- Information about the crash:
Title explains itself. I can encounter this crash whenever I run TF2, because am on a GTX 1050, which does not have much VRAM.

This does not happen on X11, however the animations for the start menu on X11 suck and it just *feels* worse somehow so I'd rather stick to wayland.

The crash can be reproduced every time.

-- Backtrace (Reduced):
#5  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#6  0x00007a66934a56d3 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:89
#7  0x00007a669344bba0 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8  0x00007a6693433582 in __GI_abort () at abort.c:73
#9  0x00007a6692e905c2 in qAbort () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qassert.cpp:49


Reported using DrKonqi
Comment 1 somepurposething 2025-03-21 13:05:16 UTC
Created attachment 179630 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 somepurposething 2025-03-21 13:10:38 UTC
Specifically, I can make it crash on demand when I use Alt+Tab or the Overview screen, to do it consistently I have to spam either of those, or else kwin and plasmashell both die in the background and DrKonqi doesn't appear.

While spamming those, sometimes the preview of the app window just don't appear. On X11 the previews are replaced by just the app icon if there's not enough VRAM.
Comment 3 Nate Graham 2025-03-21 17:43:04 UTC
Thread 1 (Thread 0x7a668c70aa40 (LWP 11043)):
[KCrash Handler]
#5  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#6  0x00007a66934a56d3 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:89
#7  0x00007a669344bba0 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#8  0x00007a6693433582 in __GI_abort () at abort.c:73
#9  0x00007a6692e905c2 in qAbort () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qassert.cpp:49
#10 qt_message_fatal<QString&> (context=..., message=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qlogging.cpp:2130
#11 qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, context=..., msg=msg@entry=0x7a669558a9c5 "%s", ap=ap@entry=0x7ffcb4ace868) at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qlogging.cpp:382
#12 0x00007a6692e9154b in QMessageLogger::fatal (this=this@entry=0x7ffcb4aceb30, msg=msg@entry=0x7a669558a9c5 "%s") at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qlogging.cpp:884
#13 0x00007a669513c0c5 in QSGRenderLoop::handleContextCreationFailure (this=this@entry=0x574ad89a0db0, window=window@entry=0x574ad9085d50) at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/scenegraph/qsgrenderloop.cpp:292
#14 0x00007a66952f5d95 in QSGGuiThreadRenderLoop::ensureRhi (this=this@entry=0x574ad89a0db0, window=window@entry=0x574ad9085d50, data=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/scenegraph/qsgrenderloop.cpp:496
#15 0x00007a66952f7b76 in QSGGuiThreadRenderLoop::renderWindow (this=0x574ad89a0db0, window=0x574ad9085d50) at /usr/src/debug/qt6-declarative/qtdeclarative/src/quick/scenegraph/qsgrenderloop.cpp:580
#16 0x00007a66937ef840 in QWindow::event (this=0x574ad9085d50, ev=0x7ffcb4aceec0) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindow.cpp:2668
#17 0x00007a66942ff0ca in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x574ad9085d50, e=0x7ffcb4aceec0) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3296
#18 0x00007a6692f55b00 in QCoreApplication::notifyInternal2 (receiver=0x574ad9085d50, event=0x7ffcb4aceec0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1172
#19 0x00007a6692f55b5d in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1626
#20 0x00007a6693795e04 in QGuiApplicationPrivate::processExposeEvent (e=0x7ffcb4acef60) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qguiapplication.cpp:3464
#21 0x00007a669380596d in QWindowSystemEventHandler::sendEvent (this=<optimized out>, e=0x7ffcb4acef60) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindowsysteminterface.cpp:190
#22 QWindowSystemHelper<QWindowSystemInterface::SynchronousDelivery>::handleEvent<QWindowSystemInterfacePrivate::ExposeEvent, QWindow*, QRegion> () at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindowsysteminterface.cpp:102
#23 QWindowSystemHelper<QWindowSystemInterface::SynchronousDelivery>::handleEvent<QWindowSystemInterfacePrivate::ExposeEvent, QWindow*, QRegion> () at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindowsysteminterface.cpp:96
#24 0x00007a66937f82b0 in QWindowSystemHelper<QWindowSystemInterface::DefaultDelivery>::handleEvent<QWindowSystemInterfacePrivate::ExposeEvent, QWindow*, QRegion> () at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindowsysteminterface.cpp:80
#25 handleWindowSystemEvent<QWindowSystemInterfacePrivate::ExposeEvent, QWindowSystemInterface::DefaultDelivery, QWindow*, QRegion> () at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindowsysteminterface.cpp:138
#26 QWindowSystemInterface::handleExposeEvent<QWindowSystemInterface::DefaultDelivery> (window=0x574ad9085d50, region=...) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindowsysteminterface.cpp:337
#27 0x0000574ab103b837 in KWin::QPA::Window::map (this=0x574ad9564750) at /usr/src/debug/kwin/kwin-6.3.3.1/src/plugins/qpa/window.cpp:161
#28 KWin::QPA::Window::setVisible (this=0x574ad9564750, visible=<optimized out>) at /usr/src/debug/kwin/kwin-6.3.3.1/src/plugins/qpa/window.cpp:92
#29 0x00007a664fbaac39 in non-virtual thunk to PlasmaQuick::Dialog::componentComplete() () at /usr/src/debug/libplasma/libplasma-6.3.3/src/plasmaquick/dialog.h:254
#30 0x00007a6694d160f9 in QQmlObjectCreator::finalize (this=0x574ad90eeab0, interrupt=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1573
#31 0x00007a6694cdd267 in QQmlIncubatorPrivate::incubate (this=this@entry=0x7a6684023ee0, i=...) at /usr/include/qt6/QtCore/qscopedpointer.h:90
#32 0x00007a6694cddcc8 in QQmlEnginePrivate::incubate (this=0x574ad808ae20, i=..., forContext=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlincubator.cpp:53
#33 0x00007a66920a7562 in QQmlDelegateModelPrivate::object (this=0x574ad80806b0, group=QQmlListCompositor::Default, index=0, incubationMode=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlmodels/qqmldelegatemodel.cpp:1287
#34 0x00007a669206bffc in QQmlInstantiatorPrivate::regenerate (this=0x7a6684038e70) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlmodels/qqmlinstantiator.cpp:53
#35 0x00007a6694c6c063 in QQmlPropertyData::writeProperty (this=<optimized out>, target=<optimized out>, value=<optimized out>, flags=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlpropertydata_p.h:336
#36 0x00007a6694c869c8 in GenericBinding<1>::doStore<bool> (this=<optimized out>, value=<optimized out>, pd=<optimized out>, flags=...) at /usr/include/qt6/QtCore/qtaggedpointer.h:120
#37 GenericBinding<1>::write (this=<optimized out>, result=..., isUndefined=<optimized out>, flags=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlbinding.cpp:245
#38 0x00007a6694c82f2d in QQmlBinding::doUpdate (this=0x574ad8d74830, watcher=..., flags=..., scope=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlbinding.cpp:715
#39 0x00007a6694c8227e in QQmlBinding::update (this=0x574ad8d74830, flags=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlbinding.cpp:165
#40 0x00007a6694d09f1c in QQmlNotifier::emitNotify (endpoint=<optimized out>, a=0x0) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlnotifier.cpp:70
#41 0x00007a6692fb174a in doActivate<false> (sender=0x574ad8c9db60, signal_index=3, argv=0x0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4005
#42 0x00007a6695d5ef92 in KWin::TabBox::SwitcherItem::visibleChanged (this=0x574ad8c9db60) at /usr/src/debug/kwin/build/src/kwin_autogen/include/moc_switcheritem.cpp:346
#43 KWin::TabBox::SwitcherItem::setVisible (this=0x574ad8c9db60, visible=true) at /usr/src/debug/kwin/kwin-6.3.3.1/src/tabbox/switcheritem.cpp:69
#44 KWin::TabBox::TabBoxHandlerPrivate::show (this=0x574ad812e3f0) at /usr/src/debug/kwin/kwin-6.3.3.1/src/tabbox/tabboxhandler.cpp:310
#45 KWin::TabBox::TabBoxHandler::show (this=0x574ad8486930) at /usr/src/debug/kwin/kwin-6.3.3.1/src/tabbox/tabboxhandler.cpp:354
#46 KWin::TabBox::TabBox::show (this=<optimized out>) at /usr/src/debug/kwin/kwin-6.3.3.1/src/tabbox/tabbox.cpp:494
#47 KWin::TabBox::TabBox::show (this=<optimized out>) at /usr/src/debug/kwin/kwin-6.3.3.1/src/tabbox/tabbox.cpp:484
#48 0x00007a6692fb1a49 in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=<optimized out>, a=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:486
#49 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4115
#50 0x00007a6692fbaa75 in QTimer::timeout (this=0x574ad80a1278, _t1=...) at /usr/src/debug/qt6-base/build/src/corelib/Core_autogen/include/moc_qtimer.cpp:223
#51 QTimer::timerEvent (e=<optimized out>, this=0x574ad80a1278) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimer.cpp:285
#52 QTimer::timerEvent (this=0x574ad80a1278, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimer.cpp:279
#53 0x00007a6692fa2ef9 in QObject::event (this=0x574ad80a1278, e=0x7ffcb4ad14a0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1393
#54 0x00007a66942ff0ca in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x574ad80a1278, e=0x7ffcb4ad14a0) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3296
#55 0x00007a6692f55b00 in QCoreApplication::notifyInternal2 (receiver=0x574ad80a1278, event=0x7ffcb4ad14a0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1172
#56 0x00007a66930d5aff in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x7ffcb4ad14a0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1612
#57 QTimerInfoList::activateTimers (this=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimerinfo_unix.cpp:426
#58 0x00007a66930de408 in QEventDispatcherUNIXPrivate::activateTimers (this=0x574ad7bf60e0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:199
#59 QEventDispatcherUNIX::processEvents (this=<optimized out>, flags=..., flags@entry=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:475
#60 0x00007a6693c61d93 in QUnixEventDispatcherQPA::processEvents (this=<optimized out>, flags=...) at /usr/src/debug/qt6-base/qtbase/src/gui/platform/unix/qunixeventdispatcher.cpp:27
#61 0x00007a6692f606a6 in QEventLoop::processEvents (this=0x7ffcb4ad16a0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:103
#62 QEventLoop::exec (this=0x7ffcb4ad16a0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:185
#63 0x00007a6692f591d6 in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qflags.h:74
#64 0x00007a66942faf9a in QApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:2564
#65 0x0000574ab100a06e in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kwin/kwin-6.3.3.1/src/main_wayland.cpp:622
Comment 4 Nate Graham 2025-03-21 17:43:14 UTC
*** Bug 501779 has been marked as a duplicate of this bug. ***