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.