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>