Package: cups-filters
Version: 1.28.17-7+b2
Severity: important

Dear Maintainer,

With libqpdf30 12.4.0-1, /usr/lib/cups/filter/gstoraster fails immediately with a dynamic linker error:

|/usr/lib/cups/filter/gstoraster: symbol lookup error: /usr/lib/cups/filter/gstoraster: undefined symbol: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm, version LIBQPDF_30 |

Installed cups-filters is:

|cups-filters 1.28.17-7+b2 |

The relevant dependency is:

|libqpdf30 (>> 12.3.2~) |

so libqpdf30 12.4.0-1 is considered a valid dependency.

The problem is reproducible simply with:

|/usr/lib/cups/filter/gstoraster 2>&1 | head -5 |

With libqpdf30 12.4.0-1, this produces the symbol lookup error above.

I investigated the symbol versions involved.

gstoraster requests:

|readelf -Ws /usr/lib/cups/filter/gstoraster | grep 'M_replace' _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@LIBQPDF_30 |

However, libqpdf.so.30 from libqpdf30 12.4.0-1 contains this symbol only as an undefined libstdc++ symbol:

|objdump -T /usr/lib/x86_64-linux-gnu/libqpdf.so.30 | grep 'M_replace' ... (GLIBCXX_3.4.31) ... _M_replace_cold... ... (GLIBCXX_3.4.21) ... _M_replace... ... (GLIBCXX_3.4.21) ... _M_replace_aux... |

The corresponding GLIBCXX symbols are present in the installed libstdc++6 (16.2.0-1).

I also verified that the installed gstoraster binary is exactly the one shipped by cups-filters 1.28.17-7+b2:

|sha256sum /usr/lib/cups/filter/gstoraster \ /tmp/cups-filters-test/usr/lib/cups/filter/gstoraster 35d03c8fbe89159554dabc6f395276052a286d9dd72a5bdd004e55cc90f44653 35d03c8fbe89159554dabc6f395276052a286d9dd72a5bdd004e55cc90f44653 |

As a control test, I downgraded libqpdf30 to:

|libqpdf30 12.3.2-1+b1 |

With that version installed, the same command:

|/usr/lib/cups/filter/gstoraster 2>&1 | head -5 |

no longer produces a dynamic linker error. Instead, gstoraster starts normally and reports its expected usage:

|ERROR: /usr/lib/cups/filter/gstoraster job-id user title copies options [file] |

This makes the interaction between cups-filters 1.28.17-7+b2 and libqpdf30 12.4.0-1 reproducible and distinguishes it from a general gstoraster problem.

There is an existing Debian bug #1100207 concerning qpdf 12 support in cups-filters. That bug was fixed in cups-filters 1.28.17-6. However, the current issue appears to be a separate runtime symbol-versioning/ABI problem with libqpdf30 12.4.0-1.

The current cups-filters dependency accepts libqpdf30 12.4.0-1, but gstoraster cannot load with that version.

Expected result:

gstoraster should start normally with the libqpdf30 version accepted by the cups-filters dependency.

Actual result:

gstoraster aborts during dynamic linking with an undefined LIBQPDF_30 symbol.

The current workaround is to keep libqpdf30 at 12.3.2-1+b1.

System information generated by reportbug follows.

-- System Information:
Debian Release: forky/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 7.0.13+deb14-amd64 (SMP w/16 CPU threads; PREEMPT)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages cups-filters depends on:
ii bc 1.07.1-4
ii cups-filters-core-drivers 1.28.17-7+b2
ii ghostscript 10.07.1~dfsg-1
ii libc6 2.42-17
ii libcups2t64 2.4.18-1
ii libcupsfilters1t64 1.28.17-7+b2
ii libfontconfig1 2.17.1-5
ii libfontembed1t64 1.28.17-7+b2
hi libqpdf30 12.3.2-1+b1
ii libstdc++6 16.2.0-1
ii poppler-utils 26.07.0-2

Versions of packages cups-filters recommends:
ii colord 1.4.8-3
ii liblouisutdml-bin 2.12.0-8+b2
ii lynx 2.9.3-2

Versions of packages cups-filters suggests:
pn antiword
pn docx2txt
pn foomatic-db-compressed-ppds | foomatic-db
ii imagemagick 8:7.1.2.27+dfsg1-1+b1
ii imagemagick-7.q16 [imagemagick] 8:7.1.2.27+dfsg1-1+b1


|Thank you for looking into this issue.|


-- no debconf information

Reply via email to