So, after mucking about a bit, I finally figured the problem out. Part of my problem was that there weren't any errors being thrown in the CUPS log. After digging around, I discovered that setting "LogLevel debug" in the /etc/cups/cupsd.conf file would provide the level of logging that I needed to begin to get a handle on the problem.
Once that happened, I could see that there was an error in the Canon drivers during the Ghostscript processing:
Code:
D [23/May/2026:17:28:32 -0500] [Job 16] PID 1380807 (/usr/libexec/cups/filter/rastertoufr2) did not catch or ignore signal 13.
D [23/May/2026:17:28:32 -0500] [Job 16] PID 1380808 (/usr/libexec/cups/backend/socket) exited with no errors.
E [23/May/2026:17:28:32 -0500] [Job 16] src = libcanon_pdlwrapper.c, line = 514, err = 0¥nINFO: cfFilterGhostscript: Processing page 2...
D [23/May/2026:17:28:32 -0500] cupsdMarkDirty(---J-)
D [23/May/2026:17:28:32 -0500] cupsdSetBusyState: newbusy="Printing jobs and dirty files", busy="Printing jobs and dirty files"
D [23/May/2026:17:28:32 -0500] [Job 16] Set job-printer-state-message to "src = libcanon_pdlwrapper.c, line = 514, err = 0¥nINFO: cfFilterGhostscript: Processing page 2...",
current level=ERROR
D [23/May/2026:17:28:32 -0500] cupsdMarkDirty(----S)
D [23/May/2026:17:28:32 -0500] cupsdSetBusyState: newbusy="Printing jobs and dirty files", busy="Printing jobs and dirty files"
D [23/May/2026:17:28:32 -0500] cupsdMarkDirty(----S)
The salient portion is this line:
Code:
E [23/May/2026:17:28:32 -0500] [Job 16] src = libcanon_pdlwrapper.c, line = 514, err = 0¥nINFO: cfFilterGhostscript: Processing page 2...
For reasons known only to God and the Maintainers of the cfFilterGhostscript code (and I'm questioning the knowledge of the Almighty...), the error thrown by the Canon driver isn't propagated up the stack . In any case, the print jobs fails and CUPS is just sitting there all fat and happy without a care in the world, completely oblivious to the fact that the print job
NEVER GOT SENT.
I have to assume there's a reason this is the case, but for the life of me I haven't a clue what that reason might be.
Anyway, more digging revealed that this is an issue that the Arch community have wrestled with and tracked to to being a problem with the version of libxml2 that is being used; apparently this driver is expecting to link with libxml2.so.2 (specifically, it's the cnpkbidir precompiled binary they provide with the driver source). They deal with it by using libxml2-legacy.
I installed the bombo82 portage overlay, copied the cnrdrvcups-lb ebuild from that into my private repo (because bombo82 has more up-to-date drivers than the Gentoo repo, although the bombo82 drivers don't work either), modified the ebuild to make libxml2-compat a dependency, et voila! I have a working printer again.
I've tried to figure out what the exact difference is between dev-libs/libxml2 and dev-libs/libxml2-compat, and as near as I can find it's one of those deep dark secrets that you could tell me but then you'd have to shoot me.
As near as I can tell, libxml2-compat is just the previous major revision of libxml2? I guess it's just kept around to resolve issues like this (like libxml2-legacy on Arch)?