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:
parent
1e6aba967c
commit
4e19fa9b64
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user