CAN'T kill -1 OR kill -15 DAEMONS STARTED IN /etc/rc
authorPaul Kranenburg <pk@cs.few.eur.nl>
Fri, 4 Sep 1992 00:00:00 +0000 (00:00 +0000)
committerPaul Kranenburg <pk@cs.few.eur.nl>
Fri, 4 Sep 1992 00:00:00 +0000 (00:00 +0000)
        The init program doesn't set up the proper signal disposition for
the process (sh) it creates to run /etc/rc.  While all signal handlers are
reset to SIG_DFL, the signal mask is left unchanged causing SIGHUP and
SIGTERM to be masked in all daemons started from /etc/rc.

AUTHOR:         Paul Kranenburg (pk@cs.few.eur.nl)
386BSD-Patchkit: patch00014

usr/src/sbin/init/init.c

index f510c75..e7bf076 100644 (file)
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
+ *
+ * PATCHES MAGIC                LEVEL   PATCH THAT GOT US HERE
+ * --------------------         -----   ----------------------
+ * CURRENT PATCH LEVEL:         1       00014
+ * --------------------         -----   ----------------------
+ *
+ * 04 Sep 92   Paul Kranenburg         Fixed kill -1 and kill -15 for
+ *                                     daemons started from /etc/rc.
  */
 
 
  */
 
 
@@ -80,7 +88,8 @@ extern int errno;
        signal(SIGHUP, SIG_DFL); signal(SIGINT, SIG_DFL); \
        signal(SIGTERM, SIG_DFL); signal(SIGALRM, SIG_DFL); \
        signal(SIGTSTP, SIG_DFL); signal(SIGCHLD, SIG_DFL); \
        signal(SIGHUP, SIG_DFL); signal(SIGINT, SIG_DFL); \
        signal(SIGTERM, SIG_DFL); signal(SIGALRM, SIG_DFL); \
        signal(SIGTSTP, SIG_DFL); signal(SIGCHLD, SIG_DFL); \
-       signal(SIGTTIN, SIG_DFL); signal(SIGTTOU, SIG_DFL);
+       signal(SIGTTIN, SIG_DFL); signal(SIGTTOU, SIG_DFL); \
+       sigsetmask( 0);                         /* 04 Sep 92*/
 
 /* SIGHUP: reread /etc/ttys */
 void
 
 /* SIGHUP: reread /etc/ttys */
 void
@@ -396,7 +405,7 @@ char *s;
        login_tty(open("/dev/console", 2));
        writes(2, "init FATAL error: ");
        perror(s);
        login_tty(open("/dev/console", 2));
        writes(2, "init FATAL error: ");
        perror(s);
-       exit(1);
+       _exit(1);                               /* 04 Sep 92*/
        /* panic: init died */
 }
 
        /* panic: init died */
 }