| Summary: | 19c471405e7eb4b6026db24d776d205125dbc013 breaks the multi-monitor setup | ||
|---|---|---|---|
| Product: | [Plasma] kwin | Reporter: | Weng Xuetian <wengxt> |
| Component: | platform-drm | Assignee: | KWin default assignee <kwin-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | nate |
| Priority: | NOR | Keywords: | wayland-only |
| Version First Reported In: | git-stable-Plasma/5.24 | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/plasma/kwin/commit/516a00be28495a60eb37675ceb5d2f45c968d019 | Version Fixed/Implemented In: | 5.24 |
| Sentry Crash Report: | |||
|
Description
Weng Xuetian
2022-01-19 19:35:28 UTC
Full stack strace from crashed kwin_wayland.
#0 0x00007f369801fd22 in raise () at /usr/lib/libc.so.6
#1 0x00007f369800990e in abort () at /usr/lib/libc.so.6
#2 0x00007f36987dbee4 in qt_assert(char const*, char const*, int) () at /usr/lib/libQt5Core.so.5
#3 0x00007f36987dbf44 in qt_assert_x(char const*, char const*, char const*, int) () at /usr/lib/libQt5Core.so.5
#4 0x00007f3691edf3d0 in KWin::EglGbmBackend::beginFrame(KWin::AbstractOutput*) (this=0x55a25a5d59a0, drmOutput=0x55a25a836ce0) at /home/csslayer/Develop/kwin/src/backends/drm/egl_gbm_backend.cpp:524
#5 0x00007f3691ee12f8 in KWin::EglGbmBackend::renderTestFrame(KWin::DrmAbstractOutput*) (this=0x55a25a5d59a0, output=0x55a25a836ce0) at /home/csslayer/Develop/kwin/src/backends/drm/egl_gbm_backend.cpp:770
#6 0x00007f3691ed4693 in KWin::DrmPipeline::checkTestBuffer() (this=0x55a25a6891b0) at /home/csslayer/Develop/kwin/src/backends/drm/drm_pipeline.cpp:323
#7 0x00007f3691ed2dea in KWin::DrmPipeline::commitPipelinesAtomic(QVector<KWin::DrmPipeline*> const&, KWin::DrmPipeline::CommitMode, QVector<KWin::DrmObject*> const&)
(pipelines=..., mode=KWin::DrmPipeline::CommitMode::Test, unusedObjects=...) at /home/csslayer/Develop/kwin/src/backends/drm/drm_pipeline.cpp:131
#8 0x00007f3691ed2ae9 in KWin::DrmPipeline::commitPipelines(QVector<KWin::DrmPipeline*> const&, KWin::DrmPipeline::CommitMode, QVector<KWin::DrmObject*> const&)
(pipelines=..., mode=KWin::DrmPipeline::CommitMode::Test, unusedObjects=...) at /home/csslayer/Develop/kwin/src/backends/drm/drm_pipeline.cpp:103
#9 0x00007f3691ec1253 in KWin::DrmGpu::testPipelines() (this=0x55a25a532cd0) at /home/csslayer/Develop/kwin/src/backends/drm/drm_gpu.cpp:427
#10 0x00007f3691ec098a in KWin::DrmGpu::checkCrtcAssignment(QVector<KWin::DrmConnector*>, QVector<KWin::DrmCrtc*>) (this=0x55a25a532cd0, connectors=..., crtcs=...)
at /home/csslayer/Develop/kwin/src/backends/drm/drm_gpu.cpp:338
#11 0x00007f3691ec0c59 in KWin::DrmGpu::checkCrtcAssignment(QVector<KWin::DrmConnector*>, QVector<KWin::DrmCrtc*>) (this=0x55a25a532cd0, connectors=..., crtcs=...)
at /home/csslayer/Develop/kwin/src/backends/drm/drm_gpu.cpp:365
#12 0x00007f3691ec0daa in operator()() const (__closure=0x7ffdfc4e63d0) at /home/csslayer/Develop/kwin/src/backends/drm/drm_gpu.cpp:398
#13 0x00007f3691ec1031 in KWin::DrmGpu::testPendingConfiguration(KWin::DrmGpu::TestMode) (this=0x55a25a532cd0, mode=KWin::DrmGpu::TestMode::TestWithCrtcReallocation)
at /home/csslayer/Develop/kwin/src/backends/drm/drm_gpu.cpp:403
#14 0x00007f3691e98113 in KWin::DrmBackend::applyOutputChanges(KWin::WaylandOutputConfig const&) (this=0x55a25a46b690, config=...) at /home/csslayer/Develop/kwin/src/backends/drm/drm_backend.cpp:628
#15 0x00007f369abca146 in KWin::Platform::requestOutputsChange(KWaylandServer::OutputConfigurationV2Interface*) (this=0x55a25a46b690, config=0x55a25b3c42e0) at /home/csslayer/Develop/kwin/src/platform.cpp:133
#16 0x00007f369acb2c16 in operator()(KWaylandServer::OutputConfigurationV2Interface*) const (__closure=0x55a25a4680e0, config=0x55a25b3c42e0) at /home/csslayer/Develop/kwin/src/wayland_server.cpp:501
#17 0x00007f369acb81e6 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<KWaylandServer::OutputConfigurationV2Interface*>, void, KWin::WaylandServer::init(KWin::WaylandServer::InitializationFlags)::<lambda(KWaylandServer::OutputConfigurationV2Interface*)> >::call(struct {...} &, void **) (f=..., arg=0x7ffdfc4e67b0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:146
#18 0x00007f369acb7c44 in QtPrivate::Functor<KWin::WaylandServer::init(KWin::WaylandServer::InitializationFlags)::<lambda(KWaylandServer::OutputConfigurationV2Interface*)>, 1>::call<QtPrivate::List<KWaylandServer::OutputConfigurationV2Interface*>, void>(struct {...} &, void *, void **) (f=..., arg=0x7ffdfc4e67b0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:256
#19 0x00007f369acb710d in QtPrivate::QFunctorSlotObject<KWin::WaylandServer::init(KWin::WaylandServer::InitializationFlags)::<lambda(KWaylandServer::OutputConfigurationV2Interface*)>, 1, QtPrivate::List<KWaylandServer::OutputConfigurationV2Interface*>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x55a25a4680d0, r=0x55a25a3dfae0, a=0x7ffdfc4e67b0, ret=0x0)
at /usr/include/qt/QtCore/qobjectdefs_impl.h:443
#20 0x00007f36989f85d3 in () at /usr/lib/libQt5Core.so.5
#21 0x00007f369a71d2e4 in KWaylandServer::OutputManagementV2Interface::configurationChangeRequested(KWaylandServer::OutputConfigurationV2Interface*) () at /usr/lib/libKWaylandServer.so.5
#22 0x00007f369670fd4a in () at /usr/lib/libffi.so.8
#23 0x00007f369670f267 in () at /usr/lib/libffi.so.8
#24 0x00007f369791f323 in () at /usr/lib/libwayland-server.so.0
#25 0x00007f369791a5cc in () at /usr/lib/libwayland-server.so.0
#26 0x00007f369791d1ca in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0
#27 0x00007f369a735b7b in KWaylandServer::Display::dispatchEvents() () at /usr/lib/libKWaylandServer.so.5
#28 0x00007f36989f85d3 in () at /usr/lib/libQt5Core.so.5
#29 0x00007f36989fa294 in QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type, QSocketNotifier::QPrivateSignal) () at /usr/lib/libQt5Core.so.5
#30 0x00007f36989fa3df in QSocketNotifier::event(QEvent*) () at /usr/lib/libQt5Core.so.5
#31 0x00007f36994811a6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5
#32 0x00007f36989c79ba in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5
#33 0x00007f3698a11924 in QEventDispatcherUNIXPrivate::activateSocketNotifiers() () at /usr/lib/libQt5Core.so.5
#34 0x00007f3698a12895 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#35 0x000055a259c5feb2 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
#36 0x00007f36989bfbab in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#37 0x00007f36989cb3e7 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5
#38 0x000055a259ae9808 in main(int, char**) (argc=14, argv=0x7ffdfc4e75f8) at /home/csslayer/Develop/kwin/src/main_wayland.cpp:727
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/1913 Git commit e64f60ce086cf2983e44b2815922c9fdd73e5d2b by Weng Xuetian. Committed on 19/01/2022 at 23:46. Pushed by ngraham into branch 'master'. Fix force xrgb 8888 19c471405e7eb4b6026db24d776d205125dbc013 introduced a regression if there are two gbm backend and the backend fail to choose drm format. This fix does two things: 1. Current buffer format should not be reset after create new buffer, otherwise current.format may just be empty after resetOutput. 2. force xrgb 8888 need to be set on the primary backend. M +7 -1 src/backends/drm/egl_gbm_backend.cpp M +2 -0 src/backends/drm/egl_gbm_backend.h https://invent.kde.org/plasma/kwin/commit/e64f60ce086cf2983e44b2815922c9fdd73e5d2b Git commit 516a00be28495a60eb37675ceb5d2f45c968d019 by Nate Graham, on behalf of Weng Xuetian. Committed on 20/01/2022 at 15:14. Pushed by ngraham into branch 'Plasma/5.24'. Fix force xrgb 8888 19c471405e7eb4b6026db24d776d205125dbc013 introduced a regression if there are two gbm backend and the backend fail to choose drm format. This fix does two things: 1. Current buffer format should not be reset after create new buffer, otherwise current.format may just be empty after resetOutput. 2. force xrgb 8888 need to be set on the primary backend. (cherry picked from commit e64f60ce086cf2983e44b2815922c9fdd73e5d2b) M +7 -1 src/backends/drm/egl_gbm_backend.cpp M +2 -0 src/backends/drm/egl_gbm_backend.h https://invent.kde.org/plasma/kwin/commit/516a00be28495a60eb37675ceb5d2f45c968d019 |