[Bug Report] 切换输入法时 OSD/通知中心 D-Bus 无应答,桌面整体假死
Tofloor
poster avatar
158******78
deepin
2026-10-15 12:10
Author

【deepin 25 rolling】切换输入法后桌面假死:OSD 与通知中心 D-Bus 无应答

一、环境

  • 系统:deepin 25(rolling),x86_64
  • 内核:6.18.48-amd64-desktop-rolling #25.01.01.35 SMP PREEMPT_DYNAMIC
  • 桌面:DDE(dde-shell)
  • 显示:X11(kwin_x11)

二、现象

正常使用中,在打字时切换输入法,桌面突然整体假死:界面对键鼠操作不再响应,
无法通过常规操作恢复,只能 Ctrl+Alt+F2 切到 tty2 用命令行处理。

三、排查过程

在 tty2 下对各桌面组件做分层 D-Bus 探测(每项超时 3s),结果:

组件 状态
X 服务器 + kwin_x11 OK
dde-shell 面板/任务栏 OK
桌面插件(桌面/图标) OK
锁屏 dde-lock OK
OSD 提示层(org.deepin.dde.Osd1) 无应答
通知中心(org.deepin.dde.Notification1) 无应答
Dock 服务 OK

同时对应 systemd 用户单元状态均为 active:

  • dde-shell@DDE.service → active
  • dde-shell-plugin@org.deepin.ds.desktop.service → active
  • dde-lock.service → active

即进程存活但 D-Bus 接口不应答,符合主线程阻塞 / 死锁的特征,
不是崩溃退出,也不是 X 或窗口管理器的问题。

四、恢复方式

按影响面从小到大逐级重启(脚本自动执行,每级后重新探测):

  1. systemctl --user restart dde-shell@DDE.service
  2. systemctl --user restart dde-shell-plugin@org.deepin.ds.desktop.service
  3. systemctl --user restart dde-lock.service
  4. kwin_x11 --replace(窗口不关)
  5. systemctl --user restart dde-session-daemon

执行到第 5 级后所有探测项恢复 OK,界面正常,未注销会话。

五、初步推测

切换输入法时会触发输入法 OSD 弹窗,而本次故障点恰好是 OSD 层 + 通知中心
两个组件同时无应答,怀疑:

  • 输入法切换 → OSD 显示流程中,dde-shell 侧存在阻塞(可能与 fcitx 的 D-Bus 交互、
    或 OSD 动画/资源加载有关),进而拖死同一进程内的通知中心接口。

六、附注

  • 卡死瞬间的 gdb thread apply all bt 未能取到有效堆栈(恢复后抓的是健康进程,
    无诊断意义),暂无死锁现场栈,如有需要可在复现时补充。
  • 尚未确认复现概率,若后续复现会补充"卡死时线程数变化"等信息。

七、附件

  • `dde-freeze-logs.tar.gz`(内含以下三份)
    • `/home/zxy/dde-freeze-20261015-112745.log` —— 卡死现场分层探测快照
    • `/home/zxy/journal-warning.log` —— 本次开机 warning 级以上系统日志
Reply Favorite View the author
All Replies
avatar
𰻞𰻝面
deepin
2026-10-15 17:48
#1

没遇到过tail

Reply View the author
avatar
翻过山峰看见云
deepin
2026-10-16 11:06
#2

我用的rime+万象的输入法方案,遇到过短期内在dock内多次点击执行万象的重新部署功能后,dock无法使用的问题,dock栏内所有的按钮都无法点击,但是已经打开的GUI软件是可以正常使用的。最后都是重启解决的。不知道是不是同一个原因

Reply View the author