https://bugs.kde.org/show_bug.cgi?id=502591
Bug ID: 502591 Summary: Infinite Loop in KScreen When Changing Display Classification: Plasma Product: KScreen Version: 6.3.3 Platform: Arch Linux OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: common Assignee: kscreen-bugs-n...@kde.org Reporter: qq2496424...@gmail.com Target Milestone: --- --- ### Bug Report: Infinite Loop in KScreen When Changing Display Configuration via X11 Forwarding #### System Configuration: 1. **Windows Host** with two monitors in extended mode (`Win + P -> Extend`) 2. X11 server running on Windows via [X410](https://x410.dev/download/) with TCP X11 service enabled 3. Arch Linux guest accessed via SSH with X11 forwarding #### Steps to Reproduce: 1. On Windows host, set up dual monitors in extended mode 2. Install and run X410 with TCP X11 service 3. From Linux terminal: ```bash export DISPLAY=windowshostip:0.0 kstart5 startplasma-x11 ``` 4. Wait for KDE to display on Windows machine 5. Open two SSH terminals to Arch Linux: **Terminal 1:** ```bash kscreen-console monitor ``` *Observed behavior:* Infinite spam of identical output (see full output below) **Terminal 2:** ```bash journalctl -n 100 -f ``` *Observed behavior:* Infinite spam of identical error logs (see full output below) #### Trigger Condition: When changing display mode via `Win + P -> "Only one screen"` (disabling one monitor) #### Current Workaround: ```bash pkill -f kscreen_backend_launcher ``` (Process automatically restarts but bug reoccurs when changing display modes again) you can get very very very large same error log in tab 1 and tab2 ```bash ❯ kscreen-console monitor START: Requesting Config Received config. Took 37 milliseconds Remember to enable KSRandR or KSRandR11 in kdebugdialog Screen: maxSize: QSize(32768, 32768) minSize: QSize(0, 0) currentSize: QSize(5120, 1452) ----------------------------------------------------- Id: 62 Name: "default" Type: "Unknown" Connected: true Enabled: true Priority: 1 Rotation: KScreen::Output::None Pos: QPoint(0,0) MMSize: QSize(1355, 384) FollowPreferredMode: false Size: QSize(5120, 1452) Scale: 1 Clones: None Mode: "63" Preferred Mode: "63" Preferred modes: QList() Modes: "63" "" QSize(5120, 1452) 0 EDID Info: Unavailable Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) Priorities changed: QMap((62, KScreen::Output(62, "default", connected enabled priority 1, pos: QPoint(0,0), res: QSize(5120, 1452), modeId: "63", scale: 1, clone: no, rotation: KScreen::Output::None, followPreferredMode: false))) ..... Excessive repeated output of identical content ..... Generates thousands of identical lines per second ``` new ssh tab 2 and run ``` ❯ journalctl -n 100 -f Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: XRandR::setConfig Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Requested screen size is QSize(2560, 1380) Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Needed CRTCs: 1 Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Actions to perform: Priorities: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Change Screen Size: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Disable outputs: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Change outputs: true Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: QList(62) Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Enable outputs: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Error on logical size transformation! Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: RRSetCrtcConfig (change output) Output: 62 ( "default" ) CRTC: 61 Pos: QPoint(0,0) Mode: KScreen::Mode(Id: "362" , Size: QSize(2560, 1380) @ 0 ) Preferred: "362" Rotation: KScreen::Output::None Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Result: 0 timestamp: 50696718 Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: XRandROutput 62 update m_connected: 0 m_crtc XRandRCrtc(0x5c1035e84380) CRTC: 61 MODE: 362 Connection: 0 Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: RRSetOutputPrimary New priority: 1 Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: XRandR::setConfig done! Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: XRandR::setConfig Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Requested screen size is QSize(2560, 1380) Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Needed CRTCs: 1 Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Actions to perform: Priorities: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Change Screen Size: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Disable outputs: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Change outputs: true Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: QList(62) Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Enable outputs: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Error on logical size transformation! Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: RRSetCrtcConfig (change output) Output: 62 ( "default" ) CRTC: 61 Pos: QPoint(0,0) Mode: KScreen::Mode(Id: "362" , Size: QSize(2560, 1380) @ 0 ) Preferred: "362" Rotation: KScreen::Output::None Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Result: 0 timestamp: 50696718 Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: XRandROutput 62 update m_connected: 0 m_crtc XRandRCrtc(0x5c1035e84380) CRTC: 61 MODE: 362 Connection: 0 Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: RRSetOutputPrimary New priority: 1 Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: XRandR::setConfig done! Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: XRandR::setConfig Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Requested screen size is QSize(2560, 1380) Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Needed CRTCs: 1 Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Actions to perform: Priorities: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Change Screen Size: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Disable outputs: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Change outputs: true Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: QList(62) Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Enable outputs: false Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: Error on logical size transformation! Apr 09 13:53:22 archlinux kscreen_backend_launcher[4076]: kscreen.xrandr: RRSetCrtcConfig (change output) Output: 62 ( "default" ) CRTC: 61 Pos: QPoint(0,0) Mode: KScreen::Mode(Id: "362" , Size: QSize(2560, 1380) @ 0 ) Preferred: "362" Rotation: KScreen::Output::None ..... Excessive repeated output of identical content ..... Generates thousands of identical lines per second ``` #### Error Analysis: 1. The `kscreen_backend_launcher` enters an infinite loop when display configuration changes 2. Relevant code locations: - [xrandr.cpp#L179](https://github.com/KDE/libkscreen/blob/9dad2a26069644d4c42d280d830d42aba66390ef/backends/xrandr/xrandr.cpp#L179) - [xrandroutput.cpp#L451](https://github.com/KDE/libkscreen/blob/9dad2a26069644d4c42d280d830d42aba66390ef/backends/xrandr/xrandroutput.cpp#L451) #### Additional Notes: - (`sudo pacman -Syu`) do not resolve the issue --- ```bash ❯ kscreen-console json START: Requesting Config Received config. Took 4 milliseconds { "features": 11, "outputs": [ { "clones": [ ], "connected": true, "currentModeId": "63", "enabled": true, "followPreferredMode": false, "icon": "", "id": 62, "modes": [ { "id": "63", "name": "", "refreshRate": 0, "size": { "height": 1452, "width": 5120 } } ], "name": "default", "pos": { "x": 0, "y": 0 }, "preferredModes": [ ], "priority": 1, "replicationSource": 0, "rotation": 1, "scale": 1, "size": { "height": 1452, "width": 5120 }, "sizeMM": { "height": 384, "width": 1355 }, "type": 0 } ], "screen": { "currentSize": { "height": 1380, "width": 2560 }, "id": 0, "maxActiveOutputsCount": 1, "maxSize": { "height": 32768, "width": 32768 }, "minSize": { "height": 0, "width": 0 } }, "tabletModeAvailable": false, "tabletModeEngaged": false } ``` OBSERVED RESULT EXPECTED RESULT SOFTWARE/OS VERSIONS Windows: win11 macOS: no (available in the Info Center app, or by running `kinfo` in a terminal window) ❯ kinfo ─╯ Operating System: Arch Linux KDE Plasma Version: 6.3.3 KDE Frameworks Version: 6.11.0 Qt Version: 6.8.2 Kernel Version: 6.13.6-arch1-1 (64-bit) Graphics Platform: X11 Processors: 14 × Intel® Core™ i7-14700K Memory: 6.1 GiB of RAM Graphics Processor: llvmpipe -- You are receiving this mail because: You are watching all bug changes.