Q: How do I prevent lpd spawning many children that become zombies? The memory used is unrecoverable.
At boot time, lpd can be found spawning children again and again, for no obvious reason. These children become zombies and then go away. All the while, the available memory (256 MB total) is used but not returned as these processes die. At some point (different every time), the spawning stops, leaving little memory for other processes. Swap space should never be needed, but is used due to the memory not being returned to the heap.
The system has about 40 users and about 20 serial printers. No users are logged in, when this happens. We've checked the /etc/printcap file, and have found no errors. However, we are sometimes able to stop the spawning by changing printcap, even just in the comment section, and writing it out to disk. That has caused the spawning to halt. We've also shortened the printcap file, and found that that makes a difference. We've used different sections of the file. However, when all entries needed for business are uncommented at the same time, the spawning goes crazy (at boot).
We've looked at the lpd code and so far have come up enpty, checked FAQs, and read documentation.
BTW, we're using Cyclades Y cards for the serial printers and async access. We did have to fall back to an earlier version of their driver, as there were serial printing problems with the latest (at least what was the latest around November '97).
A: The problem is likely in your printcap file. I suspect it is incorrectly configured for the Cyclades cards. The lpd is not connecting with it right, and so keeps spawning more process.