Qoder CN 0.4.9 Linux 桌面版读取任意图片必崩

【BUG】Qoder CN 0.4.9 Linux 桌面版读取任意图片必崩:sharp 与系统 GLib 符号冲突导致 SIGSEGV,会话中断

一、环境

  • 产品:Qoder CN 桌面版 0.4.9(Linux)
  • 系统:Ubuntu 26.04 LTS,内核 7.0.0-14-generic
  • GLib:2.88.0-1ubuntu0.1
  • 会话:Wayland 下自动回退 X11(仅说明环境,与问题无关)
  • 复现率:100%。连续 6 次尝试均崩溃,JPEG 与 PNG、938 KB 原图与 58 KB 缩图均可复现

二、现象

在 Agent 会话中让模型读取任意图片(Read 工具,.jpg / .png),日志停在 tool.read.diagnostic phase_started content_processing,随后 qoder-cn 工作进程收到 SIGSEGV,会话直接中断。重新打开会话再次读取图片,再次崩溃,无法继续当前任务。

三、复现步骤

  1. 启动 Qoder CN 桌面版,新建会话;
  2. 让 Agent 读取任意本地图片;
  3. 会话中断,coredumpctl 中出现 qoder-cn 的 SIGSEGV 记录。

四、定位信息

崩溃栈(6 次完全一致):

#0  0x0000000000000000
#1  g_object_unref        (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0)
#2  sharp-linux-x64.node + 0x1835d
#3  sharp-linux-x64.node + 0x2000c
#4  node::ThreadPoolWork

从 core 与自带二进制看,原因是同一进程内存在两份 GLib:

  • Qoder 自带 sharp 0.34.5 / libvips 8.17.3;
  • libvips-cpp.so.8.17.3 静态链接 GLib 2.86.1,并导出 g_object_unref;
  • sharp-linux-x64.node 的 g_object_unref 是未定义符号,由动态链接器解析;
  • Electron 进程已加载系统 GTK / GLib 2.88.0,该符号被系统版接管。libvips 创建的对象在系统 GLib 中没有类型信息,class 指针为 0,g_object_unref 最终调到空地址。

五、交叉验证

  • 同一份 sharp、同一张图片,在普通 Node 24 下处理正常(进程内没有映射系统 glib,使用的是 libvips 自带的 2.86.1);
  • 用 Qoder 自带的 Electron 以 ELECTRON_RUN_AS_NODE=1 执行同样的 sharp 调用,读取 64×64 PNG 即崩溃;
  • 普通 Node 预加载系统 libgobject-2.0.so.0 后,同样复现崩溃;
  • 用 ffmpeg 把原图缩到 58 KB 后读取仍然崩溃,可排除图片尺寸和格式因素。

六、期望

  1. 修复 Linux 桌面版读取图片导致的进程崩溃,例如让 libvips 隐藏 GLib 符号、改用系统 libvips,或把图像处理放到不加载 GTK 的独立 Node 进程;
  2. 在修复前提供一个关闭图片预处理 / 图片读取的开关,避免整段会话被直接终止;
  3. 如需进一步排查,我可以提供 coredump、完整日志和最小复现脚本。

七、临时规避

目前只能在会话中避开图片读取;图片缩小、更换格式都无法规避。

展开
收起
zkf56y2tcmeps 2026-10-22 21:15:16 19 分享 版权
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:

Qoder CN 是 Qoder CN 系列中面向软件开发场景的核心子产品(原“通义灵码”),提供 IDE、JetBrains 插件、Visual Studio Code 插件等多种使用形态。Qoder CN 持续提供代码智能生成、智能问答、多文件修改、编程智能体等能力,并在模型选择、专家协作、任务规划等方向全面升级,为开发者带来高效、流畅的编码体验。同时面向企业客户提供企业标准版、企业专属版,具备企业级场景自定义、私域知识增强等能力,助力企业研发智能化升级。

热门讨论

热门文章

还有其他疑问?
咨询AI助理