After running with my patch for a while, I saw the same behavior - cupsd
running at 100% CPU. In our environment, we're running only clients, so
the inability to bind port 631 wasn't immediately a problem. So, it
looks like my "quick fix" is a bust.
My next thought is that this might actually be a CUPS problem. I looked through
the source code a bit and in scheduler/dirsvc.c, the poller is spawned with:
if (cupsdStartProcess(polld, argv, envp, -1, -1, statusfds[1], -1,
0, &(pollp->pid)) < 0)
And the actual cupsdStartProcess function in scheduler/process.c takes these
arguments:
cupsdStartProcess(
const char *command, /* I - Full path to command */
char *argv[], /* I - Command-line arguments */
char *envp[], /* I - Environment */
int infd, /* I - Standard input file descriptor */
int outfd, /* I - Standard output file descriptor
*/
int errfd, /* I - Standard error file descriptor */
int backfd, /* I - Backchannel file descriptor */
int root, /* I - Run as root? */
int *pid) /* O - Process ID */
This would seem to indicate that the polld process shouldn't be spawned
as root (argument 8 = 0 ), but it is. I'm not much of a C programmer, so
I could be completely off-base here, but this seems to be at least close
to the problem. I may post this to the CUPS list and see if anyone knows
anything about it.
--
multiple cups-polld running simultaneously
https://launchpad.net/bugs/67680
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs