diff -up cups-1.4.2/CHANGES-1.4.txt.str3399 cups-1.4.2/CHANGES-1.4.txt diff -up cups-1.4.2/scheduler/process.c.str3399 cups-1.4.2/scheduler/process.c --- cups-1.4.2/scheduler/process.c.str3399 2009-05-16 04:04:48.000000000 +0100 +++ cups-1.4.2/scheduler/process.c 2009-11-16 17:15:26.104542409 +0000 @@ -505,6 +505,7 @@ cupsdStartProcess( #ifdef HAVE_SIGSET sigset(SIGTERM, SIG_DFL); sigset(SIGCHLD, SIG_DFL); + sigset(SIGPIPE, SIG_DFL); #elif defined(HAVE_SIGACTION) memset(&action, 0, sizeof(action)); @@ -513,9 +514,11 @@ cupsdStartProcess( sigaction(SIGTERM, &action, NULL); sigaction(SIGCHLD, &action, NULL); + sigaction(SIGPIPE, &action, NULL); #else signal(SIGTERM, SIG_DFL); signal(SIGCHLD, SIG_DFL); + signal(SIGPIPE, SIG_DFL); #endif /* HAVE_SIGSET */ cupsdReleaseSignals(); --- cups-1.4.2/scheduler/main.c.str3399 2010-03-02 11:04:28.968100478 +0000 +++ cups-1.4.2/scheduler/main.c 2010-03-02 11:04:47.442226409 +0000 @@ -1733,7 +1733,7 @@ process_children(void) job->backend = -pid; if (status && status != SIGTERM && status != SIGKILL && - job->status >= 0) + status != SIGPIPE && job->status >= 0) { /* * An error occurred; save the exit status so we know to stop @@ -1829,6 +1829,12 @@ process_children(void) "PID %d (%s) was terminated normally with signal %d.", pid, name, status); } + else if (status == SIGPIPE) + { + cupsdLogMessage(CUPSD_LOG_DEBUG, + "PID %d (%s) did not catch or ignore signal %d.", + pid, name, status); + } else if (status) { if (WIFEXITED(status))