Skip to content

[Bug] sharp 0.34.5 (libvips 8.17.3) 与应用内置 sharp 0.35.3 (libvips 8.18.3) 冲突,工具调用时渲染器崩溃、窗口全部消失 #1

Description

@ydh0411

环境

  • DSH Desktop 2.0.0(Electron),应用内置 sharp 0.35.3 / libvips 8.18.3(app.asar)
  • profile: ~/.dsh/profiles/desktop,装有 pptfast@0.19.2(依赖 sharp 0.34.5 / libvips-cpp 8.17.3)

复现步骤

  1. profile 同时存在 pptfast(sharp 0.34.5)与应用内置的 sharp 0.35.3
  2. 启动应用,启动日志出现警告
  3. 任意触发原生图片处理的工具调用 → 渲染器进程崩溃、所有窗口瞬间消失;进行中的 tool_use 变成孤儿,后续对话持续报校验错误 "an assistant message with tool_calls must be followed by tool messages"

启动警告

Class GNotificationCenterDelegate ... may cause spurious casting failures and mysterious crashes

原因分析

同一 Electron 进程内同时加载了两个版本的 libvips(8.17.3 与 8.18.3),macOS Objective-C 类重复 + 原生 ABI 不匹配,导致原生层崩溃,进而拖垮渲染器进程。

临时解决办法

pnpm-workspace.yaml 加 override 强制统一 sharp 版本:

overrides:
  sharp: 0.35.3

注意:pnpm 11 已不读 package.json 里的 pnpm.overrides,override 必须放 pnpm-workspace.yaml

建议

  1. 放宽 sharp 依赖范围(如 ^0.35),不要锁死在 0.34.x;或
  2. 延迟/隔离加载原生依赖,避免与宿主应用内置版本在同一进程内共存;或
  3. 直接使用宿主应用提供的 sharp 实例。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions