As reported by Quy Tonthat, init has problems with inittab's that

contain only actions sysinit/wait/once. It does not clean up zombies
in that case.
This commit is contained in:
Eric Andersen 2004-04-12 19:17:13 +00:00
parent 1e6aba967c
commit 4e19fa9b64

View File

@ -1144,13 +1144,6 @@ extern int init_main(int argc, char **argv)
/* Next run anything to be run only once */ /* Next run anything to be run only once */
run_actions(ONCE); run_actions(ONCE);
/* If there is nothing else to do, stop */
if (init_action_list == NULL) {
message(LOG | CONSOLE,
"No more tasks for init -- sleeping forever.");
loop_forever();
}
/* Redefine SIGHUP to reread /etc/inittab */ /* Redefine SIGHUP to reread /etc/inittab */
signal(SIGHUP, reload_signal); signal(SIGHUP, reload_signal);
@ -1167,7 +1160,7 @@ extern int init_main(int argc, char **argv)
/* Wait for a child process to exit */ /* Wait for a child process to exit */
wpid = wait(&status); wpid = wait(&status);
while (wpid > 0) { while (init_action_list && wpid > 0) {
/* Find out who died and clean up their corpse */ /* Find out who died and clean up their corpse */
for (a = init_action_list; a; a = a->next) { for (a = init_action_list; a; a = a->next) {
if (a->pid == wpid) { if (a->pid == wpid) {