https://bugs.kde.org/show_bug.cgi?id=478476
Bug ID: 478476 Summary: Output removal ("remove screen") does not work (Wayland, Plasma 6) Classification: Plasma Product: kwin Version: git master Platform: Other OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: platform-drm Assignee: kwin-bugs-n...@kde.org Reporter: stefan.hoffmeis...@econos.de Target Milestone: --- SUMMARY When removing a previously added (virtual) screen from the system, the udev change event is received, but is not processed correctly. The result is that kwin retains the removed output, operates on it, which causes all sorts of (not very) funny behaviour. I cannot tell whether this is specific to VMware Workstation in legacy mode (i.e. not atomic mode-setting); right now, and from the code, it seems as if this may be generally applicable. I do not have a setup which allows me to conveniently test that, though. STEPS TO REPRODUCE 0. have hardware with at least two physical screens attached 1. install Fedora Rawhide (40) + KDE Plasma 6 git master into VMware Workstation 2. switch VMware Workstation into fullscreen mode (that will _later_ allow adding additional screens) 3. boot 4. log into (fullscreen) Plasma 6 Wayland session // cool 5. in VMware Workstation "Cycle multiple monitors" - this adds a new virtual monitor, new output, new window on host // cool - this works fine 6. in VMware Workstation "Cycle multiple monitors" - this _removes_ the previously added virtual monitor/output OBSERVED RESULT * kscreen-doctor and vmwgfx agree that only one monitor/output remains connected * host window for _second_ monitor/output remains on host screen * journalctl shows logs with errors (note that this is from a local build with richer logging) ``` Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Received udev event KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6?|QSocketNotifier::activated|QSocketNotifier::event|QApplicationPrivate::notify_helper Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: udev event: "change" "/dev/dri/card0" KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6?|QSocketNotifier::activated|QSocketNotifier::event|QApplicationPrivate::notify_helper Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Received change event for monitored drm device "/dev/dri/card0" KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6?|QSocketNotifier::activated|QSocketNotifier::event|QApplicationPrivate::notify_helper Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Adding outputs ?libkwin.so.6?|KWin::DrmBackend::updateOutputs|KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6?|QSocketNotifier::activated Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Could not find edid for connector DrmConnector(id=38, gpu=KWin::DrmGpu(0x6fd1a0), name="Virtual-1-unknown", connection="Connected", countMode=25) ?libkwin.so.6?|?libkwin.so.6?|KWin::DrmBackend::updateOutputs|KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Connection on "Virtual-1-unknown" is in state 1 ?libkwin.so.6?|?libkwin.so.6?|KWin::DrmBackend::updateOutputs|KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: updateProperties: modes equal is true ?libkwin.so.6?|?libkwin.so.6?|KWin::DrmBackend::updateOutputs|KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Connection on "Virtual-2-unknown" is in state 2 ?libkwin.so.6?|?libkwin.so.6?|KWin::DrmBackend::updateOutputs|KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: updateProperties: mode change detected on "Virtual-2-unknown" for mode index 0 towards 1280 800 ?libkwin.so.6?|?libkwin.so.6?|KWin::DrmBackend::updateOutputs|KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: updateProperties: modes equal is false ?libkwin.so.6?|?libkwin.so.6?|KWin::DrmBackend::updateOutputs|KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: DrmPipeline::legacyModeset ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: DrmLegacyCommit::doModeset on "/dev/dri/card0" "Virtual-1" connected true ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Setting legacy dpms failed! Invalid argument ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: DrmPipeline::legacyModeset ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: DrmLegacyCommit::doModeset on "/dev/dri/card0" "Virtual-1" connected true ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: DrmPipeline::legacyModeset ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: DrmLegacyCommit::doModeset on "/dev/dri/card0" "Virtual-2" connected false ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: drmModeSetCrtc failed: Invalid argument ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Modeset failed! Invalid argument ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Failed to revert pipeline: (2) ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Failed to commit pipelines: (2) ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6? Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Setting changed mode failed! ?libkwin.so.6?|?libkwin.so.6?|?libkwin.so.6?|KWin::DrmBackend::updateOutputs|KWin::DrmBackend::handleUdevEvent Dec 13 15:12:30 fedora kwin_wayland[8451]: kwin_wayland_drm: Connection on "Virtual-3-unknown" is in state 2 ?libkwin.so.6?|?libkwin.so.6?|KWin::DrmBackend::updateOutputs|KWin::DrmBackend::handleUdevEvent|?libQt6Core.so.6? ``` EXPECTED RESULT * kscreen-doctor and vmwgfx agree that only one monitor/output remains connected * host window for _second_ monitor/output disappears from host screen * no warnings in journalctl output ADDITIONAL INFORMATION In the logs, note the warnings from trying to modeset on the disappeared output. I have also logging around which should trigger on proper removal of the output inside kwin, but those logs don't appear - so the removed (disconnected) output is still retained by kwin. Try cycling through multiple monitors often enough and additional funny effects appear: the mouse cursor gets fenced in very strange ways, but drawing remains stable. -- You are receiving this mail because: You are watching all bug changes.