[bug]: PatchMatch fails to load due to libtiff/libjpeg ABI mismatch (jpeg12_* unresolved at runtime)

该报错出现在 InvokeAI 6.13 AppImage 启动时,PatchMatch 因运行时解析系统 libtiff.so.6 时找不到 jpeg12_write_raw_data 符号而加载失败,导致 inpainting 功能不可用。优先排查系统 libtiff 与 libjpeg-tur

快速结论:该报错出现在 InvokeAI 6.13 AppImage 启动时,PatchMatch 因运行时解析系统 libtiff.so.6 时找不到 jpeg12_write_raw_data 符号而加载失败,导致 inpainting 功能不可用。优先排查系统 libtiff 与 libjpeg-turbo 的 ABI 兼容性,或尝试改用 PatchMatch-Cython 替代方案(当前上游仍有阻塞)。

适用环境:Linux(openSUSE Tumbleweed / Leap),InvokeAI 6.13.0 通过 Invoke’s Launcher 安装的 AppImage,CPU 模式(无 GPU),Python 3.12,OpenCV 4.13.0,libtiff 4.7.1,libjpeg-turbo 3.0.4;x86-64-v3 CPU。

最快修复方案:暂无确认的一步修复方案。Issue 中用户测试了重新安装 libjpeg/libtiff、设置 LD_LIBRARY_PATH、禁用 hwcaps、覆盖 Pillow libtiff 均未解决;官方未给出已验证修复,仅提示可能是本地配置问题。

注意事项:问题可能与 AppImage 打包时混用系统 libtiff 与自带的 libjpeg-turbo 有关,但这些推断均未在 Issue 中验证。切换 PatchMatch-Cython 的思路目前被上游 patchmatch-cython#1 阻塞。

问题场景

用户通过 InvokeAI Launcher 启动 InvokeAI 6.13 AppImage,在 CPU 模式下初始化 PatchMatch 时,日志出现 undefined symbol: jpeg12_write_raw_data,随后 InvokeAI 提示 “Patchmatch not loaded (nonfatal)”,inpainting 功能无法使用。该问题在 openSUSE Tumbleweed 上同样被其他用户反馈过(有的用户遇到的是 libopencv_aruco.so.412 与 .413 不匹配)。

报错原文

[bug]: PatchMatch fails to load due to libtiff/libjpeg ABI mismatch (jpeg12_* unresolved at runtime)

>> patchmatch.patch_match: ERROR - patchmatch failed to load or compile (/lib64/libtiff.so.6: undefined symbol: jpeg12_write_raw_data, version LIBJPEG_8.0).
>> patchmatch.patch_match: INFO - Refer to https://invoke-ai.github.io/InvokeAI/installation/060_INSTALL_PATCHMATCH/ for installation instructions.
[2026-06-12 11:47:33,311]::[InvokeAI]::INFO --> Patchmatch not loaded (nonfatal)

原因分析

可能原因:系统 libtiff 在编译时预期使用完整集成 jpeg12_* 符号的 libjpeg-turbo ABI,但运行时符号解析失败。尽管 libjpeg-turbo 确实导出了 jpeg12_write_raw_data@LIBJPEG_8.0(由 objdump/readelf 验证),崩溃仍发生,说明并非单纯缺少依赖,而是 ABI 特性不匹配或运行时加载了错误版本的库。另一个可能原因是 InvokeAI AppImage 内嵌的 OpenCV 使用自带 TIFF 后端,但 PatchMatch 路径仍解析到系统 libtiff,形成库栈冲突。

环境排查

  • 操作系统版本:openSUSE Tumbleweed / Leap
  • InvokeAI 版本:6.13.0 AppImage
  • Python 版本:3.12(venv 也已测试)
  • OpenCV 版本:4.13.0
  • libtiff 版本:4.7.1
  • libjpeg-turbo 版本:3.0.4
  • CPU:x86-64-v3(glibc hwcaps enabled)
  • 需要确认系统中是否同时存在多个 libtiff/libjpeg 副本,以及 AppImage 实际加载的是哪个路径

解决步骤

  1. 先确认当前系统 libtiff 与 libjpeg 版本:ldconfig -p | grep libtiffldconfig -p | grep libjpeg,记录实际库路径。
  2. 检查符号是否存在于 libjpeg-turbo 中:nm -D /usr/lib64/libjpeg.so.8 | grep jpeg12_write_raw_data 或使用 readelf 验证。
  3. 尝试重新安装 libjpeg-turbo 与 libtiff(Issue 中已测试无效,但可排除本地包损坏)。
  4. 尝试通过 LD_LIBRARY_PATH 强制指定与 libtiff 匹配的 libjpeg 路径(Issue 中已测试无效)。
  5. 尝试设置 LD_HWCAP_MASK=0x0 禁用 hwcaps(Issue 中已测试无效)。
  6. 如果以上都无效,可关注 Invoke

    参考来源

    invoke-ai/InvokeAI #9287

    GamsGo AI

    AI 工具推荐

    想把多个 AI 模型放在一个入口?

    GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

    了解 GamsGo AI

    推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

    这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18311

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注