#1144099 cups-filters: gstoraster fails with libqpdf30 12.4.0-1 due to incorrect LIBQPDF_30 symbol

Package:
cups-filters
Source:
cups-filters
Description:
OpenPrinting CUPS Filters - Main Package
Submitter:
Laurent Courage
Date:
2026-08-22 20:01:01 UTC
Severity:
normal
#1144099#5
Date:
2026-08-11 05:50:57 UTC
From:
To:
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.

#1144099#10
Date:
2026-08-22 19:54:22 UTC
From:
To:
I don't want to be all +1 here, but this does totally break printing for
anyone using cups.

I'm locked on the older libqpdf30 so that my printing still works, but,
I haven't seen any update on this in a few weeks, so I wanted to ping
and see if there was an update on recompiling this to get the new symbol
(though... I get that it's a bummer libqpdf broke ABI while keeping
soname the same ;( ).