结论
锁屏 1 分钟关屏本身正常生效,20 秒后被点亮是显示服务收到输出变化事件后重排布局的副作用。处置为锁屏时暂停显示重排服务、解锁时恢复,验证通过,无伤害。不是电源管理计时问题,也不是之前修过的外接屏参数环路。
现象
锁屏约 1 分钟后屏幕关闭,约 20 秒后自动点亮,之后约 1 分钟再关闭,循环往复,屏幕无法保持关闭。
时间线(实测)
| 相对时刻 | 事件 |
|---|---|
| T+0 秒 | 锁屏 |
| T+61 秒 | 显示电源管理进入关闭,关屏生效(与界面设置的 1 分钟一致) |
| T+81 秒 | 菊花链下游分支掉线后重连,显示服务收到输出变化事件并重排布局,屏幕被重新点亮 |
| T+144 秒 | 无操作满 1 分钟,再次关屏 |
| 之后 | 每轮关约 20 秒、亮约 1 分钟,连续多轮分秒不差 |
根因
关屏后无信号约 20 秒,下游分支显示链路掉线又重连,桌面显示服务将其视为显示配置变化而重排布局,重排动作自带重新启用输出的副作用,把本该睡着的屏幕点醒。锁屏只是一个盖在上层的全屏窗口,底下的显示服务照常监听输出事件、照常重排,该链路故意不分锁屏与否(为覆盖锁屏期间插拔扩展坞这类真实变化),但它分不清链路抖动和真实插拔。
实测证据
| 判据 | 实测 |
|---|---|
| 关屏是否生效 | 生效,锁屏后 61 秒进入关闭,与设置值一致 |
| 点亮时刻的伴生事件 | 每次点亮同一秒,下游分支输出上报断开后连上,显示服务收到输出变化通知 |
| 肇事输出 | 多轮全部为同一竖屏分支输出,无其他输出参与 |
| 排除外接屏参数环路 | 两次点亮窗口内零参数重读记录,不是该环路 |
| 排除真睡眠 | 内核睡眠计数为 0,机器从未入睡 |
| 排除应用抑制 | 电源管理抑制列表为空 |
| 与锁屏无关的复现 | 不锁屏直接强制关屏,同样 20 秒后自亮,同一事件序列 |
与本次改动无关的判据
关屏计时与电源管理配置无关改动;外接屏参数固定模块未动(已排除该环路);显卡驱动版本与显示拓扑未动;驱动在关屏期间轮询空头的海量警告是关屏的结果不是原因。
处置与判据
锁屏时停止桌面显示重排服务(抖动来了也无人重排),解锁时启动该服务(自动同步当前状态)。不点名任何屏幕,换办公环境同样生效。验证:一次完整锁屏周期内输出变化事件为零,关闭状态保持到解锁,重启服务瞬间无事件风暴,三屏布局原样,系统失败单元为空。代价:锁屏期间若有真实显示变化(如插拔扩展坞),解锁时才一次性同步。手动逐屏开关脚本保留为兜底。
边界
本次只覆盖锁屏后关屏被顶回的问题;显示服务为按需唤醒类型,若锁屏期间被其他调用唤醒需另议(本次未发生);显卡链路本身的稳定性(如开机认屏)属另一事项。本次排查对系统配置的改动已随系统重建生效。