[recording] Windows 2.0.2 Beta.2 录音期间因堆损坏静默退出
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- rust
調査の方向性
Start by reproducing the recording crash with the stated WO Mic configuration (48 kHz, mono, F32) and inspect the audio capture, recording callback, stop, and Stream release paths. The report does not name source files or tests; use a matching PDB or diagnostic build with Windows page heap to locate the first invalid write or release. Done means the crash is fixed, the stated recording regression checks pass, and recordings no longer exit silently.
索引モデルが issue の本文から書いたものです。
説明
现象
环境
- 版本:
2.0.2-Beta.2+build.20261023,EXE 文件版本2.0.2.0 - 构建提交:
af14756d3d9d1474fa7db782c332b61deef58688 - EXE SHA-256:
73e12ff0f3c89cd75a628a9030aad63be105107da19195c96d090efb94c877ca - 系统:Windows 11,Build 26200
- 识别链路:云端 ASR + DeepSeek 润色,未使用本地 ASR 模型
- 输入设备:
麦克风 (WO Mic Device),日志记录48000 Hz / 1 channel / F32 - 文字插入模式:TSF
当前表现
OpenLess 在录音期间无弹窗、无 Rust panic、无普通异常日志,进程直接退出,约 20~25 秒后自动重启。最近 5 天保留了 6 份崩溃转储;按进程 PID 去重,至少对应 5 次独立崩溃。
| 本地时间(UTC+8) | 异常码 | WER 签名 |
|---|---|---|
| 2026-10-20 01:04:13 | c0000374 |
PCH_63_FROM_ntdll+0x1628A4,StackHash 4b54 |
| 2026-10-22 13:35:09 | c0000374 |
PCH_63_FROM_ntdll+0x1628A4,StackHash 8458 |
| 2026-10-23 00:25:27 | c0000005 |
openless.exe+0x2cc96e7,StackHash b819 |
| 2026-10-23 00:25:33 | c000041d |
openless.exe+0x2cc96e7,StackHash c945 |
| 2026-10-24 15:32:30 | c0000374 |
PCH_63_FROM_ntdll+0x1628A4,StackHash e65a |
| 2026-10-24 16:16:35 | c0000374 |
PCH_63_FROM_ntdll+0x1628A4,StackHash e65a |
今天两次的签名完全一致,均为 ntdll.dll + 0x1628a4 的堆损坏检测;16:16 的转储中,异常线程名为 main。
与录音阶段的对应关系
15:32:22开始录音,设备为 WO Mic,15:32:30生成崩溃转储,约 8 秒后退出;15:32:51自动重启。16:16:09开始录音,设备为 WO Mic,16:16:35生成崩溃转储,约 26 秒后退出;16:17:00自动重启。- 两次均已经收到
first_raw_pcm和first_output_pcm,但退出前没有cpal Stream dropped (mic released)。 - 两次对应 WAV 文件的修改时间分别与
15:32:30、16:16:35对齐。 - 两次退出前均未进入 ASR 完成、润色或文字插入阶段。
日志中没有 panic、abort 或明确的堆错误记录,说明是进程级原生崩溃,应用日志来不及记录。当前日志中的 TSF stale_or_unknown 0x4F4C0005、更新检查“尚未发布过 Beta 版本”和 e2ee 初始化 ERROR 与上述崩溃时间不吻合,暂不作为根因。
转储线索
- 最近两次都停在 Windows 堆损坏处理路径,应用侧仅有少量偏移可解析:
openless.exe+0x1bb90b5openless.exe+0xd9ff7copenless.exe+0x1bbd35b
- 转储中加载了
MacType64.dll、MacType64.Core.dll、OpenLessIme.dll、WebView、UIAutomation 和AUDIOSES.DLL。 - 堆损坏通常在内存已被写坏后才由
ntdll检测,因此这些模块只能作为排查方向,不能仅凭栈顶认定根因。 - 当前主要嫌疑是 WO Mic/WASAPI 音频采集路径;MacType 的进程内钩子是第二嫌疑。TSF 可能性较低,因为两次都在插入文字之前退出。
这与 #1227 中的 c0000374 属于相同异常类型,但本报告补充了更新的 2.0.2 Beta.2、连续的 WO Mic 录音期时间线,以及今天两次完全一致的 WER StackHash。目前尚不能证明与 #1227 是同一条内存破坏路径;如维护者判断相同,可直接合并处理。
影响
- 崩溃无预兆、无提示,正在进行的语音输入会丢失。
- 最近 5 天出现 4 次
c0000374;今天在约 44 分钟内连续发生 2 次。 - 崩溃发生在录音阶段,用户无法通过避免转写、润色或文字插入来规避。
- 自动重启只能恢复应用,不能恢复崩溃时的录音和识别结果。
- 当前无法仅靠日志定位最初写坏内存的代码,继续排查需要匹配该构建的 PDB 或维护者的诊断构建。
建议接受标准
- 使用相同 WO Mic 配置,连续执行至少 50 次录音启动/停止,并包含多次 5 分钟以上录音,不再出现
c0000374。 - 在启用 Windows page heap 或使用带符号的诊断构建时,能够定位首次越界写或非法释放的位置,而不是只看到事后堆检查。
- 对 48 kHz、单声道、F32 的虚拟音频设备补充录音回调、停止和
Stream释放路径的回归测试。 - 如果确认是特定音频驱动或第三方进程内钩子导致,OpenLess 应安全拒绝该设备或提示用户,而不是静默崩溃。
- 修复版连续正常使用至少 3 天,崩溃频率从当前约 2 次/天降为 0。
TODO / 不确定项
- 缺少与
2.0.2 Beta.2EXE 匹配的 PDB,无法从现有转储还原完整应用调用栈。 - 尚未隔离 WO Mic、MacType 和 OpenLess 音频生命周期三者的责任,也未在实体麦克风上完成对照测试。
- 尚未启用 page heap,也未安装 #1227 中维护者提供的诊断构建。
- 未确认 #1227 的 Windows 10/2.0.1 报告与本次 Windows 11/2.0.2 Beta.2 报告是否属于同一根因。
- 未公开上传语音、完整日志或内存转储,以免包含设备名称、输入内容或其他敏感信息;如有需要,可提供进一步脱敏的事件与时间线。
- 主要言語
- Rust
- スター
- 3.7k
- フォーク
- 349
- 平均マージ
- 2日 14時間
- マージ済み PR(30日)
- 97
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Open-Less/openless のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
[windows] 录音快捷键还不支持设置为ScrllLock键対応中かも @HKLHaoBin が 10 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
Open-Less/openless#1241 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 18/100
メンテナーはふだん 1 日以内に返信
-
[omni] 多模态模式开启翻译后,译文时有时无,或混在 JSON 字段里対応中かも @Breadswim が 4 日前に担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
メンテナーはふだん 1 日以内に返信
-
[omni] 多模态「验证」对 OpenAI gpt-audio-1.5 必然返回 400対応中かも @Breadswim が 4 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 58/100
メンテナーはふだん 1 日以内に返信
Open-Less/openless の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
longbridge/gpui-kit#3795 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
saltnpepper97/halley#271 ·
メンテナーはふだん 1 日以内に返信
-
Remove the unused gh-aw agentic workflow setup対応中かも @AviAvni が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 3 日以内に返信
-
bug stdlib
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue
難易度 1/5 1〜3時間 初心者へのやさしさ 83/100
Sh1n1230/PunctuationToggle#308 ·
メンテナーはふだん 1 日以内に返信