# Issue 草稿:本地 Qwen3-ASR 的 MLX 引擎在 Apple M5 上崩溃(进程直接退出) > 提交人:M5 MacBook 用户(Mac17,2 / Apple M5 / 24GB / macOS 26.x) > 目标仓库:https://github.com/Open-Less/openless > 版本:OpenLess 1.3.18(darwin-aarch64) ## 现象 - ASR provider 设为 `local-qwen3-mlx`(新版默认)时,**只要一按听写热键**,应用就**直接退出**(窗口消失,无崩溃报告、无错误弹窗)。 - 用旧版 / 或切到 `local-qwen3-c`(C 引擎)后一切正常。 - 结论:问题只出在 **MLX 引擎**,且只在 **M5 芯片**上。 ## 关键证据 1. **日志**(`~/Library/Logs/OpenLess/openless.log`),退出前最后一条: ``` [local-asr cache] loading mlx:qwen3-asr-0.6b from .../models/qwen3-asr/qwen3-asr-0.6b ``` 之后 **29ms** 进程即退出。 2. **退出码 255**:launchd 记录 `exited due to exit(255)`,`voluntary` 退出(不是崩溃、不是被 kill)。 3. **反汇编二进制** `openless` 定位到退出点: ``` mlx_error_handler_default: printf("MLX error: %s\n") mov w0, #-0x1 bl _exit ; ← MLX 内部错误时 exit(-1),即 exit(255) ``` → MLX 出错时会**直接终止整个进程**,连错误信息都只打到 stdout(用户看不到)。 4. **根因对比**:OpenLess 打包的 MLX(C++,静态链接)在 M5 上 Metal shader 加载失败(MLX error),而 **2026 新版 Python MLX(0.31.2)在同一台 M5 上实测可用**: ``` mlx 0.31.2 / default_device: Device(gpu, 0) / Metal: True / 张量计算 OK ``` → 不是 MLX 框架不支持 M5,而是 **OpenLess 打包的 MLX 版本过旧**。 5. 同类问题(第三方确认 M5 + MLX 兼容性): - https://github.com/lmstudio-ai/lmstudio-bug-tracker/issues/1356 (M5 上 MLX 模型无法加载) - https://github.com/ollama/ollama/issues/15642 (M5 Max 上 MLX Metal GPU 检测失败) ## 建议(二选一,或都做) 1. **升级打包的 MLX 依赖**到支持 M5 的新版本(qwen3-asr-rs 里 vendored `mlx-c` 版本过旧)。 2. **更重要的健壮性修复**:MLX 初始化/加载失败时**不要直接 `exit(-1)` 杀死进程**,应: - 捕获 MLX 错误(如先 `mlx_metal_is_available` 检测、或把错误处理改为回调/返回错误) - 优雅回退到 C 引擎(`local-qwen3-c`)或给出可见的错误提示 参考 InputMetrics 的做法(用能力实测替代门控 + 轮询重试):https://github.com/owieth/InputMetrics/issues/98 ## 复现步骤 1. Apple M5(Mac17,2)机器,安装 OpenLess 1.3.18 2. ASR provider 保持默认 `local-qwen3-mlx` 3. 下载 qwen3-asr-0.6b 模型 4. 按听写热键 → 应用立即退出 ## 临时 workaround(已验证) 设置 → 高级 → 本地模型 → 引擎切到 **C/CPU**(`local-qwen3-c`),一切正常、离线可用。 --- *(本 issue 由用户在社区协助下诊断,证据均来自本机实测。)*
Issue 草稿:本地 Qwen3-ASR 的 MLX 引擎在 Apple M5 上崩溃(进程直接退出)
现象
local-qwen3-mlx(新版默认)时,只要一按听写热键,应用就直接退出(窗口消失,无崩溃报告、无错误弹窗)。local-qwen3-c(C 引擎)后一切正常。关键证据
日志(
~/Library/Logs/OpenLess/openless.log),退出前最后一条:之后 29ms 进程即退出。
退出码 255:launchd 记录
exited due to exit(255),voluntary退出(不是崩溃、不是被 kill)。反汇编二进制
openless定位到退出点:→ MLX 出错时会直接终止整个进程,连错误信息都只打到 stdout(用户看不到)。
根因对比:OpenLess 打包的 MLX(C++,静态链接)在 M5 上 Metal shader 加载失败(MLX error),而 2026 新版 Python MLX(0.31.2)在同一台 M5 上实测可用:
→ 不是 MLX 框架不支持 M5,而是 OpenLess 打包的 MLX 版本过旧。
同类问题(第三方确认 M5 + MLX 兼容性):
建议(二选一,或都做)
mlx-c版本过旧)。exit(-1)杀死进程,应:mlx_metal_is_available检测、或把错误处理改为回调/返回错误)local-qwen3-c)或给出可见的错误提示参考 InputMetrics 的做法(用能力实测替代门控 + 轮询重试):fix(EventMonitor): Accessibility permission not detected on TestFlight builds owieth/InputMetrics#98
复现步骤
local-qwen3-mlx临时 workaround(已验证)
设置 → 高级 → 本地模型 → 引擎切到 C/CPU(
local-qwen3-c),一切正常、离线可用。(本 issue 由用户在社区协助下诊断,证据均来自本机实测。)