[recording] Windows 2.0.2 Beta.2 录音期间因堆损坏静默退出
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- rust
- Domaine
- audio-video-rtc, backend
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
现象
环境
- 版本:
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 报告是否属于同一根因。
- 未公开上传语音、完整日志或内存转储,以免包含设备名称、输入内容或其他敏感信息;如有需要,可提供进一步脱敏的事件与时间线。
- Langage dominant
- Rust
- Étoiles
- 3.7k
- Forks
- 349
- Merge moyen
- 2 j 14 h
- PR mergées (30 j)
- 97
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Open-Less/openless
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
[windows] 录音快捷键还不支持设置为ScrllLock键Peut-être pris @HKLHaoBin l’a pris il y a 9 jours. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Open-Less/openless#1241 · 5 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 18/100
Les mainteneurs répondent en général sous 1 jour
-
[omni] 多模态模式开启翻译后,译文时有时无,或混在 JSON 字段里Peut-être pris @Breadswim l’a pris il y a 3 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
Les mainteneurs répondent en général sous 1 jour
-
[omni] 多模态「验证」对 OpenAI gpt-audio-1.5 必然返回 400Peut-être pris @Breadswim l’a pris il y a 3 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 58/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de Open-Less/openless
Issues similaires
-
docs(metrics): replace stale src/metrics.rs line anchors in dashboard-metrics.md with symbol namesOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
ci-cd desktop size:low telemetry-improvement telemetry-round-1
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
vfarcic/dot-agent-deck#2079 ·
Les mainteneurs répondent en général sous 1 jour
-
[Feature] 侧边栏Agent HTTP请求UA适配Ouverteenhancement user-priority/P3
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
t8y2/dbx#14196 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour
-
Rename SerVtdExt to ServtdExtOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 2 jours