SUMMARY with the highly requested custom wayland modeline the feature actually works but there is a major bug when i started playing around with the modelines. you cannot create a custom modeline if you are already in one or kwin_wayland will crash STEPS TO REPRODUCE 1. create new custom modeline with kscreen-doctor 2. switch to the said new mode 3. try to create another custom modeline OBSERVED RESULT kwin crashes and plasma restarts EXPECTED RESULT the new mode should be created and nothing else should happen SOFTWARE/OS VERSIONS Linux/KDE Plasma: Rolling KDE Plasma Version: 6.6.0 KDE Frameworks Version: 6.23.0 Qt Version: 6.10.2 ADDITIONAL INFORMATION my display is a chimei innolux 0x1560 1080p144 eDP display which changes resolution using modification of only the first number of the H and V component so 1920 x x x 1080 x x x in the resolution component. it does not show any weirdness with the default modes except a quirk with AMDGPU showing fullaspect 60hz as 48hz
Thanks for the crash report. As the message at the top of the summary says, if something crashed, we need a backtrace of it so we can figure out what's going on. Can you please attach a backtrace of the crash using the coredumpctl command-line program, as detailed in https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports#Retrieving_a_backtrace_using_coredumpctl ? Thanks.
(In reply to TraceyC from comment #1) #0 0x00007f86744a7a2c in ?? () from /usr/lib/libc.so.6 #1 0x00007f867444d1a0 in raise () from /usr/lib/libc.so.6 #2 0x00007f8677c18e6c in KCrash::defaultCrashHandler(int) () from /usr/lib/libKF6Crash.so.6 #3 <signal handler called> #4 0x00007f8677770864 in ?? () from /usr/lib/libkwin.so.6 #5 0x00007f8677776abd in KWin::OutputDeviceV2Interface::updateModes() () from /usr/lib/libkwin.so.6 #6 0x00007f8674bd8f0f in ?? () from /usr/lib/libQt6Core.so.6 #7 0x00007f867739efd7 in KWin::BackendOutput::setState(KWin::BackendOutput::State const&) () from /usr/lib/libkwin.so.6 #8 0x00007f86776da5fa in KWin::DrmOutput::applyQueuedChanges(std::shared_ptr<KWin::OutputChangeSet> const&) () from /usr/lib/libkwin.so.6 #9 0x00007f867769f0b0 in KWin::DrmBackend::applyOutputChanges(KWin::OutputConfiguration const&) () from /usr/lib/libkwin.so.6 #10 0x00007f867762b6d2 in KWin::Workspace::applyOutputConfiguration(KWin::OutputConfiguration&) () from /usr/lib/libkwin.so.6 #11 0x00007f867778323f in ?? () from /usr/lib/libkwin.so.6 #12 0x00007f8673196ac6 in ?? () from /usr/lib/libffi.so.8 #13 0x00007f867319376b in ?? () from /usr/lib/libffi.so.8 #14 0x00007f867319606e in ffi_call () from /usr/lib/libffi.so.8 #15 0x00007f8675b15532 in ?? () from /usr/lib/libwayland-server.so.0 #16 0x00007f8675b1ad30 in ?? () from /usr/lib/libwayland-server.so.0 #17 0x00007f8675b19182 in wl_event_loop_dispatch () from /usr/lib/libwayland-server.so.0 #18 0x00007f867774d90a in KWin::Display::dispatchEvents() () from /usr/lib/libkwin.so.6 #19 0x00007f8674bd8f0f in ?? () from /usr/lib/libQt6Core.so.6 #20 0x00007f8674be39c0 in QSocketNotifier::event(QEvent*) () from /usr/lib/libQt6Core.so.6 #21 0x00007f8675d03380 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6 #22 0x00007f8674b6bf48 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6 #23 0x00007f8674d30039 in QEventDispatcherUNIXPrivate::activateSocketNotifiers() () from /usr/lib/libQt6Core.so.6 #24 0x00007f8674d30ae0 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6 #25 0x00007f8675933cf3 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Gui.so.6 #26 0x00007f8674b76cf6 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6 #27 0x00007f8674b709f1 in QCoreApplication::exec() () from /usr/lib/libQt6Core.so.6 #28 0x000055dcd95f98a0 in ?? () #29 0x00007f86744366c1 in ?? () from /usr/lib/libc.so.6 #30 0x00007f86744367f9 in __libc_start_main () from /usr/lib/libc.so.6 #31 0x000055dcd95ffda5 in ?? () i'd probably need debug symbols for this to be acceptable right?
(In reply to TraceyC from comment #1) > Thanks for the crash report. As the message at the top of the summary says, > if something crashed, we need a backtrace of it so we can figure out what's > going on. Can you please attach a backtrace of the crash using the > coredumpctl command-line program, as detailed in > https://community.kde.org/Guidelines_and_HOWTOs/Debugging/ > How_to_create_useful_crash_reports#Retrieving_a_backtrace_using_coredumpctl ? > > Thanks. #0 0x00007f1498ca7a2c in ?? () from /usr/lib/libc.so.6 #1 0x00007f1498c4d1a0 in raise () from /usr/lib/libc.so.6 #2 0x00007f149c47ee6c in KCrash::defaultCrashHandler(int) () from /usr/lib/libKF6Crash.so.6 #3 <signal handler called> #4 0x00007f149c170864 in QtPrivate::QExplicitlySharedDataPointerV2<QMapData<std::multimap<wl_client*, QtWaylandServer::kde_output_device_mode_v2::Resource*, std::less<wl_client*>, std::allocator<std::pair<wl_client* const, QtWaylandServer::kde_output_device_mode_v2::Resource*> > > > >::QExplicitlySharedDataPointerV2 (this=0x7ffe8bd3d468, other=...) at /usr/include/qt6/QtCore/qshareddata_impl.h:41 #5 QMultiMap<wl_client*, QtWaylandServer::kde_output_device_mode_v2::Resource*>::QMultiMap (this=0x7ffe8bd3d468) at /usr/include/qt6/QtCore/qmap.h:833 #6 QtWaylandServer::kde_output_device_mode_v2::resourceMap (this=<optimized out>) at /usr/src/debug/kwin/build/src/wayland/qwayland-server-kde-output-device-v2.h:290 #7 KWin::OutputDeviceModeV2InterfacePrivate::findResource (this=<optimized out>, output=0x5643bbb20e80) at /usr/src/debug/kwin/kwin-6.6.0/src/wayland/outputdevice_v2.cpp:1178 #8 KWin::OutputDeviceV2InterfacePrivate::sendCurrentMode (this=0x5643bb97f230, outputResource=0x5643bbb20e80) at /usr/src/debug/kwin/kwin-6.6.0/src/wayland/outputdevice_v2.cpp:444 #9 0x00007f149c176abd in KWin::OutputDeviceV2Interface::updateModes (this=0x5643bbcdca60) at /usr/include/c++/15.2.1/bits/unique_ptr.h:192 #10 0x00007f14993d8f0f in ?? () from /usr/lib/libQt6Core.so.6 #11 0x00007f149bd9efd7 in KWin::BackendOutput::setState (this=0x5643bafe7c60, state=...) at /usr/src/debug/kwin/kwin-6.6.0/src/core/backendoutput.cpp:389 #12 0x00007f149c0da5fa in KWin::DrmOutput::applyQueuedChanges (this=0x5643bafe7c60, props=...) at /usr/include/c++/15.2.1/optional:562 #13 0x00007f149c09f0b0 in KWin::DrmBackend::applyOutputChanges (this=0x5643bad4e550, config=...) at /usr/src/debug/kwin/kwin-6.6.0/src/backends/drm/drm_backend.cpp:417 #14 0x00007f149c02b6d2 in KWin::Workspace::applyOutputConfiguration (this=0x5643bb154670, config=...) at /usr/src/debug/kwin/kwin-6.6.0/src/workspace.cpp:532 #15 0x00007f149c18323f in KWin::OutputConfigurationV2Interface::kde_output_configuration_v2_apply ( this=0x5643bc3488f0, resource=<optimized out>) at /usr/src/debug/kwin/kwin-6.6.0/src/workspace.h:853 #16 0x00007f14979ceac6 in ?? () from /usr/lib/libffi.so.8 #17 0x00007f14979cb76b in ?? () from /usr/lib/libffi.so.8 #18 0x00007f14979ce06e in ffi_call () from /usr/lib/libffi.so.8 #19 0x00007f14990d3532 in ?? () from /usr/lib/libwayland-server.so.0 #20 0x00007f14990d8d30 in ?? () from /usr/lib/libwayland-server.so.0 #21 0x00007f14990d7182 in wl_event_loop_dispatch () from /usr/lib/libwayland-server.so.0 #22 0x00007f149c14d90a in KWin::Display::dispatchEvents (this=<optimized out>) at /usr/src/debug/kwin/kwin-6.6.0/src/wayland/display.cpp:137 #23 0x00007f14993d8f0f in ?? () from /usr/lib/libQt6Core.so.6 #24 0x00007f14993e39c0 in QSocketNotifier::event(QEvent*) () from /usr/lib/libQt6Core.so.6 #25 0x00007f149a503380 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt6Widgets.so.6 #26 0x00007f149936bf48 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt6Core.so.6 #27 0x00007f1499530039 in QEventDispatcherUNIXPrivate::activateSocketNotifiers() () from /usr/lib/libQt6Core.so.6 #28 0x00007f1499530ae0 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6 #29 0x00007f149a133cf3 in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Gui.so.6 #30 0x00007f1499376cf6 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt6Core.so.6 #31 0x00007f14993709f1 in QCoreApplication::exec() () from /usr/lib/libQt6Core.so.6 #32 0x00005643aa88c8a0 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kwin/kwin-6.6.0/src/main_wayland.cpp:641 OK, here is a more helpful coredump i compiled kwin with the arch build system and installed the debug symbols, this coredump takes place in a standalone kwin_wayland session
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/8908
Git commit 67f175bb959bb30b69ce4a989a7d9d5c599d6f62 by Vlad Zahorodnii. Committed on 02/03/2026 at 16:33. Pushed by vladz into branch 'master'. backends/drm: Fix crash in OutputDeviceV2Interface::updateModes() When the custom modes change, the corresponding OutputMode objects will be recreated. If the current mode is a custom mode, it will be gone too. DrmOutput::queueChanges() needs to ensure that the currentMode is still listed in the modes list, otherwise other kwin components can start hitting into an unexpected output state. For example, the OutputDeviceV2Interface expects that the current mode is guaranteed to be included in the BackendOutput::modes() list. M +22 -24 src/backends/drm/drm_output.cpp M +1 -2 src/backends/drm/drm_output.h https://invent.kde.org/plasma/kwin/-/commit/67f175bb959bb30b69ce4a989a7d9d5c599d6f62
Git commit ccc24cff10e3e7c350a95ac5be366a7af4d7edb0 by Vlad Zahorodnii. Committed on 02/03/2026 at 17:27. Pushed by vladz into branch 'Plasma/6.6'. backends/drm: Fix crash in OutputDeviceV2Interface::updateModes() When the custom modes change, the corresponding OutputMode objects will be recreated. If the current mode is a custom mode, it will be gone too. DrmOutput::queueChanges() needs to ensure that the currentMode is still listed in the modes list, otherwise other kwin components can start hitting into an unexpected output state. For example, the OutputDeviceV2Interface expects that the current mode is guaranteed to be included in the BackendOutput::modes() list. (cherry picked from commit 67f175bb959bb30b69ce4a989a7d9d5c599d6f62) Co-authored-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org> M +22 -24 src/backends/drm/drm_output.cpp M +1 -2 src/backends/drm/drm_output.h https://invent.kde.org/plasma/kwin/-/commit/ccc24cff10e3e7c350a95ac5be366a7af4d7edb0