首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >【Bug报告】WorkBuddy V4.22.4 启动崩溃 - length_error (basic_string) 异常(中文用户名+大目录环境),如何处理?

【Bug报告】WorkBuddy V4.22.4 启动崩溃 - length_error (basic_string) 异常(中文用户名+大目录环境),如何处理?

提问于 2026-05-06 12:48:23
回答 1关注 0查看 36

```

## 一、问题描述

从 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 限制

```

请问这是什么情况?

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档