Summary: | sh does not reap killed background processes until terminal activity, creating zombies | ||
---|---|---|---|
Product: | Base System | Reporter: | Mahmoud Al-Qudsi <mqudsi> |
Component: | bin | Assignee: | freebsd-bugs (Nobody) <bugs> |
Status: | New --- | ||
Severity: | Affects Many People | CC: | emaste, jilles, mqudsi |
Priority: | --- | ||
Version: | CURRENT | ||
Hardware: | Any | ||
OS: | Any |
Description
Mahmoud Al-Qudsi
2018-06-03 20:13:24 UTC
If this is to be fixed, waitpid() alone does not suffice, since it does not let you wait for either terminal input or a process termination. It is necessary to have a SIGCHLD signal handler (either directly or via pselect(2)). Due to limitations in libedit's API, the signal handler could not do much more than reap the zombie and register this in the struct job. This does not help much except system administrators that insist on zombies being reaped quickly. Things like a proper 'set -b' (notify about job state at any time) would require some way to execute a handler function in a defined environment and to redraw the pending input. |