Massive UI locks

After some updates last month, I noticed massive UI lagging in KDE and Hyprland. Symptom are observed right after the start: when closing the app/window, the system freezes for a few seconds; new terminal windows pop up without a delay, though with visual lags. Kinda same with the right-click menu—everything freezes for a few moments when I click away. So far this is the case on KDE and Hyprland. Mango, Sway, and Gnome are working without any lags. Any hint on how to debug? Not seeing anything in dmesg besides pulseaudio (?) spam:
Code:
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2
hdac0: Command 0x20373100 timeout on address 2

Hyprland logs look clean too. Thought maybe a conflict in QT configs, but I haven't touched these in a while and am not seeing anything out of order.
 
charlie137 do you have the system set up to make a sound when you perform those actions? and are they using libcanberra to do it? If so, disable them. Canberra does not handle errors or unexpected situations well. I don't know what, if anything, is going wrong with your sound system, but you should probably use PipeWire to emulate PulseAudio instead of Pulse itself.
 
charlie137 do you have the system set up to make a sound when you perform those actions? and are they using libcanberra to do it? If so, disable them. Canberra does not handle errors or unexpected situations well. I don't know what, if anything, is going wrong with your sound system, but you should probably use PipeWire to emulate PulseAudio instead of Pulse itself.
Nope, not noticing any sounds on actions. Tried to drop pulseaudio but the ports i use depend on it in many cases.
 
I had the issue with Hyprland 0.54.0 but It's not there with 0.53.1. I don't know where to begin to debug so I went back to 0.53.1.
Yea hyprland was pretty unstable for me. I guess makes sense, they don't like non-linux stuff a lot—very toxic. Mango is much better and works great, tho it uses crappy DWL proto (at least right now).
 
I don't know what, if anything, is going wrong with your sound system, but you should probably use PipeWire to emulate PulseAudio instead of Pulse itself.
Maybe we'll need currently nonexistent Mk/Uses/pulseaudio.mk to switch dependencies between pulseaudio and alternatives (i.e., multimedia/pipewire with PULSEAUDIO option enabled by default) and all consumers (except the alternatives themselves to pick required components) to use it.
Otherwise, massive manual works should be forced on every upgrades.
 
charlie137 not whether you hear any sound, whether it is trying to play a sound.
Turn off any sounds in System Settings > Notifications
disabled sound notifications, but still same. with debug logging i see a bunch of this from plasmashell that spinning at 98% cpu (not seeing "Follow accent" or other strings in tracked configs)

Code:
qt.quick.layouts: QQuickLayout::geometryChange QRectF(6,0 0x52) --> QRectF(6,6 0x52)
qt.quick.layouts: QQuickGridLayoutBase::rearrange 0 QQuickRowLayout(0x2808b43ff500, id="contentItem", parent=0x2808b43c93e0, geometry=6,6 0x52)
qt.quick.layouts: "" QQuickGridLayoutBase::rearrange() QSizeF(0, 52)
SwitchIndicator_QMLTYPE_214(0x2808b43cc320, parent=0x2808b43c8ce0, geometry=0,0 0x0) (0x2808b4447340) now has the following listeners:
- ChangeListener listener=0x2808b43e4d88 types= Destroyed|ImplicitWidth|ImplicitHeight (QObject: Switch_QMLTYPE_212(0x2808b43c8ce0))
KSvg::SvgItem_QML_215(0x2808b43de800, parent=0x2808b43cc320, geometry=16,0 22x22) (0x2808b4447880) now has the following listeners:
- ChangeListener listener=0x2808b43deeb8 types= Geometry (QObject: QQuickAnchors(0x2808b43bb230))
qt.quick.viewport: turned off subtree transformChanged notification after checking all children of KSvg::SvgItem_QML_216(0x2808b43ded00, parent=0x2808b43de800, geometry=-2,-2 26x26)
KSvg::SvgItem_QML_215(0x2808b43de800, parent=0x2808b43cc320, geometry=16,0 22x22) (0x2808b4447880) now has the following listeners:
- ChangeListener listener=0x2808b43deeb8 types= Geometry (QObject: QQuickAnchors(0x2808b43bb230))
- ChangeListener listener=0x2808b43dec38 types= Geometry (QObject: QQuickAnchors(0x2808b43bb1e0))
qt.quick.viewport: turned off subtree transformChanged notification after checking all children of KSvg::SvgItem(0x2808b43dea80, parent=0x2808b43de800, geometry=-3,-3 28x28, z=-1)
SwitchIndicator_QMLTYPE_214(0x2808b43cc320, parent=0x2808b43c8ce0, geometry=0,0 38x22) (0x2808b4447340) now has the following listeners:
- ChangeListener listener=0x2808b43e4d88 types= Destroyed|ImplicitWidth|ImplicitHeight (QObject: Switch_QMLTYPE_212(0x2808b43c8ce0))
- ChangeListener listener=0x2808b43deff8 types= Geometry (QObject: QQuickAnchors(0x2808b43bb240))
KSvg::FrameSvgItem(0x2808b3db9d00, parent=0x2808b43cc320, geometry=0,0 38x16) (0x2808b4447500) now has the following listeners:
- ChangeListener listener=0x2808b43de738 types= Geometry (QObject: QQuickAnchors(0x2808b43bb170))
KSvg::SvgItem_QML_215(0x2808b43de800, id="button", parent=0x2808b43cc320, geometry=16,0 22x22) (0x2808b4447880) now has the following listeners:
- ChangeListener listener=0x2808b43deeb8 types= Geometry (QObject: QQuickAnchors(0x2808b43bb230))
- ChangeListener listener=0x2808b43dec38 types= Geometry (QObject: QQuickAnchors(0x2808b43bb1e0))
- ChangeListener listener=0x2808b43de738 types= Geometry (QObject: QQuickAnchors(0x2808b43bb170))
qt.quick.viewport: turned off subtree transformChanged notification after checking all children of KSvg::FrameSvgItem(0x2808b3db9e80, parent=0x2808b43cc320, geometry=0,0 36x0)
SwitchIndicator_QMLTYPE_214(0x2808b43cc320, parent=0x2808b43c8ce0, geometry=0,0 38x22) (0x2808b4447340) now has the following listeners:
- ChangeListener listener=0x2808b43e4d88 types= Destroyed|ImplicitWidth|ImplicitHeight (QObject: Switch_QMLTYPE_212(0x2808b43c8ce0))
- ChangeListener listener=0x2808b43deff8 types= Geometry (QObject: QQuickAnchors(0x2808b43bb240))
- ChangeListener listener=0x2808b44550b8 types= Geometry (QObject: QQuickAnchors(0x2808b43bb140))
qt.quick.viewport: turned off subtree transformChanged notification after checking all children of KSvg::FrameSvgItem(0x2808b3db9d00, id="inactive", parent=0x2808b43cc320, geometry=0,0 36x16)
qt.quick.hover.trace: QQuickText(0x2808b43cb280, parent=0x2808b4434800, geometry=0,0 0x0) 0 -> false
qt.quick.hover.trace: QQuickGridLayout(0x2808b4434800, parent=0x2808b43cb1a0, geometry=0,0 0x0) 0 -> false
qt.quick.hover.trace: IconLabel_QMLTYPE_213_QML_217(0x2808b43cb1a0, parent=0x2808b43c8ce0, geometry=0,0 38x22) 0 -> false
qt.quick.layouts: QQuickLayoutAttached::invalidateItem
qt.quick.layouts: QQuickLayoutAttached::invalidateItem
qt.quick.layouts: QQuickLayoutAttached::invalidateItem
qt.quick.layouts: QQuickLayoutAttached::invalidateItem
qt.quick.layouts: QQuickLayout::geometryChange QRectF(0,0 0x0) --> QRectF(0,11 0x0)
qt.text.emojisegmenter: Emoji segmenter disabled: false
qt.text.emojisegmenter: Checking character 0 , ucs4 == 'F' , category: 16
qt.text.emojisegmenter: Checking character 1 , ucs4 == 'o' , category: 16
qt.text.emojisegmenter: Checking character 2 , ucs4 == 'l' , category: 16
qt.text.emojisegmenter: Checking character 3 , ucs4 == 'l' , category: 16
qt.text.emojisegmenter: Checking character 4 , ucs4 == 'o' , category: 16
qt.text.emojisegmenter: Checking character 5 , ucs4 == 'w' , category: 16
qt.text.emojisegmenter: Checking character 6 , ucs4 == ' ' , category: 16
qt.text.emojisegmenter: Checking character 7 , ucs4 == 'a' , category: 16
qt.text.emojisegmenter: Checking character 8 , ucs4 == 'c' , category: 16
qt.text.emojisegmenter: Checking character 9 , ucs4 == 'c' , category: 16
qt.text.emojisegmenter: Checking character 10 , ucs4 == 'e' , category: 16
qt.text.emojisegmenter: Checking character 11 , ucs4 == 'n' , category: 16
qt.text.emojisegmenter: Checking character 12 , ucs4 == 't' , category: 16
qt.text.emojisegmenter: Checking character 13 , ucs4 == ' ' , category: 16
qt.text.emojisegmenter: Checking character 14 , ucs4 == 'c' , category: 16
qt.text.emojisegmenter: Checking character 15 , ucs4 == 'o' , category: 16
qt.text.emojisegmenter: Checking character 16 , ucs4 == 'l' , category: 16
qt.text.emojisegmenter: Checking character 17 , ucs4 == 'o' , category: 16
qt.text.emojisegmenter: Checking character 18 , ucs4 == 'r' , category: 16
qt.text.emojisegmenter: Checking character 0 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 1 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 2 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 3 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 4 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 5 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 6 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 7 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 8 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 9 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 10 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 11 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 12 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 13 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 14 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 15 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 16 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 17 , sequence length: 1 , is emoji sequence: false
qt.text.emojisegmenter: Checking character 18 , sequence length: 1 , is emoji sequence: false
 
Back
Top