```
## 一、问题描述
从 V4.10.4 升级到新版后(安装包文件名为 V4.21.1,exe 内部版本号为 4.22.4.0),WorkBuddy 面板完全无法启动,无任何界面输出。通过命令行启动可捕获到 C++ 层面的致命异常。另一台设备直接安装可正常运行,说明是特定环境触发的 bug。
## 二、环境信息
| 项目 | 详情 |
|------|------|
| 操作系统 | Windows 10, 版本 22621 (Build 22631), x64 |
| 用户名 | **含中文字符**(如:中文用户名) |
| 安装路径 | C:\Users\中文用户名\AppData\Local\Programs\WorkBuddy\ |
| 崩溃版本 | **4.22.4.0** |
| 正常运行版本 | V4.10.4 |
| .workbuddy/plugins 文件数 | **110,000+ 个** |
## 三、复现步骤
1. 卸载旧版 WorkBuddy
2. 运行新版安装包
3. 安装完成后启动 → 面板无响应,进程未出现
4. 命令行执行 `WorkBuddy.exe --verbose` 可复现崩溃
## 四、错误日志
### 命令行启动日志:
```
[AccountService] HTTP interceptor registered
(node:5928) [DEP0040] DeprecationWarning: The `punycode` module is deprecated.
[WorkBuddy] Creating CellJS application...
[WorkBuddy] CellJS application created
[WorkBuddy] Starting CellJS application...
[WorkBuddy] CellJS container initialized
length_error was thrown in -fno-exceptions mode with message "basic_string"
```
### Windows 事件查看器(Event ID: 1000):
```
错误应用程序名称: WorkBuddy.exe,版本: 4.22.4.0
错误模块名称: WorkBuddy.exe,版本: 4.22.4.0
异常代码: 0xc0000409 ← STATUS_STACK_BUFFER_OVERRUN (/GS 安全检查失败)
错误偏移量: 0x00000000055be785 ← 固定偏移量,每次崩溃相同
错误应用程序路径: C:\Users\<中文用户名>\AppData\Local\Programs\WorkBuddy\WorkBuddy.exe
错误模块路径: C:\Users\<中文用户名>\AppData\Local\Programs\WorkBuddy\WorkBuddy.exe
```
## 五、已尝试的修复方式(均失败)
1. 清空 .workbuddy 目录后重装 → ❌ 崩溃
2. 清空 AppData 相关目录后重装 → ❌ 崩溃
3. 彻底卸载旧版安装 → ❌ 崩溃
4. 使用默认路径安装 → ❌ 崩溃
5. --disable-gpu 参数启动 → ❌ 崩溃
6. ELECTRON_ENABLE_LOGGING=1 启动 → ❌ 同样崩溃
## 六、根因分析
核心错误:`length_error was thrown in -fno-exceptions mode with message "basic_string"`
这是 C++ 标准库 std::basic_string 的 length_error 异常。结合线索:
- CellJS container 初始化阶段触发
- 偏移量固定 (0x55be785) → 同一段代码反复触发
- 错误模块 = 应用程序本身 → 非 DLL 问题
- 另一设备正常 → 与环境相关
- plugins 目录有 110,000+ 文件
推测:CellJS 初始化时扫描用户数据目录,对包含中文字符的深层嵌套路径拼接操作没有做长度校验,导致 std::string 溢出。
## 七、建议修复方向
1. 检查 CellJS 初始化阶段的路径处理代码,增加字符串长度校验和截断保护
2. 验证长路径 + 中文用户名场景下的兼容性
3. 考虑使用 Windows 长路径 API (\\?\ 前缀) 绕过 MAX_PATH 限制
```
请问这是什么情况?
相似问题