| Summary: | kwin crashes after pressing alt-tab twice | ||
|---|---|---|---|
| Product: | [Plasma] kwin | Reporter: | hellmade <hellmade> |
| Component: | general | Assignee: | KWin default assignee <kwin-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | eliyahushapiro, kde, kdebugs, lamarque, matteomartelli3, michal.chochol, nate, nicolas.fella, qydwhotmail, seifert |
| Priority: | NOR | Keywords: | drkonqi |
| Version First Reported In: | 5.23.4 | ||
| Target Milestone: | --- | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
hellmade
2021-12-17 10:03:25 UTC
also: I'm on nvidia 470 drivers I have the same problema but with kwin_wayland. kwin_x11 works for me.
#0 0x00007f1f6f6eaad0 in QSGTexture::setFiltering(QSGTexture::Filtering) ()
from /usr/lib64/libQt5Quick.so.5
#1 0x00007f1f700dd5b0 in KWin::ThumbnailTextureProvider::setTexture(QSharedPointer<KWin::GLTexture> const&) () from /usr/lib64/libkwin.so.5
#2 0x00007f1f700dec73 in KWin::ThumbnailItemBase::updatePaintNode(QSGNode*, QQuickItem::UpdatePaintNodeData*) () from /usr/lib64/libkwin.so.5
#3 0x00007f1f6f7c0ba8 in QQuickWindowPrivate::updateDirtyNode(QQuickItem*)
() from /usr/lib64/libQt5Quick.so.5
#4 0x00007f1f6f7c115b in QQuickWindowPrivate::updateDirtyNodes() ()
from /usr/lib64/libQt5Quick.so.5
#5 0x00007f1f6f7c2d8c in QQuickWindowPrivate::syncSceneGraph() ()
from /usr/lib64/libQt5Quick.so.5
#6 0x00007f1f6f77ca88 in QSGSoftwareRenderLoop::renderWindow(QQuickWindow*, bool) () from /usr/lib64/libQt5Quick.so.5
#7 0x00007f1f6f7d1497 in QQuickWindow::event(QEvent*) ()
from /usr/lib64/libQt5Quick.so.5
#8 0x00007f1f6e833abf in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#9 0x00007f1f6dd3d1e8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#10 0x00007f1f6e17ee4c in QPlatformWindow::deliverUpdateRequest() ()
from /usr/lib64/libQt5Gui.so.5
#11 0x00007f1f6e17d3be in QPlatformWindow::windowEvent(QEvent*) ()
from /usr/lib64/libQt5Gui.so.5
#12 0x00007f1f6e83ae1e in QApplication::notify(QObject*, QEvent*) ()
from /usr/lib64/libQt5Widgets.so.5
#13 0x00007f1f6dd3d1e8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#14 0x00007f1f6dd93b9e in QTimerInfoList::activateTimers() ()
from /usr/lib64/libQt5Core.so.5
#15 0x00007f1f6dd91a6f in QEventDispatcherUNIX::processEvents(QFlags<QEventLo--Type <RET> for more, q to quit, c to continue without paging--
op::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#16 0x0000562822f3a6dd in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
#17 0x00007f1f6dd3b71b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#18 0x00007f1f6dd44470 in QCoreApplication::exec() ()
from /usr/lib64/libQt5Core.so.5
My laptop has two gpus: Intel HD Graphics 530 (/dev/card/card0) and Nvidia GeForce GTX 970M (/dev/dri/card1). m_window->openglContext() returns null inside ThumbnailTextureProvider::setTexture. That's probably explains why m_window->createTextureFromNativeObject() also returns null. The point is why the OpenGL context is null there. Maybe it is related to the fact that there are two gpus involved?
I forgot to say that kwin_x11 uses the nvidia gpu and kwin_wayland uses the intel gpu to renter. I have done a quick test and "QT_LOGGING_RULES=qt.scenegraph.*=true" shows that qmlscene uses the nvidia gpu in my wayland session. I should be using the intel gpu. kwin_wayland still crashes and kwin_x11 still works even when I disabled the nvidia drivers and uses the intel gpu only. got a work around: I went to: System Control / window behavior / App Switcher (sorry, just have the german version and hope my translations match) In Display I deselected the switcher App or chagend it to big symbols and the crashing went away. I played a bit with this config and found out that the Breeze options do crash as well as preview images The other options I tested work fine. > shows that qmlscene uses the nvidia gpu in my wayland session That's really strange. Both kwin and qt should use the same render device. > pressing ALT-TAB twice before the switching app is loaded will crash kwin and switch off composer Just to clarify, should alt-tab be pressed twice before the task switcher window is shown? (In reply to Vlad Zahorodnii from comment #6) > > shows that qmlscene uses the nvidia gpu in my wayland session > That's really strange. Both kwin and qt should use the same render device. I think that was because I was using nvidia-drivers-495.46 (this one uses gbm). I downgraded to nvidia-drivers-470.94, which seems a bit more stable and qmlscene shows it is using the Intel gpu. > > pressing ALT-TAB twice before the switching app is loaded will crash kwin and switch off composer > Just to clarify, should alt-tab be pressed twice before the task switcher > window is shown? I created this video to show that happens: https://photos.app.goo.gl/pEbGALMLLDkyZ7Zs9 Just one Alt+Tab is enough to crash kwin_wayland in my case. kwin_wayland restarts after the crash (ps shows there is a new kwin_wayland instance with different pid), but it get stuck somehow. The gray window that appears three times at the end of the video is me pressing Alt+Tab three times. It seems it tries to render the thumbnail switcher, kwin_wayland does not crash this time, but also does not render anything besides that window. I have to 'killall kwayland' to get a new login screen in sddm. kwin_x11 also has this problem in my laptop when compositing is enabled. It was disabled when I first tested, so I could not reproduce the problem. So both kwin_x11 and kwin_wayland have this problem for me. The difference is that kwin_x11 does not crash, it just disables compositing when the problem happens ('qdbus org.kde.KWin /Compositor org.kde.kwin.Compositing.active' returns false). I have the re-enable compositing through systemsettings, using 'qdbus org.kde.KWin /Compositor org.kde.kwin.Compositing.resume' does not work.
(In reply to hellmade from comment #5) > got a work around: > I went to: System Control / window behavior / App Switcher > (sorry, just have the german version and hope my translations match) > > In Display I deselected the switcher App or chagend it to big symbols and > the crashing went away. > I played a bit with this config and found out that the Breeze options do > crash as well as preview images > The other options I tested work fine. Same issue here and your work around works for me too. To be more specific I can reproduce the issue with these visualization effects: Breeze, Grid, Thumbnail Grid, Thumbnails. With the other effects the Task Switcher works fine. What those effects have in common is that they display the content of the task window, so I guess the problem is there. Also, the issue can't be reproduced with the compositor disabled because in that case those visualization effects just display the task icon instead of the window content, as the other visualization effects do. (In reply to matteomartelli3 from comment #9) > (In reply to hellmade from comment #5) > > got a work around: > > I went to: System Control / window behavior / App Switcher > > (sorry, just have the german version and hope my translations match) > > > > In Display I deselected the switcher App or chagend it to big symbols and > > the crashing went away. > > I played a bit with this config and found out that the Breeze options do > > crash as well as preview images > > The other options I tested work fine. > > Same issue here and your work around works for me too. > To be more specific I can reproduce the issue with these visualization > effects: Breeze, Grid, Thumbnail Grid, Thumbnails. With the other effects > the Task Switcher works fine. What those effects have in common is that they > display the content of the task window, so I guess the problem is there. > Also, the issue can't be reproduced with the compositor disabled because in > that case those visualization effects just display the task icon instead of > the window content, as the other visualization effects do. My system settings are: Distro: Arch Linux KDE Plasma Version: 5.23.5 KDE Frameworks Version: 5.90.0 Qt Version: 5.15.2 Kernel version: 5.16.1-arch-1 (64-bit) Graphics: X11, NVIDIA GeForce GTX 1060 with drivers nvidia 495.46 Processors: Intel Core i7-6700K Memory: 16GB of RAM *** Bug 445251 has been marked as a duplicate of this bug. *** Got a crash after trying to open Overview effect, but cannot reproduce again after kwin_x11 was restarted.
(gdb) bt
#0 __GI___pthread_sigmask (how=1, newmask=<optimized out>, oldmask=0x0) at pthread_sigmask.c:43
#1 0x00007fbaef5edb2d in __GI___sigprocmask (how=<optimized out>, set=<optimized out>, oset=<optimized out>) at ../sysdeps/unix/sysv/linux/sigprocmask.c:25
#2 0x00007fbaf2fe788b in KCrash::setCrashHandler(void (*)(int)) (handler=handler@entry=0x0) at /usr/src/debug/kcrash-5.99.0git.20220917T130720~d2f3085-ku.2.2.x86_64/src/kcrash.cpp:415
#3 0x00007fbaf2fe9da6 in KCrash::defaultCrashHandler(int) (sig=11) at /usr/src/debug/kcrash-5.99.0git.20220917T130720~d2f3085-ku.2.2.x86_64/src/kcrash.cpp:632
#4 0x00007fbaef5ed910 in <signal handler called> () at /lib64/libc.so.6
#5 QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::operator->() const (this=0x8) at /usr/include/qt5/QtCore/qscopedpointer.h:116
#6 qGetPtrHelper<QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > >(QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >&) (ptr=...) at /usr/include/qt5/QtCore/qglobal.h:1143
#7 QSGTexture::d_func() (this=0x0) at /usr/src/debug/libqt5-qtdeclarative-5.15.5+kde19-ku.1.1.x86_64/src/quick/scenegraph/coreapi/qsgtexture.h:57
#8 QSGTexture::setFiltering(QSGTexture::Filtering) (this=0x0, filter=filter@entry=QSGTexture::Linear) at /usr/src/debug/libqt5-qtdeclarative-5.15.5+kde19-ku.1.1.x86_64/src/quick/scenegraph/coreapi/qsgtexture.cpp:576
#9 0x00007fbaf2bd4606 in KWin::ThumbnailTextureProvider::setTexture(std::shared_ptr<KWin::GLTexture> const&) (this=0x26f7560, nativeTexture=std::shared_ptr<KWin::GLTexture> (use count 2, weak count 0) = {...}) at /usr/include/c++/12/bits/unique_ptr.h:191
#10 0x00007fbaf2bd4d03 in KWin::WindowThumbnailItem::updatePaintNode(QSGNode*, QQuickItem::UpdatePaintNodeData*) (this=0x253ff60, oldNode=0x0) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/scripting/windowthumbnailitem.cpp:227
#11 0x00007fbaf25887c8 in QQuickWindowPrivate::updateDirtyNode(QQuickItem*) (this=0x16f6270, item=0x253ff60) at /usr/src/debug/libqt5-qtdeclarative-5.15.5+kde19-ku.1.1.x86_64/src/quick/items/qquickwindow.cpp:3871
#12 0x00007fbaf2588dcb in QQuickWindowPrivate::updateDirtyNodes() (this=this@entry=0x16f6270) at /usr/src/debug/libqt5-qtdeclarative-5.15.5+kde19-ku.1.1.x86_64/src/quick/items/qquickwindow.cpp:3616
#13 0x00007fbaf258a93d in QQuickWindowPrivate::syncSceneGraph() (this=0x16f6270) at /usr/src/debug/libqt5-qtdeclarative-5.15.5+kde19-ku.1.1.x86_64/src/quick/items/qquickwindow.cpp:523
#14 0x00007fbaf2615b49 in QQuickRenderControl::sync() (this=<optimized out>) at /usr/src/debug/libqt5-qtdeclarative-5.15.5+kde19-ku.1.1.x86_64/src/quick/items/qquickrendercontrol.cpp:297
#15 0x00007fbaf0781806 in KWin::OffscreenQuickView::update() (this=0x7fba941040f0) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/libkwineffects/kwinoffscreenquickview.cpp:296
#16 KWin::OffscreenQuickView::update() (this=this@entry=0x7fba941040f0) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/libkwineffects/kwinoffscreenquickview.cpp:261
#17 0x00007fbaf0783e00 in KWin::QuickSceneEffect::prePaintScreen(KWin::ScreenPrePaintData&, std::chrono::duration<long, std::ratio<1l, 1000l> >) (this=<optimized out>, data=<optimized out>, presentTime=...) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/libkwineffects/kwinquickeffect.cpp:313
#18 0x00007fbaf2b2b561 in KWin::EffectsHandlerImpl::prePaintScreen(KWin::ScreenPrePaintData&, std::chrono::duration<long, std::ratio<1l, 1000l> >) (this=0x13fbec0, data=<optimized out>, presentTime=...) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/effects.cpp:388
#19 0x00007fbaf2ba7d01 in KWin::Scene::prePaint(KWin::Output*) (this=0x13a33d0, output=<optimized out>) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/scene.cpp:291
#20 0x00007fbaf2aea53f in KWin::Compositor::prePaintPass(KWin::RenderLayer*) (this=this@entry=0x1051860, layer=layer@entry=0x13ea160) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/composite.cpp:682
#21 0x00007fbaf2aed88f in KWin::Compositor::composite(KWin::RenderLoop*) (this=0x1051860, renderLoop=0xfe2390) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/composite.cpp:626
#22 0x00007fbaf2aee1ab in KWin::X11Compositor::composite(KWin::RenderLoop*) (this=0x1051860, renderLoop=0xfe2390) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/composite.cpp:906
#23 0x00007fbaf123ce6f in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffe39135ac0, r=0x1051860, this=0x105cb90) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#24 doActivate<false>(QObject*, int, void**) (sender=0xfe2390, signal_index=5, argv=0x7ffe39135ac0) at kernel/qobject.cpp:3886
#25 0x00007fbaf123622f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=<optimized out>, m=m@entry=0x7fbaf2ee9440 <KWin::RenderLoop::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7ffe39135ac0) at kernel/qobject.cpp:3946
#26 0x00007fbaf2aa9952 in KWin::RenderLoop::frameRequested(KWin::RenderLoop*) (this=<optimized out>, _t1=<optimized out>) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/build/src/kwin_autogen/TAC5DWH4SE/moc_renderloop.cpp:206
#27 0x00007fbaf2af5603 in KWin::RenderLoopPrivate::dispatch() (this=0xfe13b0) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/core/renderloop.cpp:151
#28 0x00007fbaf123ce6f in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffe39135bc0, r=0xfe2390, this=0xfe2470) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#29 doActivate<false>(QObject*, int, void**) (sender=0xfe13c8, signal_index=3, argv=0x7ffe39135bc0) at kernel/qobject.cpp:3886
#30 0x00007fbaf123622f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=<optimized out>, m=m@entry=0x7fbaf14dd9a0 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffe39135bc0) at kernel/qobject.cpp:3946
#31 0x00007fbaf1240aca in QTimer::timeout(QTimer::QPrivateSignal) (this=<optimized out>, _t1=...) at .moc/moc_qtimer.cpp:205
#32 0x00007fbaf123157d in QObject::event(QEvent*) (this=0xfe13c8, e=0x7ffe39135d10) at kernel/qobject.cpp:1336
#33 0x00007fbaefe0d41e in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0xfe13c8, e=0x7ffe39135d10) at kernel/qapplication.cpp:3637
#34 0x00007fbaf1205fb8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0xfe13c8, event=0x7ffe39135d10) at kernel/qcoreapplication.cpp:1064
#35 0x00007fbaf125c851 in QTimerInfoList::activateTimers() (this=this@entry=0xd0f098) at kernel/qtimerinfo_unix.cpp:643
#36 0x00007fbaf125a08c in QEventDispatcherUNIXPrivate::activateTimers() (this=this@entry=0xd0f010) at kernel/qeventdispatcher_unix.cpp:249
#37 0x00007fbaf125ae30 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0xdd3ff0, flags=...) at kernel/qeventdispatcher_unix.cpp:516
#38 0x00007fbaeb83bbae in QXcbUnixEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0xdd3ff0, flags=...) at qxcbeventdispatcher.cpp:60
#39 0x00007fbaf1204a2b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffe39135eb0, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#40 0x00007fbaf120cb96 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#41 0x00007fbaf1659e0c in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1867
#42 0x00007fbaefe0d395 in QApplication::exec() () at kernel/qapplication.cpp:2829
#43 0x000000000043a1ed in main(int, char**) (argc=<optimized out>, argv=0x7ffe39136198) at /mnt/data/home/qydw/Develop/KDE/Plasma/kwin/src/main_x11.cpp:409
*** Bug 459799 has been marked as a duplicate of this bug. *** I can confirm, that disabling Breeze effect during switching windows with alt-tab solves the issue. This should be fixed in 5.26.0 *** Bug 460455 has been marked as a duplicate of this bug. *** (In reply to David Edmundson from comment #15) > This should be fixed in 5.26.0 https://bugs.kde.org/show_bug.cgi?id=460455 suggests otherwise fixed in 5.26.1 (In reply to andresdortiz from comment #18) > fixed in 5.26.1 NVM started happening again randomly (In reply to andresdortiz from comment #19) > (In reply to andresdortiz from comment #18) > > fixed in 5.26.1 > > NVM started happening again randomly so it seems to happen randomly, with some boots working while others don't something I noticed is when it's not working, I get a tray icon that says, "Software rendering in use, rendering may be degraded." *** Bug 461107 has been marked as a duplicate of this bug. *** Tested for a week without https://github.com/catsout/wallpaper-engine-kde-plugin, and I think I found the culprit. It seems the issue is that catsout wallpaper engine plugin randomly crashes when plasma locks the session and when unlocked it loads in a broken state without hardware rendering (as denoted by the tray icon saying software rendering is being used and performance may be degraded) this in turn causes the task switcher to crash. To fix I need to remove the wallpaper source form `~/.config/plasma-org.kde.plasma.desktop-appletsrc` and then click on the tray icon that mentions software rendering and set it to hardware. The next time I start KDE, all is well, and I can set up wallper-engine again though it will cause the same breakage randomly when kde locks the session. Reported the issue here https://github.com/catsout/wallpaper-engine-kde-plugin sorry here is the link to the bug report https://github.com/catsout/wallpaper-engine-kde-plugin/issues/244 |