Wednesday, August 02, 2006

spoolsv.exe

Simplicity is prerequisite for reliability.
--- EDSGER WYBE DIJKSTRA, How do we tell truths that might hurt? (1975)


Dr.
Jeffrey Jaffe (CTO for Novell) says in his blog:
"True, Windows is far from perfect. It is not comfortable to “ctrl-alt-del” every time my printer driver gets confused and hangs the system."

Why does printer driver get confused? I don't know. Why does printer driver hang the system? Because Windows print spooler gets confused. What is print spooler?

Software that manages printing in the computer. When an application is requested to print a document, it quickly generates the output on disk and sends it to the print spooler, which feeds the print images to the printer at slower printing speeds. The printing is then done in the background while the user interacts with other applications in the foreground.

Why does print spooler get confused? Because printer driver gets confused ...



Windows Printing Arhitecture (WPA) is one of the major components of the Windows architecture and it is indeed quite complex (here are two articles: "Printing Architecture" and "How Network Printing Works"). Basically, print spooler is executable implemented as service (spoolsv.exe) that waits for an RPC call from the client side of the spooler (winspool.drv). Spoolsv.exe calls the print router (spollss.dll) that determines which print provider to call, based on a printer name or handle supplied with each function call, and passes the function call to the correct provider ...

What follow are the consequences of this complexity:

And here are two links to solutions:

Another story is printing via Remote Desktop(RDP), Terminal Services or Citrix:

Above are only partial solutions - radical approach is to stop Windows print spooler service and use alternative solution. One of those radical ways how not to use Windows print spooler is to replace Windows, as Novell CTO suggests, with Linux:

"... that the Linux desktop has more than arrived – it has become the better desktop."

Well, here is my way how to tame print spooler: continue to use Windows desktop, but stop print spooler service and use "doknir" (VMware virtual appliance) as print spooler replacement.

[]

1 comment:

Anonymous said...

Spoolsv.exe is one of the most poorly written and unstable pieces of software I have ever had the misfortune of repeatedly coming across. Amen.