Bug 477267 - wayland crash in KWin::GbmSurface::~GbmSurface
Summary: wayland crash in KWin::GbmSurface::~GbmSurface
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: platform-drm (show other bugs)
Version: 5.27.9
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-11-20 06:46 UTC by lauren n. liberda
Modified: 2024-07-19 13:23 UTC (History)
2 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description lauren n. liberda 2023-11-20 06:46:04 UTC
SUMMARY
***
NOTE: If you are reporting a crash, please try to attach a backtrace with debug symbols.
See https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports
***


STEPS TO REPRODUCE
unsure. happens when I'm away, becomes noticeable after unlocking screen

OBSERVED RESULT
```
Thread 1 "kwin_wayland" received signal SIGSEGV, Segmentation fault.
0x00007fb795fefd36 in KWin::GbmSurface::~GbmSurface (this=0x7fb78162b520, __in_chrg=<optimized out>) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_gbm_surface.cpp:40
40	/home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_gbm_surface.cpp: No such file or directory.

Thread 1 (LWP 3966 "kwin_wayland"):
#0  0x00007fb795fefd36 in KWin::GbmSurface::~GbmSurface (this=0x7fb78162b520, __in_chrg=<optimized out>) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_gbm_surface.cpp:40
#1  0x00007fb795de3f4a in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use (this=0x7fb78162b510) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:175
#2  std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use_cold (this=0x7fb78162b510) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:199
#3  0x00007fb795fdbb96 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x7fb78162b510) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:353
#4  std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=0x7fb7754c3a10, __in_chrg=<optimized out>) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:1071
#5  std::__shared_ptr<KWin::GbmSurface, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=0x7fb7754c3a08, __in_chrg=<optimized out>) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:1524
#6  std::shared_ptr<KWin::GbmSurface>::~shared_ptr (this=0x7fb7754c3a08, __in_chrg=<optimized out>) at /usr/include/c++/13.2.1/bits/shared_ptr.h:175
#7  KWin::GbmBuffer::~GbmBuffer (this=0x7fb7754c3990, __in_chrg=<optimized out>) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_buffer_gbm.cpp:108
#8  0x00007fb795febd42 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x7fb7754c3980) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:346
#9  std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x7fb7754c3980) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:317
#10 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:1071
#11 std::__shared_ptr<KWin::GbmBuffer, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=<optimized out>, __in_chrg=<optimized out>) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:1524
#12 std::__shared_ptr<KWin::GbmBuffer, (__gnu_cxx::_Lock_policy)2>::operator= (__r=..., this=0x7fb76c0f3870) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:1620
#13 std::shared_ptr<KWin::GbmBuffer>::operator= (__r=..., this=0x7fb76c0f3870) at /usr/include/c++/13.2.1/bits/shared_ptr.h:440
#14 KWin::EglGbmLayerSurface::Surface::operator= (this=0x7fb76c0f3848) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_egl_layer_surface.h:72
#15 KWin::EglGbmLayerSurface::destroyResources (this=this@entry=0x7fb76c0f3838) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_egl_layer_surface.cpp:65
#16 0x00007fb795febf5c in KWin::EglGbmLayerSurface::~EglGbmLayerSurface (this=0x7fb76c0f3838, __in_chrg=<optimized out>) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_egl_layer_surface.cpp:55
#17 0x00007fb795fe9f05 in KWin::EglGbmLayer::~EglGbmLayer (this=0x7fb76c0f3800, __in_chrg=<optimized out>) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_egl_layer.h:27
#18 0x00007fb79600856c in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=<optimized out>) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:346
#19 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=<optimized out>) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:317
#20 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator= (__r=..., this=0x7fb78443b390) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:1090
#21 std::__shared_ptr<KWin::DrmPipelineLayer, (__gnu_cxx::_Lock_policy)2>::operator= (this=0x7fb78443b388) at /usr/include/c++/13.2.1/bits/shared_ptr_base.h:1523
#22 std::shared_ptr<KWin::DrmPipelineLayer>::operator= (this=0x7fb78443b388) at /usr/include/c++/13.2.1/bits/shared_ptr.h:414
#23 KWin::DrmPipeline::State::operator= (this=0x7fb78443b318) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_pipeline.h:192
#24 KWin::DrmPipeline::commitPipelinesLegacy (pipelines=..., mode=mode@entry=KWin::DrmPipeline::CommitMode::TestAllowModeset) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_pipeline_legacy.cpp:84
#25 0x00007fb796005cff in KWin::DrmPipeline::commitPipelines (pipelines=..., mode=mode@entry=KWin::DrmPipeline::CommitMode::TestAllowModeset, unusedObjects=...) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_pipeline.cpp:93
#26 0x00007fb795ff5453 in KWin::DrmGpu::testPipelines (this=this@entry=0x7fb791b6ced0) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_gpu.cpp:463
#27 0x00007fb795ff6048 in KWin::DrmGpu::checkCrtcAssignment (this=this@entry=0x7fb791b6ced0, connectors=..., crtcs=...) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_gpu.cpp:368
#28 0x00007fb795ff6341 in KWin::DrmGpu::checkCrtcAssignment (this=this@entry=0x7fb791b6ced0, connectors=..., crtcs=...) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_gpu.cpp:403
#29 0x00007fb795ff641b in KWin::DrmGpu::checkCrtcAssignment (this=this@entry=0x7fb791b6ced0, connectors=..., crtcs=...) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_gpu.cpp:375
#30 0x00007fb795ff641b in KWin::DrmGpu::checkCrtcAssignment (this=this@entry=0x7fb791b6ced0, connectors=..., crtcs=...) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_gpu.cpp:375
#31 0x00007fb795ff6aff in KWin::DrmGpu::testPendingConfiguration (this=this@entry=0x7fb791b6ced0) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_gpu.cpp:440
#32 0x00007fb795ff741b in KWin::DrmGpu::updateOutputs (this=0x7fb791b6ced0) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_gpu.cpp:305
#33 0x00007fb795fd80b6 in KWin::DrmBackend::updateOutputs (this=this@entry=0x7fb79355f900) at /usr/include/c++/13.2.1/bits/unique_ptr.h:199
#34 0x00007fb795fd8d5f in KWin::DrmBackend::handleUdevEvent (this=<optimized out>) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/backends/drm/drm_backend.cpp:259
#35 0x00007fb79460ae1c in ?? () from /usr/lib/libQt5Core.so.5
#36 0x00007fb79460cb1b in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) () from /usr/lib/libQt5Core.so.5
#37 0x00007fb79460d0e0 in QSocketNotifier::event(QEvent*) () from /usr/lib/libQt5Core.so.5
#38 0x00007fb793d4c1d5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#39 0x00007fb7945ea774 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#40 0x00007fb79461e818 in QEventDispatcherUNIXPrivate::activateSocketNotifiers() () from /usr/lib/libQt5Core.so.5
#41 0x00007fb79461eaea in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#42 0x0000559daa0feecf in QUnixEventDispatcherQPA::processEvents () at qunixeventdispatcher.cpp:63
#43 0x00007fb7945e6321 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#44 0x00007fb7945eaf88 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#45 0x0000559daa01b001 in main (argc=<optimized out>, argv=<optimized out>) at /home/buildozer/aports/community/kwin/src/kwin-5.27.9/src/main_wayland.cpp:628
```

EXPECTED RESULT
no crash

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Alpine Linux edge
(available in About System)
KDE Plasma Version: 5.27.9
KDE Frameworks Version: 5.112.0
Qt Version: 5.15.10
mesa version: 23.1.9

ADDITIONAL INFORMATION
GPU: Nvidia GeForce GTX 1050 Ti
Comment 1 Zamundaaa 2024-07-19 13:23:47 UTC
The relevant code is gone in Plasma 6, so this issue should be gone as well. If you still experience a crash in this case, please make a new bug report about it