Whi*_*olf 4 fedora opensuse kde freeze
我已经使用OpenSuse好几年了。我最喜欢这个发行版的一件事是处理 Plasma/KDE 问题的方式:有时可能会发生面板短暂消失并打开一个消息框,告诉我 Plasma 桌面已崩溃并已重新启动,如果我愿意,还建议将调试数据发送给开发团队。
现在几个月来,我已经切换到基于 Fedora 的发行版(Qubes OS,基于 Fedora 20)。默认情况下,此发行版似乎不提供此行为,因为:
十几年前,当我还是学生时,我所在的大学也在使用 Fedora 进行动手练习。当时,面对类似的冻结,我找到了通过 SSH 远程连接并杀死桌面管理器使其自动重新启动,解锁图形环境的解决方案。
遗憾的是,由于 Qubes OS¹ 的特定设计,这个快速而肮脏的 SSH 解决方案在这里不起作用。但是,我猜想 OpenSuse 的消息框工具可能会以适当的方式做类似的事情:在 Plasma/KDE 没有响应时实现某种看门狗检测,然后杀死并重新启动它。
所以我想知道的是:这个工具是 OpenSUSE² 的一个特定功能,还是我应该安装一些包或我应该更改一些配置以在我当前的安装中启用这种行为?
桌面冻结特别令人沮丧,当我知道应用程序本身很可能仍然正常工作并且简单地重新启动 Plasma 进程将使一切恢复正常时,甚至更令人沮丧......
¹:在 Qubes OS 中,网络连接在 Xen 域中被隔离,而 KDE 在无网络的 Dom0 中。出于安全原因,Qubes OS 的设计旨在避免从网络访问用户界面...
²:过去(如果现在不是这样的话)OpenSUSE 曾经有一个内部经过大量修改的 KDE,使它们成为第一个提出稳定 KDE4 的发行版,所以我担心这个工具只是这些糖果的一部分。 ..
TL;DR:这里的问题显然是由 OpenGL 和 KWin 之间的问题(很可能是一些模糊的竞争条件)引起的。
要解决此问题,必须禁用 OpenGL 并改用 XRender(在系统配置 > 桌面效果 > 高级 > 合成类型中,选择“XRender”而不是默认的 OpenGL)。
一些桌面效果将不再可用,但至少系统会稳定并且不再冻结。
很长的故事:
该问题每隔几周随机发生一次,有时一天几次,有时两到三周没有问题,因此很难分析(顺便说一句,我在某些时候切换到另一块显卡,从 radeon 切换到 Intel i915对问题没有任何影响,因此它与图形卡及其驱动程序无关)。
我让一个脚本在后台运行,并在无限循环中每三分钟进行一次自动检查,这样他们就可以在桌面冻结时捕捉到一些东西。
实际上,可以通过 qdbus 以编程方式检测冻结,特别是当且仅当桌面冻结时,此调用才会失败:
qdbus org.kde.Kwin /App org.freedesktop.DBus.Peer.Ping
Run Code Online (Sandbox Code Playgroud)
虽然它通常没有输出且返回代码为 0,但当桌面冻结时,此命令将失败并返回代码 2 和“NoReply”错误消息。
有关信息,我还检查了 org.kde.plasma-desktop、org.kde.kuiserver 和 org.kde.kded 的状态,它们在发生冻结时看起来都很正常,因此 KWin 似乎是真正的罪魁祸首。
我尝试了几种方法来恢复桌面环境的完整性,但没有成功。尝试使用kquitapp kwin
或干净地重新启动 KWinkwin --replace
似乎没有任何明显效果。我尝试杀死并重建完整的桌面环境,如下所示:
kbuildsycoca4
kquitapp plasma-desktop
kquitapp kwin
kquitapp kuiserver
sleep 2
killall plasma-desktop kwin kuiserver; sleep 2
killall -9 plasma-desktop kwin kuiserver; sleep 2
kstart kuiserver
kstart kwin
kstart plasma-desktop
Run Code Online (Sandbox Code Playgroud)
桌面解冻了!...但仅限于一帧:屏幕(在查看任务栏中的时钟时可以看到)被更新并立即再次冻结。
尽管如此,找到罪魁祸首后,我在这里发现了一个旧的“高,关键但不会因为太模糊而无法解决”的问题。相同的症状,相同的诊断步骤,最后是这个建议的解决方法:使用 XRender 而不是 OpenGL。
自从我应用此更改以来已经有几个月了,从那时起我没有遇到冻结,所以我认为这个解决方法对于这个问题是正确的。
归档时间: |
|
查看次数: |
4743 次 |
最近记录: |