Bug 474933 - kwin_wayland crashes in KWin::GLFramebuffer::GLFramebuffer
Summary: kwin_wayland crashes in KWin::GLFramebuffer::GLFramebuffer
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: general (other bugs)
Version First Reported In: master
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: qt6
Depends on:
Blocks:
 
Reported: 2023-09-27 11:58 UTC by Nicolas Fella
Modified: 2023-11-22 10:13 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nicolas Fella 2023-09-27 11:58:48 UTC
While doing nothing in particular

#0  KWin::GLTexture::size() const (this=this@entry=0x0) at /usr/include/c++/13/bits/unique_ptr.h:199
#1  0x00007fe9b4bc3fc0 in KWin::GLFramebuffer::GLFramebuffer(KWin::GLTexture*, KWin::GLFramebuffer::Attachment)
    (this=0x1dad1b0, colorAttachment=0x0, attachment=KWin::GLFramebuffer::NoAttachment) at /home/nico/kde/src/kwin/src/libkwineffects/glframebuffer.cpp:109
#2  0x00007fe9b4906c3f in std::make_unique<KWin::GLFramebuffer, KWin::GLTexture*>(KWin::GLTexture*&&) () at /usr/include/c++/13/bits/unique_ptr.h:1069
#3  KWin::EglSwapchainSlot::EglSwapchainSlot(KWin::EglContext*, KWin::GraphicsBuffer*) (this=0x2f9a480, context=<optimized out>, buffer=<optimized out>)
    at /home/nico/kde/src/kwin/src/platformsupport/scenes/opengl/eglswapchain.cpp:27
#4  0x00007fe9b4906e29 in std::_Construct<KWin::EglSwapchainSlot, KWin::EglContext*&, KWin::GraphicsBuffer*&>(KWin::EglSwapchainSlot*, KWin::EglContext*&, KWin::GraphicsBuffer*&) (__p=0x2f9a480) at /usr/include/c++/13/bits/stl_construct.h:109
#5  std::allocator_traits<std::allocator<void> >::construct<KWin::EglSwapchainSlot, KWin::EglContext*&, KWin::GraphicsBuffer*&>(std::allocator<void>&, KWin::EglSwapchainSlot*, KWin::EglContext*&, KWin::GraphicsBuffer*&) (__p=0x2f9a480) at /usr/include/c++/13/bits/alloc_traits.h:660
#6  std::_Sp_counted_ptr_inplace<KWin::EglSwapchainSlot, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<KWin::EglContext*&, KWin::GraphicsBuffer*&>(std::allocator<void>, KWin::EglContext*&, KWin::GraphicsBuffer*&) (__a=..., this=0x2f9a470) at /usr/include/c++/13/bits/shared_ptr_base.h:604
#7  std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<KWin::EglSwapchainSlot, std::allocator<void>, KWin::EglContext*&, KWin::GraphicsBuffer*&>(KWin::EglSwapchainSlot*&, std::_Sp_alloc_shared_tag<std::allocator<void> >, KWin::EglContext*&, KWin::GraphicsBuffer*&) (__a=..., __p=<optimized out>, this=<optimized out>)
    at /usr/include/c++/13/bits/shared_ptr_base.h:971
#8  std::__shared_ptr<KWin::EglSwapchainSlot, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<void>, KWin::EglContext*&, KWin::GraphicsBuffer*&>(std::_Sp_alloc_shared_tag<std::allocator<void> >, KWin::EglContext*&, KWin::GraphicsBuffer*&) (__tag=..., this=<optimized out>) at /usr/include/c++/13/bits/shared_ptr_base.h:1712
#9  std::shared_ptr<KWin::EglSwapchainSlot>::shared_ptr<std::allocator<void>, KWin::EglContext*&, KWin::GraphicsBuffer*&>(std::_Sp_alloc_shared_tag<std::allocator<void> >, KWin::EglContext*&, KWin::GraphicsBuffer*&) (__tag=..., this=<optimized out>) at /usr/include/c++/13/bits/shared_ptr.h:464
#10 std::make_shared<KWin::EglSwapchainSlot, KWin::EglContext*&, KWin::GraphicsBuffer*&>(KWin::EglContext*&, KWin::GraphicsBuffer*&) ()
    at /usr/include/c++/13/bits/shared_ptr.h:1010
#11 KWin::EglSwapchain::create(KWin::GraphicsBufferAllocator*, KWin::EglContext*, QSize const&, unsigned int, QList<unsigned long> const&)
    (allocator=0x144da90, context=context@entry=0x2bb2070, size=..., format=format@entry=808665665, modifiers=...)
    at /home/nico/kde/src/kwin/src/platformsupport/scenes/opengl/eglswapchain.cpp:139
#12 0x00007fe9b48a3090 in KWin::EglGbmLayerSurface::createGbmSwapchain(KWin::DrmGpu*, KWin::EglContext*, QSize const&, unsigned int, QList<unsigned long> const&, bool) const (this=this@entry=0x3a59d08, gpu=0x128abf0, context=context@entry=0x2bb2070, size=..., format=format@entry=808665665, modifiers=..., preferLinear=false)
    at /home/nico/kde/src/kwin/src/backends/drm/drm_egl_layer_surface.cpp:382
#13 0x00007fe9b48a4c5f in KWin::EglGbmLayerSurface::createSurface(QSize const&, unsigned int, QList<unsigned long> const&, KWin::EglGbmLayerSurface::MultiGpuImportMode) const (this=0x3a59d08, size=..., format=<optimized out>, modifiers=..., importMode=importMode@entry=KWin::EglGbmLayerSurface::MultiGpuImportMode::None)
    at /home/nico/kde/src/kwin/src/backends/drm/drm_egl_layer_surface.cpp:340
#14 0x00007fe9b48a5ac3 in operator()(QVector const&, KWin::EglGbmLayerSurface::MultiGpuImportMode) const
    (__closure=0x7ffcf18852e0, gbmFormats=..., importMode=importMode@entry=KWin::EglGbmLayerSurface::MultiGpuImportMode::None)
    at /home/nico/kde/usr/include/QtCore/qarraydatapointer.h:413
#15 0x00007fe9b48a5f4a in operator()(QVector&) const (__closure=__closure@entry=0x7ffcf1885300, formats=...)
    at /home/nico/kde/src/kwin/src/backends/drm/drm_egl_layer_surface.cpp:276
#16 0x00007fe9b48a64c5 in KWin::EglGbmLayerSurface::createSurface(QSize const&, QMap<unsigned int, QList<unsigned long> > const&) const
    (this=this@entry=0x3a59d08, size=..., formats=...) at /home/nico/kde/src/kwin/src/backends/drm/drm_egl_layer_surface.cpp:296
#17 0x00007fe9b48a6920 in KWin::EglGbmLayerSurface::checkSurface(QSize const&, QMap<unsigned int, QList<unsigned long> > const&)
    (this=this@entry=0x3a59d08, size=..., formats=...) at /home/nico/kde/src/kwin/src/backends/drm/drm_egl_layer_surface.cpp:218
#18 0x00007fe9b48a758a in KWin::EglGbmLayerSurface::renderTestBuffer(QSize const&, QMap<unsigned int, QList<unsigned long> > const&)
--Type <RET> for more, q to quit, c to continue without paging--c
    (this=this@entry=0x3a59d08, bufferSize=..., formats=...) at /home/nico/kde/src/kwin/src/backends/drm/drm_egl_layer_surface.cpp:202
#19 0x00007fe9b489f12d in KWin::EglGbmLayer::checkTestBuffer() (this=0x3a59c90) at /home/nico/kde/src/kwin/src/backends/drm/drm_egl_layer.cpp:79
#20 0x00007fe9b48bd2d7 in KWin::DrmPipeline::prepareAtomicPresentation(KWin::DrmAtomicCommit*) (this=this@entry=0x160d8d0, commit=commit@entry=0x1b0ad70)
    at /home/nico/kde/src/kwin/src/backends/drm/drm_pipeline.cpp:229
#21 0x00007fe9b48bda4d in KWin::DrmPipeline::updateCursor() (this=0x160d8d0) at /home/nico/kde/src/kwin/src/backends/drm/drm_pipeline.cpp:380
#22 0x00007fe9b4665d39 in operator() (__closure=<synthetic pointer>) at /home/nico/kde/src/kwin/src/compositor_wayland.cpp:316
#23 operator()() const (__closure=__closure@entry=0x7ffcf1885d00) at /home/nico/kde/src/kwin/src/compositor_wayland.cpp:318
#24 0x00007fe9b4665fb3 in KWin::WaylandCompositor::addOutput(KWin::Output*) (this=this@entry=0x1556e60, output=0x1820250)
    at /home/nico/kde/src/kwin/src/compositor_wayland.cpp:352
#25 0x00007fe9b46663b8 in KWin::WaylandCompositor::start() (this=0x1556e60) at /home/nico/kde/src/kwin/src/compositor_wayland.cpp:187
#26 0x00007fe9b4662ba8 in KWin::Compositor::reinitialize() (this=0x1556e60) at /home/nico/kde/src/kwin/src/compositor.cpp:132
#27 KWin::Compositor::composite(KWin::RenderLoop*) (this=0x1556e60, renderLoop=<optimized out>) at /home/nico/kde/src/kwin/src/compositor.cpp:153
#28 0x00007fe9b13b5f03 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffcf18860c0, r=0x1556e60, this=0x1992080)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:433
#29 doActivate<false>(QObject*, int, void**) (sender=0x1964d80, signal_index=5, argv=0x7ffcf18860c0)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qobject.cpp:4021
#30 0x00007fe9b13adc4f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=<optimized out>, m=m@entry=0x7fe9b4b4dc40 <KWin::RenderLoop::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x7ffcf18860c0) at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qobject.cpp:4081
#31 0x00007fe9b467b5a2 in KWin::RenderLoop::frameRequested(KWin::RenderLoop*) (this=<optimized out>, _t1=<optimized out>)
    at /home/nico/kde/build/kwin/src/kwin_autogen/include/moc_renderloop.cpp:302
#32 0x00007fe9b467b883 in KWin::RenderLoopPrivate::dispatch() (this=0x19660d0) at /home/nico/kde/src/kwin/src/core/renderloop.cpp:164
#33 0x00007fe9b13b5f03 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffcf18861c0, r=0x1964d80, this=0x1962e50)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qobjectdefs_impl.h:433
#34 doActivate<false>(QObject*, int, void**) (sender=0x19660e8, signal_index=3, argv=0x7ffcf18861c0)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qobject.cpp:4021
#35 0x00007fe9b13adc4f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=<optimized out>, m=m@entry=0x7fe9b180b160 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffcf18861c0)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qobject.cpp:4081
#36 0x00007fe9b13c3a5a in QTimer::timeout(QTimer::QPrivateSignal) (this=<optimized out>, _t1=...)
    at /home/nico/workspace/qt6/qtbase/src/corelib/Core_autogen/include/moc_qtimer.cpp:272
#37 0x00007fe9b13a67df in QObject::event(QEvent*) (this=0x19660e8, e=0x7ffcf1886310) at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qobject.cpp:1459
#38 0x00007fe9b277e951 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x19660e8, e=0x7ffcf1886310)
    at /home/nico/workspace/qt6/qtbase/src/widgets/kernel/qapplication.cpp:3295
#39 0x00007fe9b1359a78 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x19660e8, event=0x7ffcf1886310)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1119
#40 0x00007fe9b1359bf9 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=<optimized out>)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qcoreapplication.cpp:1537
#41 0x00007fe9b14ee101 in QTimerInfoList::activateTimers() (this=this@entry=0x1235c28) at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qtimerinfo_unix.cpp:507
#42 0x00007fe9b14e926c in QEventDispatcherUNIXPrivate::activateTimers() (this=this@entry=0x1235b50)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:213
#43 0x00007fe9b14eb21c in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...)
    at /home/nico/workspace/qt6/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp:482
#44 0x00007fe9b20aae6d in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=<optimized out>, flags=...)
    at /home/nico/workspace/qt6/qtbase/src/gui/platform/unix/qunixeventdispatcher.cpp:27
#45 0x00007fe9b136562b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffcf18864c0, flags=..., flags@entry=...)
    at /home/nico/workspace/qt6/qtbase/src/corelib/global/qflags.h:34
#46 0x00007fe9b1362032 in QCoreApplication::exec() () at /home/nico/workspace/qt6/qtbase/src/corelib/global/qflags.h:74
#47 0x00007fe9b1bb033c in QGuiApplication::exec() () at /home/nico/workspace/qt6/qtbase/src/gui/kernel/qguiapplication.cpp:1925
#48 0x00007fe9b277e8c5 in QApplication::exec() () at /home/nico/workspace/qt6/qtbase/src/widgets/kernel/qapplication.cpp:2574
#49 0x000000000043d4e7 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/nico/kde/src/kwin/src/main_wayland.cpp:611

SOFTWARE/OS VERSIONS
KDE Plasma Version: master
KDE Frameworks Version: master
Qt Version: 6.6

ADDITIONAL INFORMATION
kwin commit 99244efa3b64029df021ecf1c97cff6b5a8d5265
Comment 1 Bug Janitor Service 2023-09-27 15:47:48 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/4455
Comment 2 Zamundaaa 2023-09-27 17:39:10 UTC
Git commit d6bc5d9b14d8b7f5c7082aed3102b84c16148514 by Xaver Hugl.
Committed on 27/09/2023 at 19:31.
Pushed by zamundaaa into branch 'master'.

platformsupport/scenes/opengl: don't crash when importing a texture fails

M  +4    -2    src/platformsupport/scenes/opengl/eglswapchain.cpp

https://invent.kde.org/plasma/kwin/-/commit/d6bc5d9b14d8b7f5c7082aed3102b84c16148514