环境
- OS: Windows 11 25H2 (10.0.26200)
- Explorer 版本: 10.0.26100.8457(组件版本仍为 24H2)
- Breeze Shell: 0.1.34
- 已启用插件: 右键菜单清理、常用功能小图标
- 主题: 亚克力效果开启 (
acrylic: true)
复现步骤
- 正常使用电脑,breeze-shell 运行正常
- 合盖(或手动)使系统进入休眠 (Hibernate / S4)
- 等待数小时
- 唤醒系统
- explorer.exe 崩溃,任务栏消失后自动重启
正常重启/冷启动不会触发,仅休眠恢复时复现。
实际行为
explorer.exe 崩溃,任务栏消失,随后自动重启(explorer 恢复后 breeze-shell 重新注入,当前 session 恢复正常)。
期望行为
休眠恢复后 explorer.exe 正常运行。
崩溃详情
来源:Windows 事件查看器 → Application 日志
两次 ACCESS_VIOLATION,间隔约 21 秒(explorer 自动重启后再次崩溃):
| # |
时间 (UTC) |
故障模块 |
异常码 |
偏移 |
| 1 |
2026-06-02 21:03:29 |
shell.dll |
0xc0000005 |
0x4859c4 |
| 2 |
2026-06-02 21:03:50 |
shell.dll |
0xc0000005 |
0x4971ee |
注:UTC 时间对应北京时间 05:03,实际唤醒时间为 09:57。休眠唤醒时系统时钟尚未从 RTC 同步,事件时间戳存在偏差(内核时间同步日志显示时钟跳变 +10.86h)。
Report ID:
e0ae01e8-10e6-4ff9-a820-fc36391fd87b
04ea7906-1e3d-4377-b42c-4f00820ba924
连锁反应:同时间段 explorer.exe + ucrtbase.dll 崩溃 5 次(0xc0000409 stack buffer overrun),疑似 shell.dll 注入导致的二次效应。
历史崩溃记录
crash_report.txt(v0.1.32, commit 50701ff)记录了同样的 0xc0000005:
Exception code: c0000005 (ACCESS_VIOLATION)
Exception address: 0x7FF84E6B6DC0
Stack trace 含 RegisterProcTableCallback(DWM/DirectComposition 层)
电源事件时间线
| 时间(本地) |
事件 |
| 6月2日 23:05 |
合盖 → 进入休眠 (Button or Lid) |
| 6月3日 05:03* |
explorer.exe 崩溃 ×2(shell.dll) |
| 6月3日 09:57 |
从休眠唤醒 (Resume from Hibernate) |
| 6月3日 09:57 |
内核时间同步:系统时钟从 23:05 跳至 09:57(+10.86h) |
*时间戳因唤醒时系统时钟未校正而偏移,实际崩溃发生于唤醒瞬间。
初步分析
崩溃发生在休眠恢复、系统时钟校正之前的窗口。推测根因:休眠恢复时 explorer.exe 初始化顺序与冷启动不同,DWM 合成器尚未完全重建时 shell.dll 已尝试:
- 通过
IShellBrowser 获取文件夹接口
- 初始化亚克力渲染 surface(
acrylic: true)
拿到无效句柄/指针后解引用导致 ACCESS_VIOLATION。
两个崩溃点偏移不同(0x4859c4 vs 0x4971ee),指向状态依赖问题而非固定逻辑 bug。
建议排查方向
- 监听
PBT_APMRESUMEAUTOMATIC 电源事件,延迟菜单初始化至 DWM 完全恢复
- 可尝试临时 workaround:关闭亚克力 (
acrylic: false)
此 issue 由 DeepSeek 辅助分析和撰写。
环境
acrylic: true)复现步骤
实际行为
explorer.exe 崩溃,任务栏消失,随后自动重启(explorer 恢复后 breeze-shell 重新注入,当前 session 恢复正常)。
期望行为
休眠恢复后 explorer.exe 正常运行。
崩溃详情
来源:Windows 事件查看器 → Application 日志
两次 ACCESS_VIOLATION,间隔约 21 秒(explorer 自动重启后再次崩溃):
shell.dll0xc00000050x4859c4shell.dll0xc00000050x4971eeReport ID:
e0ae01e8-10e6-4ff9-a820-fc36391fd87b04ea7906-1e3d-4377-b42c-4f00820ba924连锁反应:同时间段
explorer.exe+ucrtbase.dll崩溃 5 次(0xc0000409stack buffer overrun),疑似 shell.dll 注入导致的二次效应。历史崩溃记录
crash_report.txt(v0.1.32, commit50701ff)记录了同样的0xc0000005:电源事件时间线
初步分析
崩溃发生在休眠恢复、系统时钟校正之前的窗口。推测根因:休眠恢复时 explorer.exe 初始化顺序与冷启动不同,DWM 合成器尚未完全重建时 shell.dll 已尝试:
IShellBrowser获取文件夹接口acrylic: true)拿到无效句柄/指针后解引用导致 ACCESS_VIOLATION。
两个崩溃点偏移不同(
0x4859c4vs0x4971ee),指向状态依赖问题而非固定逻辑 bug。建议排查方向
PBT_APMRESUMEAUTOMATIC电源事件,延迟菜单初始化至 DWM 完全恢复acrylic: false)此 issue 由 DeepSeek 辅助分析和撰写。