Author: hawk Date: Fri Sep 2 11:19:57 2005 GMT Module: SOURCES Tag: HEAD ---- Log message: - replaced with vfork-sigchld.patch from Fedora, fixes SEGV when closing pipe to sendmail on some configurations
---- Files affected: SOURCES: vixie-cron-sigchld2.patch (1.2 -> 1.3) ---- Diffs: ================================================================ Index: SOURCES/vixie-cron-sigchld2.patch diff -u SOURCES/vixie-cron-sigchld2.patch:1.2 SOURCES/vixie-cron-sigchld2.patch:1.3 --- SOURCES/vixie-cron-sigchld2.patch:1.2 Mon Jul 25 12:38:32 2005 +++ SOURCES/vixie-cron-sigchld2.patch Fri Sep 2 13:19:51 2005 @@ -1,18 +1,44 @@ -diff -uNr vixie-cron-4.1.p6/do_command.c vixie-cron-4.1.p7/do_command.c ---- vixie-cron-4.1.p6/do_command.c 2005-07-24 21:57:56.000000000 +0200 -+++ vixie-cron-4.1.p7/do_command.c 2005-07-25 00:10:45.000000000 +0200 -@@ -265,6 +265,14 @@ - _exit(OK_EXIT); - } - # endif /*DEBUGGING*/ -+#ifdef USE_SIGCHLD -+ /* Our grandparent is watching for our parent's death by -+ * catching SIGCHLD. Meanwhile, our parent will use wait -+ * explicitly and so has disabled SIGCHLD. So now it's -+ * time to reset SIGCHLD handling. -+ */ -+ (void) signal(SIGCHLD, SIG_DFL); -+#endif /*USE_SIGCHLD*/ - execle(shell, shell, "-c", e->cmd, (char *)0, e->envp); - fprintf(stderr, "execl: couldn't exec `%s'\n", shell); - perror("execl"); +--- vixie-cron-4.1-rh/do_command.c.vfork_sigchld 2004-07-21 18:40:22.000000000 -0400 ++++ vixie-cron-4.1-rh/do_command.c 2004-07-21 18:19:04.000000000 -0400 +@@ -136,13 +136,13 @@ + + /* fork again, this time so we can exec the user's command. + */ +- switch (vfork()) { ++ switch (fork()) { + case -1: +- log_it("CRON", getpid(), "error", "can't vfork"); ++ log_it("CRON", getpid(), "error", "can't fork"); + exit(ERROR_EXIT); + /*NOTREACHED*/ + case 0: +- Debug(DPROC, ("[%ld] grandchild process vfork()'ed\n", ++ Debug(DPROC, ("[%ld] grandchild process fork()'ed\n", + (long)getpid())) + + /* write a log message. we've waited this long to do it +@@ -187,6 +187,13 @@ + } + dup2(STDOUT, STDERR); + ++ /* Our grandparent is watching for our parent's death by ++ * catching SIGCHLD. Meanwhile, our parent will use wait ++ * explicitly and so has disabled SIGCHLD. So now it's ++ * time to reset SIGCHLD handling. ++ */ ++ (void) signal(SIGCHLD, SIG_DFL); ++ + /* set our directory, uid and gid. Set gid first, since once + * we set uid, we've lost root privledges. + */ +--- vixie-cron-4.1-rh/popen.c.vfork_sigchld 2004-07-21 10:16:43.000000000 -0400 ++++ vixie-cron-4.1-rh/popen.c 2004-07-21 18:08:08.000000000 -0400 +@@ -84,7 +84,7 @@ + break; + argv[MAX_ARGV-1] = NULL; + +- switch (pid = vfork()) { ++ switch (pid = fork()) { + case -1: /* error */ + (void)close(pdes[0]); + (void)close(pdes[1]); ================================================================ ---- CVS-web: http://cvs.pld-linux.org/SOURCES/vixie-cron-sigchld2.patch?r1=1.2&r2=1.3&f=u _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit