Bryan Cooper - Social Director wrote:
It sounds like there are 2 printer bugs. The main bug affecting network printers is acknowledged as a regression bug at cups.org. That is, it was a bug introduced in 1.4.7 cups driver.
There also seems to be a standard printer driver upgrade type bug affecting some Epson printers that can by resolved by deleting the Epson driver for the upgrade.
I just thought it interesting to note that the original main bug can be seen in the source code from cups.org.
The errant function is called 'backendSNMPSupplies()'
It is called by several 'backend' programs, including socket, lpd, lpd, ipp.
In that function, a 'divide by zero' error will occur IF the object 'supplies' is not properly initialized.
That error kills any program calling that function and shows up in the console.
A source code patch to cups has already been posted which shows the bug:
http://cups.org/strfiles/3875/str3875.patch
A fairly simple and straightforward fix if you are only dealing with a couple of 10.6.8 machines:
Go to the 10.6.8 machine where you are going into the printer pause as soon as a job gets submitted. Run /Applications/Utilities/Console, and push the "Show Log List" button in the upper left. Fold down the triangle on the Files list, and then on Library/logs (not ~Library/logs) CrashReporter. There will be a boatload of crash files that start "lpd_2011_timeStamp_localhost.crash -- one for each time you submitted a job to the printer and it paused the queue. Look at them, and they will all start out the same -- mine start out like this:
Process: lpd [7781]
Path: /usr/libexec/cups/backend/lpd
Identifier: lpd
Version: ??? (???)
Code Type: X86-64 (Native)
Parent Process: cupsd [7775]
Date/Time: 2011-07-01 14:24:15.191 -0500
OS Version: Mac OS X 10.6.8 (10K540)
Report Version: 6
Exception Type: EXC_ARITHMETIC (SIGFPE)
Exception Codes: EXC_I386_DIV (divide by zero)
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
What this is telling me is that /usr/libexec/cups/backend/lpd (which got replaced in the 10.6.8 upgrade) is broken. So I went to /usr/libexec/cups/backend, renamed lpd to lpd.10.6.8 and then got a/usr/libexec/cups/backend/lpd file off of a 10.6.7 machine and replaced it with that.
That seems to do the least violence to the filesystem -- changes a single file, and if Apple ever figures out the problem and distributes an update with a new and fixed /usr/libexec/cups/backend/lpd, then it will just seamlessly go back to a standard OS X install.