Skip to content

本地 Qwen3-ASR 的 MLX 引擎在 Apple M5 上崩溃(进程直接退出) #1006

Description

@zenbao

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 兼容性):

建议(二选一,或都做)

  1. 升级打包的 MLX 依赖到支持 M5 的新版本(qwen3-asr-rs 里 vendored mlx-c 版本过旧)。
  2. 更重要的健壮性修复:MLX 初始化/加载失败时不要直接 exit(-1) 杀死进程,应:

复现步骤

  1. Apple M5(Mac17,2)机器,安装 OpenLess 1.3.18
  2. ASR provider 保持默认 local-qwen3-mlx
  3. 下载 qwen3-asr-0.6b 模型
  4. 按听写热键 → 应用立即退出

临时 workaround(已验证)

设置 → 高级 → 本地模型 → 引擎切到 C/CPUlocal-qwen3-c),一切正常、离线可用。


(本 issue 由用户在社区协助下诊断,证据均来自本机实测。)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions