[bitbake-devel] [1.32][PATCH] bitbake-worker child process create group before registering SIGTERM handler
akuster
akuster at mvista.com
Wed Nov 6 22:00:46 UTC 2019
On 11/5/19 6:07 AM, Ivan Efimov via bitbake-devel wrote:
> The bitbake-worker child on the SIGTERM signal handling send the SIGTERM to all
> processes in it's process group. In cases when the bitbake-worker child got
> SIGTERM after registering own SIGTERM handler and before the os.setsid() call
> it can send SIGTERM to unwanted processes.
>
> In the worst case during SIGTERM processing the bitbake-worker child can be in
> the group of the process that started BitBake itself. As a result it can kill
> processes that not related to BitBake at all.
>
> Signed-off-by: Ivan Efimov <i.efimov at inango-systems.com>
I see master and 1.32 have patches. To confirm, 1.44, 140.1.38, 1.36,...
need this too?
- Armin
> ---
> bin/bitbake-worker | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/bin/bitbake-worker b/bin/bitbake-worker
> index db3c4b18..6a12a31c 100755
> --- a/bin/bitbake-worker
> +++ b/bin/bitbake-worker
> @@ -189,9 +189,6 @@ def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, append
> global worker_pipe_lock
> pipein.close()
>
> - signal.signal(signal.SIGTERM, sigterm_handler)
> - # Let SIGHUP exit as SIGTERM
> - signal.signal(signal.SIGHUP, sigterm_handler)
> bb.utils.signal_on_parent_exit("SIGTERM")
>
> # Save out the PID so that the event can include it the
> @@ -206,6 +203,11 @@ def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, append
> # This ensures signals sent to the controlling terminal like Ctrl+C
> # don't stop the child processes.
> os.setsid()
> +
> + signal.signal(signal.SIGTERM, sigterm_handler)
> + # Let SIGHUP exit as SIGTERM
> + signal.signal(signal.SIGHUP, sigterm_handler)
> +
> # No stdin
> newsi = os.open(os.devnull, os.O_RDWR)
> os.dup2(newsi, sys.stdin.fileno())
More information about the bitbake-devel
mailing list