Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Oct 1999 17:40:56 -0500 (CDT)
From:      Jacques Vidrine <n@nectar.com>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/14356: vinum and ``some processes would not die; ps axl advised'' at shutdown
Message-ID:  <199910152240.RAA00744@bone.nectar.com>

next in thread | raw e-mail | index | archive | help

>Number:         14356
>Category:       kern
>Synopsis:       vinum and ``some processes would not die; ps axl advised'' at shutdown
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Oct 15 22:50:05 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator:     Jacques Vidrine
>Release:        FreeBSD 3.3-STABLE i386
>Organization:
Discordian
>Environment:

	FreeBSD 3.3-STABLE i386

>Description:

	At system shutdown, init(8) sends signals to all child processes
	over a period of 20 seconds.  If any of these process fail to
        exit, it displays a warning message ``some processes would not 
	die; ps axl advised'' so that the system administrator can try
	to determine what has wedged.

	The vinum(4) daemon process is a child of init, but will never
	exit. It ignore all signals.  Therefore, if the system is
	utlizing vinum, init will always display its diagnostic at
	system shutdown time.  This is both annoying and potentially
	damaging (most system administrators would probably take to
	ignoring the diagnostic even when a real problem might exist).

>How-To-Repeat:

	# vinum start
	# shutdown now

>Fix:
	
	When the vinum daemon starts, it should orphan itself so that
	init doesn't wait for it at system shutdown time.

	Also, I think that the vinum daemon process should be marked
	with the P_SYSTEM process flag (no signals, no swapping).

	The following patch applies to -STABLE, and probably to
	-CURRENT as well.  I've tested it only on -STABLE, and it
	behaves as expected.

--- src/sys/kern/kern_exit.c	1999/08/29 16:25:59	1.71.2.4
+++ src/sys/kern/kern_exit.c	1999/10/15 22:16:53
@@ -562,7 +569,8 @@
 		return;
 
 	LIST_REMOVE(child, p_sibling);
-	LIST_INSERT_HEAD(&parent->p_children, child, p_sibling);
+	if (parent != NULL)
+	    LIST_INSERT_HEAD(&parent->p_children, child, p_sibling);
 	child->p_pptr = parent;
 }
 
--- src/sys/dev/vinum/vinumdaemon.c	1999/08/29 16:24:15	1.1.2.6
+++ src/sys/dev/vinum/vinumdaemon.c	1999/10/15 22:23:29
@@ -74,6 +74,8 @@
 		log(LOG_INFO, "vinumd: abdicating\n");
 	    return;
 	}
+	proc_reparent(curproc, NULL);
+	curproc->p_flag |= P_SYSTEM;
 	while (daemonq != NULL) {			    /* we have work to do, */
 	    s = splhigh();				    /* don't get interrupted here */
 	    request = daemonq;				    /* get the request */


>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199910152240.RAA00744>