edit | blame | history | raw

2026-06-14 闪退日志排查

用户目标

用户反馈软件刚发生闪退,要求查看 /Users/ar/Desktop/errror 日志。

已完成事项

  • 读取 /Users/ar/Desktop/errror
  • 检查最新 DiagnosticReports:
  • /Users/ar/Library/Logs/DiagnosticReports/PrivateVoice Dictation-2026-06-14-014631.ips
  • 检查应用日志:
  • /Users/ar/Library/Application Support/PrivateVoice Input/app.log
  • 展开并复核最终 App Store 包:
  • /Users/ar/Projects/PrivateVoice/Release/AppStore-2.1.28-20260614.0102-launchfix/PrivateVoice-Dictation-2.1.28-build20260614.0102-universal-macappstore.pkg

关键结论

  • /Users/ar/Desktop/errror 对应的崩溃时间是 2026-06-14 01:46:31,不是 10 点附近的新 DiagnosticReport。
  • 崩溃类型是启动阶段 dyld 失败:
  • Exception Type: EXC_CRASH (SIGABRT)
  • Termination Reason: Namespace DYLD, Code 1, Library missing
  • Library not loaded: @rpath/libsherpa-onnx-c-api.dylib
  • 具体原因是临时启动路径中的 dylib 签名与进程签名 Team ID 不一致。
  • 崩溃路径是 /private/var/folders/.../T/tmp.PynR6vudaT/local/PrivateVoice Dictation.app/...,父进程是 bash,Responsible Process 是 Codex,更像是 QA 临时 local-launch mirror,而不是 /Applications 中用户实际安装的 app。
  • 最终 .pkg payload 展开后检查到主 app、libsherpa-onnx-c-api.dyliblibonnxruntime.1.24.4.dylib 均为同一 Team ID CR3J54M8BQcodesign --verify --deep --strict 通过。
  • 当前 /Applications/PrivateVoice Dictation.app2.1.30 (20260613.2201),本地签名 PrivateVoice Local Code Signing,没有发现 10 点附近新的崩溃报告或 app.log 新启动记录。

判断

这次日志显示的问题不是录音、识别、X-ASR、剪贴板或运行时业务逻辑崩溃;它发生在应用代码执行前。

目前更可能的问题是 qa-macappstore-pkg-launch-macos.sh 的临时本地启动镜像重签名链路存在缺陷或曾经生成过签名不一致的临时 app,导致 QA 临时镜像启动崩溃。最终 App Store .pkg 本体从当前复核看签名一致。

后续建议

  • 不要把这份 errror 直接理解为当前 /Applications 安装版崩溃。
  • 如果用户确认要继续处理,下一步应修复并重新验证 qa-macappstore-pkg-launch-macos.sh
  • local-launch mirror 必须确保主可执行文件与所有 nested dylib 使用同一 local signing identity。
  • 启动失败时必须捕获 dyld crash/进程退出,并让 QA 脚本返回失败,不得误报 PASS。
  • 如用户确实在 10 点附近看到当前安装版闪退,需要重新收集当时对应的 DiagnosticReports 或 Console 日志,因为当前系统目录没有新的 .ips