排错
修复 DSH 的 Cordis startup failed
处理 Cordis startup failed 前,需要先拿到第一个底层错误、插件名称和 profile 上下文。
01
找到第一个因果错误
从最后一条启动失败向上阅读,记录第一个缺失模块、无效配置、权限失败或抛出的异常。
- 保留完整 stack
- 记录当前 profile
- 区分警告和首个致命错误
02
每次只停用一个嫌疑插件
在可删除的 profile 中复现,只移除第一个错误指向的插件。大范围改动会隐藏原因并增加回滚难度。
- 从最小 profile 开始
- 保持相同依赖版本
- 逐个重新启用插件
核对来源
来源用于核对当前事实,不代表来源方认可本站结论。
Cordis startup failed常见问题
Cordis 是什么,为什么会报 Cordis startup failed?
Cordis 是 DSH 依赖的插件运行时,负责加载插件、连接依赖并启动它们。这条报错表示加载流程中断了,不代表你的 DSH 安装损坏。
报错里哪一行才是关键?
第一行,不是最后一行。收尾那句汇总信息价值最低,它上面第一个缺失模块、非法配置值或抛出的异常,才是你要修的东西。
怎么定位是哪个插件搞挂了启动?
从最小 profile 开始,一次启用一个插件直到复现。第一个 stack frame 里出现的插件是首要嫌疑,但也可能是它依赖的东西根本没加载成功。
排查期间还能用原来的 profile 吗?
能,而且应该在一份可丢弃的副本里复现。原 profile 不动,一方面手上的活不耽误,另一方面还能拿正常的和坏掉的做对比。
为什么 Cordis startup failed 只是偶尔出现?
偶发失败通常来自依赖网络的初始化、插件之间的竞态,或者上次崩溃留下的锁文件。要专门抓一次失败运行的日志,成功那次的日志看不出原因。